UDP协议和TCP协议
UDP協議
UDP(User Datagram Protocol):用戶報文協議
沒有任何特點
和TCP對比:不可靠、無連接、面向報文
1. 網絡的基本情況就是不可靠的
2. UDP作為一種最簡單的傳輸層協議,基本上沒有做什么的操作來幫助用戶處理復雜的網絡環境,所以UDP保留下來這種不可靠的特性。
3. UDP報文的頭信息(定長的(8字節))
4. 校驗和(checksum)的作用和工作機制
發送端:checksum(payload)=>校驗和1 (把校驗和1填寫到UDP的header 中)
接收端:checksum(payload)=>校驗和2
比較校驗和2和header 中的校驗和1:如果不等,payload在傳輸過程中一定出現差錯了;如果相等,大概率payload沒有出現出錯
針對校驗和對不上的情況,直接丟棄包: UDP不是特別可靠
5.UDP協議棧的作用
重點:我們在應用層調用send方法時send方法返回了,就意味著數據已經到達網絡中
接收到數據之后
6. UDP有接收緩沖區,沒有發送緩沖區
用戶發送多少數據,UDP也會發送多少數據,所以UDP是面向報文的
UDP發送數據無需任何準備工作,隨時隨地可以發送:寄信vs打電話,所以UDP是無連接的
7. 面向數據報文導致的一個后果:
由于底層(物理層+網絡層))都對一次發送的數據有大小限制。如果強行發送大于限制的數據,就會出現數據被截斷。
全雙工:同一個信道是雙向的。
8. UDP協議的最適用場景
對實時性要求較高,對可靠性要求較低的場景
實時聊天(語音、視頻聊天)
UDP支持廣播。如果有廣播需求,也可以考慮用UDP。
TCP協議
TCP(Transmission Control Protocol):傳輸控制協議
目標:
什么是可靠性?
TCP只能保證盡自己最大的可能,把數據有序地發送給對方。但不能保證一定能發送給對方。
TCP使用什么樣的機制,來保證可靠性——確認應答機制
編號機制:發送方為發送的數據做編號,應答的時候帶上對應編號即可。
總之:發送方沒有收到對應的應答。則認為對方沒有收到數據——超時重傳機制
TCP協議的header格式
4位header長度
那具體怎么區分本次segment是否有應答的作用呢?
ack ==1時segment有應答功能;ack == 0時segment沒有應答功能
32位確認序號:ASN(Acknowledge Sequence Number)
SN和ASN書寫規則
h: 108(隨便選的) ,e: 109 ,l: 110, l: 111, o: 112
[ hello ]
SN: 108
接收方是知道長度是5的,所以,接收方如果收到數據,則表示108 - 112已經全部收到了
上述例子中,接收方要應答的話ASN應該填寫113。隱含的意思就是113之前的所有數據,已經全部接收到了。
發送方的處理邏輯是一致的。超時之后,直接重傳即可(重傳的數據不會丟失),不需要區分情況
對于發送方,收到了一個應答segASN = x時,發送方是怎么理解這個信號的?
對方已經收到收到了x-1之前的所有數據了。
TCP協議是有接收緩沖區的,保證對方接收是有序的(接收端可以重新整理數據,接收過得數據不再接收)
如果超時之后,重傳對方仍然沒有收到,怎么辦?
繼續重傳,直到到達一個閾值(假設6次)。如果6次,我都沒有收到應答。我就認為不需要再努力的,放棄:
rst = 1,reset segment
rst = 0,不是reset segment
連接管理(Connection Message)
為什么需要連接(連接是什么抽象)?
(1)保證整理亂序到達的數據
(2)在數據暫時未被應用層讀走之前,臨時保存數據
因為要考慮重發的可能性,所以未應答的數據不能直接扔掉,所以需要一個空間暫存
例:send(‘hello’)成功,代表數據被發送到OS的TCP協議棧的發送緩沖區中
發送方時,需要維護已經發送的SN
接收方時,需要維護應該應答的SN
上述3點,足以說明:TCР協議棧,為了保證之前的那些機制可用,必須為每個信道,維護一組相關的數據! !
建立連接階段的必要性
類比:寄信+電話
TCP的建立連接,需要雙方交換幾次信息——三 次——三 次握手
[常見面試題]為什么是三次?為什么不是兩次,為什么不是四次,為什么不是其他次?
4種segment:數據segment、應答segment (ack= 1)、reset segment (rst= 1)、同步segment (syn= 1)
邏輯上對信道的抽象。物理上各自內存中維護的信道相關的一組數據。
因為TCP為了追求可靠性引入一系列機制(確認應答機制,超時重傳機制),為了這些機制能正常的工作,使得TCP必須引入連接的概念。
總結
以上是生活随笔為你收集整理的UDP协议和TCP协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学系专业课参考书
- 下一篇: 单点登录 用友nc_用友NC与OA集成解