一、UDP
UDP(User Datagram Protocol),用戶數(shù)據(jù)包協(xié)議,是一個簡單的面向數(shù)據(jù)報的通信協(xié)議,即對應用層交下來的報文,不合并,不拆分,只是在其上面加上首部后就交給了下面的網(wǎng)絡層
也就是說無論應用層交給UDP
多長的報文,它統(tǒng)統(tǒng)發(fā)送,一次發(fā)送一個報文
而對接收方,接到后直接去除首部,交給上面的應用層就完成任務
UDP
報頭包括4個字段,每個字段占用2個字節(jié)(即16個二進制位),標題短,開銷小
特點如下:
- UDP 不提供復雜的控制機制,利用 IP 提供面向無連接的通信服務
- 傳輸途中出現(xiàn)丟包,UDP 也不負責重發(fā)
- 當包的到達順序出現(xiàn)亂序時,UDP沒有糾正的功能。
- 并且它是將應用程序發(fā)來的數(shù)據(jù)在收到的那一刻,立即按照原樣發(fā)送到網(wǎng)絡上的一種機制。即使是出現(xiàn)網(wǎng)絡擁堵的情況,UDP 也無法進行流量控制等避免網(wǎng)絡擁塞行為
二、TCP
TCP(Transmission Control Protocol),傳輸控制協(xié)議,是一種可靠、面向字節(jié)流的通信協(xié)議,把上面應用層交下來的數(shù)據(jù)看成無結構的字節(jié)流來發(fā)送
可以想象成流水形式的,發(fā)送方TCP會將數(shù)據(jù)放入“蓄水池”(緩存區(qū)),等到可以發(fā)送的時候就發(fā)送,不能發(fā)送就等著,TCP會根據(jù)當前網(wǎng)絡的擁塞狀態(tài)來確定每個報文段的大小
TCP
報文首部有20個字節(jié),額外開銷大
特點如下:
- TCP充分地實現(xiàn)了數(shù)據(jù)傳輸時各種控制功能,可以進行丟包時的重發(fā)控制,還可以對次序亂掉的分包進行順序控制。而這些在 UDP 中都沒有。
- 此外,TCP 作為一種面向有連接的協(xié)議,只有在確認通信對端存在時才會發(fā)送數(shù)據(jù),從而可以控制通信流量的浪費。
- 根據(jù) TCP 的這些機制,在 IP 這種無連接的網(wǎng)絡上也能夠實現(xiàn)高可靠性的通信( 主要通過檢驗和、序列號、確認應答、重發(fā)控制、連接管理以及窗口控制等機制實現(xiàn))
三、區(qū)別
UDP
與TCP
兩者的都位于傳輸層,如下圖所示:
?兩者區(qū)別如下表所示:
-
TCP 是面向連接的協(xié)議,建立連接3次握手、斷開連接四次揮手,UDP是面向無連接,數(shù)據(jù)傳輸前后不連接連接,發(fā)送端只負責將數(shù)據(jù)發(fā)送到網(wǎng)絡,接收端從消息隊列讀取
-
TCP 提供可靠的服務,傳輸過程采用流量控制、編號與確認、計時器等手段確保數(shù)據(jù)無差錯,不丟失。UDP 則盡可能傳遞數(shù)據(jù),但不保證傳遞交付給對方
-
TCP 面向字節(jié)流,將應用層報文看成一串無結構的字節(jié)流,分解為多個TCP報文段傳輸后,在目的站重新裝配。UDP協(xié)議面向報文,不拆分應用層報文,只保留報文邊界,一次發(fā)送一個報文,接收方去除報文首部后,原封不動將報文交給上層應用
-
TCP 只能點對點全雙工通信。UDP 支持一對一、一對多、多對一和多對多的交互通信
兩者應用場景如下圖:
文章來源:http://www.zghlxwxcb.cn/news/detail-841847.html
可以看到,TCP 應用場景適用于對效率要求低,對準確性要求高或者要求有鏈接的場景,而UDP 適用場景為對效率要求高,對準確性要求低的場景文章來源地址http://www.zghlxwxcb.cn/news/detail-841847.html
參考文獻
- https://zh.wikipedia.org
- https://www.shangmayuan.com/a/a1e3ceb218284cefb95de7fd.html
- https://segmentfault.com/a/1190000021815671
- https://vue3js.cn/interview
到了這里,關于如何理解UDP 和 TCP? 區(qū)別? 應用場景?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!