摘要:是什么是的縮寫,是一種用戶數(shù)據(jù)報協(xié)議,又稱為用戶數(shù)據(jù)報文協(xié)議。協(xié)議所需資源多,首部需個字節(jié)不算可選項,首部字段只需個字節(jié)。協(xié)議沒有數(shù)據(jù)邊界,有。因此容易發(fā)生粘包的現(xiàn)象。采用協(xié)議,通過服務器中轉方式。
UDP是什么?
UDP是User Datagram Protocol的縮寫,是一種用戶數(shù)據(jù)報協(xié)議,又稱為用戶數(shù)據(jù)報文協(xié)議。區(qū)別于TCP是面向連接的協(xié)議,UDP是一個簡單的面向數(shù)據(jù)報的傳輸層協(xié)議,UDP的發(fā)起和接受是不需要經(jīng)過連接的,僅僅只需要發(fā)送在對應端口上進行監(jiān)聽接受即可,不需要兩個客戶端一定是連接的
由于UDP的速度快,所以適合于在線視頻媒體,電話視頻聊天,電視廣播,多人在線游戲這些項目
UDP傳輸不可靠的原因有五點:
TCP協(xié)議和UDP協(xié)議的區(qū)別是什么?
1.TCP協(xié)議是有連接的,有連接的意思是開始傳輸實際數(shù)據(jù)之前TCP的客戶端和服務器端必須通過三次握手建立連接,會話結束之后也要結束連接。而UDP是無連接的
2.TCP協(xié)議保證數(shù)據(jù)按序發(fā)送,按序到達,提供超時重傳來保證可靠性,但是UDP不保證按序到達,甚至不保證到達,只是努力交付,即便是按序發(fā)送的序列,也不保證按序送到。
3.TCP協(xié)議所需資源多,TCP首部需20個字節(jié)(不算可選項),UDP首部字段只需8個字節(jié)。
4.TCP有流量控制和擁塞控制,UDP沒有,網(wǎng)絡擁堵不會影響發(fā)送端的發(fā)送速率
5.TCP是一對一的連接,而UDP則可以支持一對一,多對多,一對多的通信。
6.TCP面向的是字節(jié)流的服務,UDP面向的是報文的服務。
7.TCP協(xié)議沒有數(shù)據(jù)邊界,UDP有。因此TCP容易發(fā)生粘包的現(xiàn)象。在UDP中數(shù)據(jù)包是多帶帶發(fā)送的,只有當他們到達時才會再次集成,包有明確的界限來判斷哪些包已經(jīng)收到。
例子:
QQ客戶端之間的消息傳送也采用了UDP模式,因為國內的網(wǎng)絡環(huán)境非常復雜,而且很多用戶采用的方式是通過代理服務器共享一條線路上網(wǎng)的方式,在這些復雜的情況下,客戶端之間能彼此建立起來TCP連接的概率較小,嚴重影響傳送信息的效率。
采用UDP協(xié)議,通過服務器中轉方式。大家都知道,UDP協(xié)議是不可靠協(xié)議,它只管發(fā)送,不管對方是否收到的,但它的傳輸很高效。但是,作為聊天軟件,怎么可以采用這樣的不可靠方式來傳輸消息呢?于是,騰訊采用了上層協(xié)議來保證可靠傳輸:如果客戶端使用UDP協(xié)議發(fā)出消息后,服務器收到該包,需要使用UDP協(xié)議發(fā)回一個應答包。如此來保證消息可以無遺漏傳輸。之所以會發(fā)生在客戶端明明看到“消息發(fā)送失敗”但對方又收到了這個消息的情況,就是因為客戶端發(fā)出的消息服務器已經(jīng)收到并轉發(fā)成功,但客戶端由于網(wǎng)絡原因沒有收到服務器的應答包引起的。
之所以當時應用UDP,最本質上UDP的優(yōu)勢還是帶寬的利用。這一切要回歸到99~03年的網(wǎng)絡狀況,當時網(wǎng)絡的特點就是接入帶寬很窄而且抖動特別厲害。所謂抖動可能是多方面的,例如延時突發(fā)性地暴增、也有可能是由于路由層面的變化突然導致路由黑洞,還各種等等等等的問題。TCP因為擁塞控制、保證有序等原因,在這種網(wǎng)絡狀態(tài)上對帶寬的利用是非常低的。而且因為網(wǎng)絡抖動的原因,應用層心跳超時,應用層主動斷掉socket之后TCP需要三次握手才能重新建立鏈接,一旦出現(xiàn)頻繁的小抖動就會使得帶寬利用更低。而等待四次揮手的時間,也會占用服務器上寶貴的資源。
總結來說,當網(wǎng)絡差到一定程度了,TCP的優(yōu)勢反而會成為劣勢。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/126104.html
摘要:由于本身發(fā)送的就是一份一份的數(shù)據(jù)報,所以自然而然的就有一個上限的大小。并且由于本身的不可靠性以及無序性,如果發(fā)送了這三個數(shù)據(jù)報過來,端接收到的可能是任意順序任意個數(shù)三個數(shù)據(jù)報的排列組合。 前言 最頭疼的問題莫過于到底該選TCP還是UDP作為傳輸層協(xié)議。通過快速對比分析 TCP 和 UDP 的區(qū)別,來幫助即時通訊初學者快速了解這些基礎的知識點,從而在IM、消息推送等網(wǎng)絡通信應用場景中能準...
摘要:前端主要關注于應用層的協(xié)議,傳輸層的協(xié)議斷舍離一下,就主要總結這兩種協(xié)議了。是序號,是確認序號。根據(jù)服務端發(fā)來的返回一個包給服務端。服務端接收后進入狀態(tài)。并在兩端維護了索引表,用于記錄出現(xiàn)過的,避免重復傳輸。 前端主要關注于應用層的 HTTP 協(xié)議,傳輸層的 TCP 協(xié)議,斷舍離一下,就主要總結這兩種協(xié)議了。 OSI 參考模型 與 TCP/IP 五層模型 showImg(https:/...
摘要:這時候超過定時器設定的時間就會再次發(fā)送丟包的數(shù)據(jù)直到對端響應,所以需要每次都備份發(fā)送的數(shù)據(jù)。 UDP 面向報文 UDP 是一個面向報文(報文可以理解為一段段的數(shù)據(jù))的協(xié)議。意思就是 UDP 只是報文的搬運工,不會對報文進行任何拆分和拼接操作。 具體來說 在發(fā)送端,應用層將數(shù)據(jù)傳遞給傳輸層的 UDP 協(xié)議,UDP 只會給數(shù)據(jù)增加一個 UDP 頭標識下是 UDP 協(xié)議,然后就傳遞給網(wǎng)絡層...
閱讀 3538·2023-04-25 20:09
閱讀 3739·2022-06-28 19:00
閱讀 3060·2022-06-28 19:00
閱讀 3081·2022-06-28 19:00
閱讀 3175·2022-06-28 19:00
閱讀 2880·2022-06-28 19:00
閱讀 3047·2022-06-28 19:00
閱讀 2638·2022-06-28 19:00