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