2、TCP和UDP
簡介
- TCP(transmission Control Protocol):是一種通信標準,它使應用程序和計算設備能夠在網絡上交換消息。它的設計目的是在互聯網上發送數據包,并確保數據和信息在網絡上的成功傳遞。
- UDP(the User Datagram Protocol):是一種跨Internet的通信協議,特別用于時間敏感的傳輸,如視頻播放或DNS查找。它通過在數據傳輸之前不正式建立連接來加快通信速度。
TCP
- TCP是面向連接(虛連接)的傳輸層協議。
- 每一條TCP連接只能有兩個端點,每一條TCP連接只能是點對點的。
- TCP提供可靠交付的服務,無差錯、不丟失、不重復、按需到達。
- TCP提供全雙工通信(發送緩存,接收緩存)。
- TCP面向字節流,TCP把應用程序交下來的數據看成僅僅是一連串的無結構字節流。
報文段首部格式:
- 源端口(2B)
- 目的端口(2B)
- 序號(4B):在一個TCP連接中傳送的字節流中的每一個字節都按順序編號,本字段表示本表文段所發送的第一個字節的序號。
- 確認號(4B):期望收到對方下一個報文段的第一個數據字節的序號。若確認號為N,則證明到序號N-1位置的所有數據都已正確收到。
- 數據偏移(4bit):首部長度,TCP報文段的數據起始處距離TCP報文段的起始處有多遠,以4B為單位,即一個數值是4B。
- 控制位(6bit)
- 緊急位URG:URG=1時,表明此報文段中有緊急數據,是高優先級的數據,應盡快傳送,不用再緩存里排隊,配合緊急指針字段使用。
- 確認位ACK:ACK=1時確認號有效,在連接建立后所有傳送的報文段都必須把ACK置為1。
- 推送位PSH:PSH=1時,接收方盡快交付應用進程,不用再等到緩存存滿再向上交付。
- 復位RST:RST=1時,表明TCP連接中出現嚴重差錯,必須釋放連接,然后再重新建立傳輸鏈接。
- 同步位SYN:SYN=1時,表明是一個連接請求/連接接受報文。
- 終止位:FIN=1時,表明此報文段發送發數據已發完,要求釋放鏈接。
- 窗口(2B):指的是發送本報文段的一方的接收窗口,即現在允許對方發送的數據量。
- 檢驗和(2B):檢驗首部+數據,檢驗時要加上12B偽首部,第四個字段為6(TCP為6,UDP為17)。
- 緊急指針(2B):URG=1時才有意義,指出本報文段中緊急數據的字節數。
- 選項(可變長度):最大報文段長度MSS、窗口擴大、時間戳、選擇確認……
- 填充(保證4B的整數倍)
連接建立
TCP連接管理
TCP連接傳輸三個階段:連接建立—>數據傳送—>連接釋放
TCP連接的建立采用客戶服務器方式,主動發起連接建立的應用進程叫做客戶,而被動等待連接建立的應用進程叫服務器。
建立連接過程(三次握手)
- 客戶端發送連接請求報文段,無應用層數據。SYN=1, seq=x(隨機)
- 服務器端為該TCP連接分配緩存和變量,并向客戶端返回確認報文段,允許連接,無應用層數據。SYN=1, ACK=1, seq=y(隨機), ack=x+1
- 客戶端為該TCP連接分配緩存和變量,并向服務器端返回確認的確認,可以攜帶數據。SYN=0, ACK=1, seq=x+1, ack=y+1
連接釋放過程(四次揮手)
- 客戶端發送連接釋放報文段,停止發送數據,主動關閉TCP連接。FIN=1,seq=u
- 服務器端回送一個確認報文段,客戶到服務器這個方向的連接釋放了。ACK=1, seq=v, ack=u+1
- 服務器端發完數據,就發出連接釋放報文段,主動關閉TCP連接。FIN=1, ACK=1, seq=w, ack=u+1
- 客戶端回送一個確認報文段,在等到實踐等待計時器設置的2MSL(最長報文段壽命)后,連接徹底關閉。ACK=1, seq=u+1, ack=w+1
可靠傳輸
TCP可靠傳輸的機制:校驗;序號;確認;重傳。
- 超時重傳:TCP咋發送方在規定時間內沒收到確認就要重傳已發送的報文段。TCP采用自適應算法,動態改變重傳時間RTTs(加權平均往返時間)。
- 每當比期望序號大的失序報文段到達時,發送一個冗余ACK,指明下一個期待字節的序號。連續收到3個對于某序號小的報文段的確認,則認為其丟失,重傳報文段(快速重傳)。
流量控制
流量控制:讓發送方慢點,要讓接收方來得及接收。
TCP利用滑動窗口機制實現流量控制。
在通信過程中,接收方根據自己接收緩存的大小,動態的調整發送方的發送窗口大小,即接收窗口rwnd,發送方的發送窗口的大小=min(接收窗口rwnd, 擁塞窗口cwnd)。
TCP為每一個連接設有一個持續計時器,只要TCP連接的一方收到對方的零窗口通知,就啟動持續計時器。若持續計時器設置的時間到期,就發送一個零窗口探測報文段。接收方收到探測報文段時給出現在的窗口值。
擁塞控制
出現擁塞的條件:對資源需求的綜合>可用資源。
四種算法:慢開始、擁塞避免、快重傳、快恢復。
假定:
- 數據單方向傳遞,而另一個方向只傳送確認
- 接收方總是有足夠大的緩存空間,因而發送窗口大小取決于擁塞程度,發送窗口 = Min{接收窗口rwnd, 擁塞窗口cwnd}
UDP
UDP只在IP數據報服務之上增加了很少功能,即復用分用和差錯檢測功能。
UDP的主要特點:
- UDP是無連接的,減少開銷和發送數據之前的時延。
- UDP使用最大努力交付,即不保證可靠交付。
- UDP是面向報文的,適合一次性傳輸是少量數據的網絡應用。
- UDP無擁塞控制,適合很多實時應用。
- UDP首部開銷小,為8B(16位源端口號,16位目的端口號,16位UDP長度,16位UDP校驗和),TCP為20B。
請添加圖片描述
參考
【王道計算機考研 計算機網絡】 https://www.bilibili.com/video/BV19E411D78Q/?p=140&share_source=copy_web&vd_source=a2b60e3364b59c2f5872cb3058666cae