文章目錄
-
- 一. TCP傳輸
-
- 1 TCP封包段結構
- 2 TCP可靠資料傳輸
- 3 TCP流量控制
- 4 TCP連接配接管理:3次握手和四次揮手
- 二. 擁塞控制原理
-
- 1. 擁塞的成因和代價
- 2. 擁塞控制方法
- 三. TCP擁塞控制
-
- 1. 擁塞控制的基本原理
- 2. TCP擁塞控制算法
一. TCP傳輸
TCP連接配接提供的服務是全雙工服務,同一連接配接能夠雙向傳輸資料,同時,也是點對點的連接配接(僅有一個發送方和一個接收方)。
1 TCP封包段結構
TCP封包段由首部字段和資料字段組成。
- 首部字段
源端口号和目的端口号:用于多路分用和多路複用
網際網路檢驗和:差錯檢驗
序号和确認号(32比特):用于實作可靠資料傳輸服務
接收視窗字段(16bite):用于流量控制,該字段訓示接收方願意接收的位元組數量。
首部長度字段(4bit):典型長度20bit
可選與變長的選項字段:用于雙方協商最大封包長度、或在高速網絡環境下用于視窗調節因子。
标志字段(6bit):ACK用于确認字段是否有效、RST、SYN、FIN用于連接配接的建立和拆除
2. 序号和确認号
序列号指的是segment中
第一個位元組的編号
,而不是segment的編号
ACKs:希望接收到的下一個位元組的序列号
telnet示例:
2 TCP可靠資料傳輸
TCP在IP層提供的不可靠服務基礎上實作可靠資料傳輸服務。使用了流水線機制、累積确認機制、使用單一的重傳定時器。采用重傳來處理丢包,觸發重傳的時間包括定時器逾時和收到重複ACK。
-
定時器逾時時間設定與往返時間(RTT)的估計
定時器的逾時時間是肯定要大于RTT的.
RTT的估計方式
為:測量從段發出去到收到ACK的時間(稱為SampleRTT,
忽略重傳),測量多個SampleRTT,求平均值,形成RTT的估計值EstimatedRTT
-
發送方處理事件
為了實作可靠性資料傳輸,發送方需要進行一些事件處理。
- 從應用層收到資料: 建立Segment、序列号是Segment第一個位元組的編号、 開啟計時器、設定逾時時間TimeOutInterval
- 逾時:重傳引起逾時的Segment、重新開機定時器
- 收到ACK:如果确認此前未确認的Segment, 則更新SendBase,如果更新後,視窗中還有未被确認的分組,重新啟動定時器(這裡采用的是單一重傳)。
- 接收方處理
-
快速重傳機制
收到3個備援的ACK,則進行快速重傳。
3 TCP流量控制
TCP為應用程式提供了流量控制服務,以消除發送方使接收方緩存溢出的可能性。流量控制實際上是一個速度比對服務
4 TCP連接配接管理:3次握手和四次揮手
強烈推薦:TCP的三次握手與四次揮手(詳解+動圖)
- 建立連接配接:三次握手
- 關閉連接配接
二. 擁塞控制原理
擁塞(Congestion)非正式定義:“太多發送主機發送了太多資料或者發送速度太快,以至于網絡無法處理”
表現: 分組丢失(路由器緩存溢出)、 分組延遲過大(在路由器緩存中排隊)
1. 擁塞的成因和代價
- 情況1:兩個發送方和一台具有無窮大緩存的路由器
- 情況2:兩個發送方和一台具有有限緩存的路由器
2. 擁塞控制方法
-
網絡輔助的擁塞控制
路由器向發送方顯式地回報網絡擁塞資訊 ,簡單的擁塞訓示(1bit):SNA, DECbit, TCP/IP ECN, ATM) ,訓示發送方應該采取何種速率。
-
端到端的擁塞控制 (TCP)
網絡層不需要顯式的提供支援,端系統通過觀察loss,delay等網絡行為判斷是否發生擁塞。 TCP采取這種方法。
三. TCP擁塞控制
TCP必須通過端到端的控制方法解決擁塞控制,因為IP層不會向端系統提供有關網絡擁塞的回報資訊。
1. 擁塞控制的基本原理
首先是如何
限制TCP發送方向連接配接發送的流量速率,主要采取的方式是控制擁塞視窗cwnd的大小
。
其次是如何使發送方感覺網絡擁塞:丢包時間則意味着擁塞
最後是如何合理的調整發送速率,主要采用的是TCP擁塞控制算法
2. TCP擁塞控制算法
- 加性增-乘性減算法:AIMD
- 慢啟動:SS
- 擁塞避免