秋招Day12 - 計算機網絡 - UDP

說說TCP和UDP的區別?

TCP使用無邊界的字節流傳輸,可能發生拆包和粘包,接收方并不知道數據邊界;UDP采用數據報傳輸,數據報之間相互獨立,有邊界

應用場景方面,TCP適合對數據的可靠性要求高于速率要求的場景,比如郵件傳輸文件傳輸網頁瀏覽。UDP適合對速率要求高、可以容忍一定數據丟失的場景,比如即時聊天在線視頻語音電話

你會如何設計QQ中的網絡協議?

首先是登陸功能,由于需要準確性和數據加密,所以采用TCP + SSL/TSL協議來進行登陸。

登陸之后的即時聊天/語音視頻通話功能,由于實時性要求高,所以采用UDP協議。

如何保證消息的不丟失?

對于TCP協議來說,如果發生消息丟失,則會嘗試進行重傳(RTO超時重傳/快速重傳

對于UDP協議,可以通過應用層的重傳機制來保證消息不丟失。當接收方的應用層收到消息后,發送一個確認信息給發送方,如果發送方沒有收到確認信息,則重傳。同時,每個消息都有一個序列號,接收方通過序列號來判斷消息是否丟失,如果發現序列號不連續,就要求發送方重新發送,這樣還可以避免消息重復。

消息持久化也很重要,可以將消息保存在服務器或者本地數據庫中,即時網絡斷連,也能從數據庫中恢復消息。

為什么QQ采用UDP協議?

  • QQ并不是全部采用UDP協議,比如文件傳送采用的是TCP保證可靠性。
  • 使用UDP傳輸信息的好處是延遲較低,對于數據丟失的處理比較簡單。TCP是一個全雙工的協議,需要建立連接,網絡開銷較大
  • 如果使用QQ語音或者視頻通話,UDP的優勢更能顯現,首先延遲較小,其次是偶爾的丟包不需要重傳,因為用戶可以接受偶爾的卡頓和畫面模糊,但是如果頻繁出現幾秒前的畫面和聲音,幾乎是不可接受的。
  • QQ的服務器設計容量是海量級的,一臺服務器要容納幾十萬的并發連接,因此服務器只有采用UDP與客戶端通信才能保證如此大規模的服務,服務器壓力小。

UDP協議為什么不可靠?

  • 不保證消息交付:無確認、無重傳、無超時
  • 不保證交付順序:無序號、不重排、無隊首阻塞(TCP需要等待丟失的數據重傳才能把數據交付到應用層)
  • 不跟蹤連接狀態
  • 不進行擁塞控制

DNS為什么要用UDP?

DNS既使用TCP又使用UDP。

使用TCP的情況是區域傳送,也就是DNS服務器之間同步域名解析數據時。因為數據同步所要傳輸的數量大于普通的請求和響應,而TCP能夠傳輸更大的報文長度,而且為了保證數據的正確性,所以使用TCP。

客戶端向DNS服務器請求域名解析的時候使用UDP,服務器返回的內容不會超過UDP的最大允許長度,并且不需要建立連接,大大提升的響應速度,但這要求客戶端自己有超時處理/請求重傳/重試機制來保證響應數據的可靠性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907909.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907909.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907909.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【QQ音樂】sign簽名| data參數加密 | AES-GCM加密 | webpack (下)

1.目標 網址&#xff1a;https://y.qq.com/n/ryqq/toplist/26 我們知道了 sign P(n.data)&#xff0c;其中n.data是明文的請求參數 2.webpack生成data加密參數 那么 L(n.data)就是密文的請求參數。返回一個Promise {<pending>}&#xff0c;所以L(n.data) 是一個異步函數…

Codeforces Round 1028 (Div. 2)(A-D)

題面鏈接&#xff1a;Dashboard - Codeforces Round 1028 (Div. 2) - Codeforces A. Gellyfish and Tricolor Pansy 思路 要知道騎士如果沒了那么這個人就失去了攻擊手段&#xff0c;貪心的來說我們只需要攻擊血量少的即可&#xff0c;那么取min比較一下即可 代碼 void so…

【存儲基礎】存儲設備和服務器的關系和區別

文章目錄 1. 存儲設備和服務器的區別2. 客戶端訪問數據路徑場景1&#xff1a;經過服務器處理場景2&#xff1a;客戶端直連 3. 服務器作為"中轉站"的作用 剛開始接觸存儲的時候&#xff0c;以為數據都是存放在服務器上的&#xff0c;服務器和存儲設備是一個東西&#…

macOS 安裝 Grafana + Prometheus + Node Exporter

macOS 安裝指南&#xff1a;Grafana Prometheus Node Exporter 目錄簡介&#x1f680; 快速開始 安裝 Homebrew1. 安裝 Homebrew2. 更新 Homebrew 安裝 Node Exporter使用 Homebrew 安裝驗證 Node Exporter 安裝 Prometheus使用 Homebrew 安裝驗證安裝 安裝 Grafana使用 Home…

不可變集合類型轉換異常

記錄一個異常&#xff1a;class java.util.ImmutableCollections$ListN cannot be cast to class java.util.ArrayList (java.util.ImmutableCollections$ListN and java.util.ArrayList 文章目錄 1、原因2、解決方式一3、解決方式二4、關于不可變集合的補充4.1 JDK8和9的對比4…

【DAY37】早停策略和模型權重的保存

內容來自浙大疏錦行python打卡訓練營 浙大疏錦行 知識點&#xff1a; 過擬合的判斷&#xff1a;測試集和訓練集同步打印指標模型的保存和加載 僅保存權重保存權重和模型保存全部信息checkpoint&#xff0c;還包含訓練狀態 早停策略 作業&#xff1a; 對信貸數據集訓練后保存權…

【Zephyr 系列 3】多線程與調度機制:讓你的 MCU 同時干多件事

好的,下面是Zephyr 系列第 3 篇:聚焦 多線程與調度機制的實踐應用,繼續面向你這樣的 Ubuntu + 真板實戰開發者,代碼清晰、講解通俗、結構規范,符合 CSDN 高質量博客標準。 ??關鍵詞:Zephyr、線程調度、k_thread、k_sleep、RTOS、BluePill ??適合人群:想從裸機開發進…

實現RabbitMQ多節點集群搭建

目錄 引言 一、環境準備 二、利用虛擬機搭建 ? 三、鏡像集群配置 四、HAProxy實現負載均衡(主用虛擬機操作) 五、測試RabbitMQ集群搭建情況 引言 在現代分布式系統中&#xff0c;消息隊列&#xff08;Message Queue&#xff09;扮演著至關重要的角色,而 RabbitMQ 作為…

異步上傳石墨文件進度條前端展示記錄(采用Redis中String數據結構實現-蘇東坡版本)

昔者&#xff0c;有客臨門&#xff0c;亟需自石墨文庫中擷取卷帙若干。此等文冊&#xff0c;非止一卷&#xff0c;乃累牘連篇&#xff0c;亟需批量轉置。然吾輩慮及用戶體驗&#xff0c;當效東坡"腹有詩書氣自華"之雅意&#xff0c;使操作如行云流水&#xff0c;遂定…

Axure 基礎入門

目錄 認識產品經理 項目團隊* 基本概述 認識產品經理 A公司產品經理 B公司產品經理 C公司產品經理 D公司產品經理 產品經理工作范圍 產品經理工作流程* 產品經理的職責 產品經理的分類 產品經理能力要求 產品工具 產品體驗報告 原型設計介紹 原型設計概述 為…

零基礎學習計算機網絡編程----socket實現UDP協議

本章將會詳細的介紹如何使用 socket 實現 UDP 協議的傳送數據。有了前面基礎知識的鋪墊。對于本章的理解將會變得簡單。將會從基礎的 Serve 的初始化&#xff0c;進階到 Client 的初始化&#xff0c;以及 run。最后實現一個簡陋的小型的網絡聊天室。 目錄 1.UdpSever.h 1.1 構造…

普中STM32F103ZET6開發攻略(二)

接上文&#xff1a;普中STM32F103ZET6開發攻略&#xff08;一&#xff09;-CSDN博客 各位看官老爺們&#xff0c;點擊關注不迷路喲。你的點贊、收藏&#xff0c;一鍵三連&#xff0c;是我持續更新的動力喲&#xff01;&#xff01;&#xff01; 目錄 接上文&#xff1a;普中…

用提示詞寫程序(3),VSCODE+Claude3.5+deepseek開發edge擴展插件V2

edge擴展插件;篩選書簽,跳轉搜索,設置背景 鏈接: https://pan.baidu.com/s/1nfnwQXCkePRnRh5ltFyfag?pwd86se 提取碼: 86se 導入解壓的擴展文件夾: 導入擴展成功: edge擴展插件;篩選書簽,跳轉搜索,設置背景

電腦桌面便簽軟件哪個好?桌面好用便簽備忘錄推薦

在日常辦公中&#xff0c;一款優秀的桌面便簽工具能顯著提升工作效率。面對市面上琳瑯滿目的選擇&#xff0c;不少用戶都難以抉擇。如果你正在尋找一款兼具輕量化與多功能性的便簽軟件&#xff0c;那么集實用性與便捷性于一身的"好用便簽"&#xff0c;或許就是你的理…

性能優化 - 工具篇:基準測試 JMH

文章目錄 Pre引言1. JMH 簡介2. JMH 執行流程詳解3. 關鍵注解詳解3.1 Warmup3.2 Measurement3.3 BenchmarkMode3.4 OutputTimeUnit3.5 Fork3.6 Threads3.7 Group 與 GroupThreads3.8 State3.9 Setup 與 TearDown3.10 Param3.11 CompilerControl 4. 示例代碼與分析4.1 關鍵點解讀…

2025年十大AI幻燈片工具深度評測與推薦

我來告訴你一個好消息。 我們已經親自測試和對比了市面上最優秀的AI幻燈片工具&#xff0c;讓你無需再為選擇而煩惱。 得益于AI技術的飛速發展&#xff0c;如今你可以快速制作出美觀、專業的幻燈片。 這些智能平臺的功能遠不止于配色美化——它們能幫你頭腦風暴、梳理思路、…

雪花算法:分布式ID生成的優雅解決方案

一、雪花算法的核心機制與設計思想 雪花算法&#xff08;Snowflake&#xff09;是由Twitter開源的分布式ID生成算法&#xff0c;它通過巧妙的位運算設計&#xff0c;能夠在分布式系統中快速生成全局唯一且趨勢遞增的ID。 1. 基本結構 雪花算法生成的是一個64位&#xff08;lo…

第1章:走進Golang

第1章&#xff1a;走進Golang 一、Golang簡介 Go語言&#xff08;又稱Golang&#xff09;是由Google的Robert Griesemer、Rob Pike及Ken Thompson開發的一種開源編程語言。它誕生于2007年&#xff0c;2009年11月正式開源。Go語言的設計初衷是為了在不損失應用程序性能的情況下…

Higress項目解析(二):Proxy-Wasm Go SDK

3、Proxy-Wasm Go SDK Proxy-Wasm Go SDK 依賴于 tinygo&#xff0c;同時 Proxy - Wasm Go SDK 是基于 Proxy-Wasm ABI 規范使用 Go 編程語言擴展網絡代理&#xff08;例如 Envoy&#xff09;的 SDK&#xff0c;而 Proxy-Wasm ABI 定義了網絡代理和在網絡代理內部運行的 Wasm …

NVMe IP現狀掃盲

SSD優勢 與機械硬盤&#xff08;Hard Disk Driver, HDD&#xff09;相比&#xff0c;基于Flash的SSD具有更快的數據隨機訪問速度、更快的傳輸速率和更低的功耗優勢&#xff0c;已經被廣泛應用于各種計算領域和存儲系統。SSD最初遵循為HDD設計的現有主機接口協議&#xff0c;例…