第三層 運輸層

運輸層協議:爲運行在不同主機上的應用進程提供邏輯通信。

網絡層協議:爲主機之間提供邏輯通信。

TCP服務:

1)數據交付

2)差錯檢查

3)可靠數據傳輸

4)擁塞控制

UDP服務:

1)數據交付

2)差錯檢查

TCP與UDP最基本責任:將兩個系統間IP的交付服務擴展,爲運行在端系統上的倆個進程之間交付服務。

交付:

1)多路交付

2)多路分解

UDP(無連接)

優點:

1.關於發送什麼數據以及何時發送應用層控制更爲精細。

2.無需連接建立。

3.無連接狀態

4.分組首部開銷小

UDP報文段:

源端口號 目的端口號
長度 效驗和
應用數據報文(報文)
效驗和目的:使接收方檢測到何時出現了錯誤。

TCP

流水線差錯恢復:

1)回退N步 GBN (又稱滑動窗口協議)

2)選擇重傳 SR

回退N步協議:允許發送方送多個分組(當有多個分組可用時)而不需要等待確認,但它也受限於在流水線中未確認的分組數不能超過某個最大允許數N。

GBN協議中,接受方丟棄所有失序分組。

優點:接受緩存簡單,接受方不需要緩存任何失序分組。

缺點:隨後對該分組的重傳也許會丟失或出錯,因此甚至需要更多重傳。

在這裏插入圖片描述

選擇重傳(SR)協議:通過讓發送方僅重傳那些它懷疑在接受方出錯(即丟失或受損)的分組而避免了不必要的重傳。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-s2z6rFmw-1604329243811)(media/92f9af60641349a4cc7c911225d151fc.png)]

窗口長度必須小於或等於序號空間大小的一半

TCP面向連接(三次握手,四次揮手)

TCP雙全工服務

TCP點對點 無法進行多播

TCP可從緩存中取出,放入報文段的數量受限於最大報文段(MSS)

MSS通常根據最初確定的由本地發送主機發送的最大鏈路層幀長度(即最大傳輸單元(MTU))設置。

例:以太網,PPP鏈路層都具有1500Byte的MTU,TCP/IP首部長度通常40Byte,所以MSS爲1460Byte。

TCP:

1)首部字段

2)數據字段

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fgsTrI8H-1604329243814)(media/7a1393237419ef3fb16f528a5622deed.png)]

計算機生成了可選文字: 序號 確認後 長度 湃端囗號 保留 未用 因特網襝輸和@
目的端囗號 接牧窗囗 經濟據指針@

源端口號和目的端口號確定一條TCP連接。

確認號是期望從另外一主機收到的下一字節序號。

序號是該報文段首字節的字節流編號。

控制位:URG、ACK、PSH、RST、SYN、FIN。

URG:緊急指針標誌。

ACK:確認序號標誌。

PSH:推動標註位,儘快交給程序。

RST:重置連接標誌(例如:目的地址端口號更改)。

SYN:同步序號。

FIN:finish標誌,用於釋放連接。

接受窗口(rwnd):滑動窗口大小

EstimatedRTT(估計往返時間)=(1-a)×EstimatedRTT+a×SampleRTT(樣本時間)

a一般取0.125(1/8)

指數加權移動平均(EWMA)

RTT偏差DevRTT

DevRTT=(1-B)×DevRTT+B|SampleRTT-EstiamtedRTT|

B一般取0.25

TimeoutInterval(重傳時間)=EstimatedRTT+4×DevRTT

**快速重傳:**TCP收到3個冗餘ACK,開始重傳。

流量控制:

TCP提供了流量控制服務:消除發送方時接受方緩存溢出的可能性。

發送方維護接受窗口

當主機B的接收窗口爲0時,主機A繼續發送只有一個字節數據的報文段,這些報文段將會被接受方確認。最終緩存開始清空,並且確認報文段裏將包含一個非零的rwnd值。

三次握手:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jxPsFVUG-1604329243816)(media/11dd099a37277dabf6db2efb22155721.png)]

四次揮手:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eLM9Na4V-1604329243818)(media/b6e51379cf30826c1211654160df2836.png)]

擁塞控制:

方法:

1.端到端(TCP使用)

2.網絡輔助

TCP採用方法:讓每一個發送方根據所感知的網絡擁塞程度來限制其能向連接發送流量的速率。

運行在發送方的TCP擁塞控制機制跟蹤一個額外變量,即擁塞窗口。(cwnd)

丟包事件:

1)超時

2)3個冗餘ACK

發送方速率≈cwnd/RTT byte/s

發送方(出現丟包事件)認爲路徑上出現擁塞指示。

TCP使用確認(ACK)來觸發(或計時)增大它的擁塞窗口(cwnd)長度。

TCP擁塞控制算法:

1)慢啓動

2)擁塞避免

3)快速恢復

慢啓動:cwnd值以1個MSS開始並且每當傳輸報文,首次被確認就增加一個MSS。(指數增長)

結束事件:

1)存在一個超時指示的丟包事件,cwnd設置爲1個MSS重新開始慢啓動。「慢啓動閾值」(ssthresh)=cwnd/2。

2)當cwnd=ssthresh,結束慢啓動,開始擁塞避免。

3)檢測到3個冗餘ACK,慢啓動結束,開始快速恢復。

擁塞避免(線性增長)

對於TCP發送方無論何時到達一個新的ACK,就將cwnd增加一個MSS(MSS/cwnd)字節。(每RTT
1MSS)

結束事件:

1)超時,擁塞避免結束,開始慢啓動。

(ssthresh=cwnd/2,cwnd=1MSS)

2)三個冗餘ACK,擁塞避免結束,開始快速恢復。

(ssthresh=cwnd/2,cwnd=ssthresh+3×MSS)

快速恢復:對於引起TCP進入快速恢復狀態的缺失報文段,對收到的每個冗餘的ACK,cwnd的值增加一個MSS。

結束事件:

1)丟失報文段ACK到達,快速恢復結束,擁塞避免開始,(cwnd=ssthresh)

2)超時,快速恢復結束,慢啓動開始。(ssthresh-cwnd/2,cwnd=1MSS)

速恢復狀態的缺失報文段,對收到的每個冗餘的ACK,cwnd的值增加一個MSS。

結束事件:

1)丟失報文段ACK到達,快速恢復結束,擁塞避免開始,(cwnd=ssthresh)

2)超時,快速恢復結束,慢啓動開始。(ssthresh-cwnd/2,cwnd=1MSS)

TCP擁塞控制加性增,乘性減(AIMD)