s6-4 TCP 数据段
傳輸控制協議
? TCP (Transmission Control Protocol) 是專門為了在不可靠的互聯網絡上提供可靠的端到端字節流而設計的
? TCP必須動態地適應不同的拓撲、帶寬、延遲、分組大小和其它的參數,并且當有錯誤的時候,能夠足夠健壯
傳輸控制協議
? 支持TCP的機器都有一個 TCP 實體,或者是用戶進程或者是操作系統內核,都可以管理TCP流和跟IP層的接口
發:封裝 TCP實體接收本地進程的用戶數據流,將其分割成不超過64kB的分片(實踐中,通常分割成1460字節,以通過以太網傳輸)
收:解封裝 當包含TCP數據段的報文到達某臺機器的時候,被提交給傳輸實體,傳輸實體將其重構出原始的字節流
TCP 協議
? TCP連接上的每個字節都有它自己獨有的32位序列號
? 收發雙方的TCP實體以數據段的形式交換數據
? 一個數據段包括20字節的頭部(不包括可選項)和數據域(0 或更多字節)
TCP 數據段的大小
? TCP軟件決定數據段的大小,有兩個因素限制了數據段的長度:
? TCP數據段必須適合IP的65515的載荷限制
? 每個TCP數據段必須適合于下層網絡的 MTU (如,1500 字節 – 以太網載荷大小)
? TCP使用的基本協議具有動態窗口大小的滑動窗口協議 (sliding window protocol)
TCP 數據段(TPDU)格式
TCP 數據段頭
1.源端口 和 目的端口 字段標明了一個連接的兩個端點
?用來跟蹤同一時間內通過網絡的不同會話。一般每個端口對應一個應用程序
2.序列號 – 字節號 (32 位)
?初始序列號ISNs(initial sequence numbers ):隨機產生的
?SYN:攜帶了ISNs 和SYN 控制位的數據段
3.確認號 – 期望接收的字節號 (32位)
4.TCP 段頭長度 – TCP段頭長度, 單位32位(4字節)
5.保留域/字段
6.
當緊急指針使用的時候,URG 被置為1。緊急指針是一個對于當前序列號的字節偏移量,標明緊急數據從哪里開始
- 當URG=1時,表明有緊急數據,必須首先處理
- 緊急指針配合使用
- 方收到這樣的數據后,馬上處理,處理完后恢復正常操作
- 使win=0,也可以發送這樣的緊急數據段
- ACK 可設為 1/0
1 表示確認號有效
0 標明確認號無效 - PSH 表示這是帶有PUSH標志的數據
接收方收到這樣的數據,應該立刻送到上層,而不需要緩存它 - RST 被用來重置一個已經混亂的連接
- SYN 用在連接建立的過程
SYN=1 ,ACK=0 連接請求
當 SYN=1 ,ACK=1 連接接受 - FIN 被用來釋放連接,它表示發送方已經沒有數據要傳輸了,但是可以繼續接收數據
7.
TCP中的流控(Flow control)使用一個可變長的滑動窗口來完成的
Window size – 告訴對方可以發送的數據字節數(從確認字節號開始(決定于接收方)
8. Checksum –提供額外的可靠性
?? 校驗的范圍包括頭部、數據和概念性的偽頭部
9.
選項域提供了一種增加基本頭沒有包含內容的方法
- 選項實例1
最重要的選項是允許每臺主機指定他愿意接收的最大TCP凈荷長度
? 使用大的數據段比使用小的數據段更高效
? 在連接建立階段,每方可以在選項中宣布他的最大TCP凈荷長度,并查看對方的給出的最大值;選擇雙方中宣布小的那個使用
? 缺省的值為 536 bytes,所有互聯網主機默認為可以接受 536 + 20 = 556 bytes的數據段 - 選項實例2
? 對于高帶寬、高延遲或兩者兼備的線路,64kB窗口可能是一個問題
? 窗口尺度(Window scale)選項允許收發雙方協商一個窗口尺度因子, 這個因子允許雙方把窗口尺寸域向左移動至14位
? 因此窗口數可多達 2 30 字節,很多TCP都支持這個選項 - 選項實例3
RFC 1106中描述的另一個選項,現在廣泛實現了,即使用選擇性重傳( selective repeat ),而不是回退n幀協議( go back n )
TCP是一個復雜的傳輸層協議,負責將TCP 數據段可靠地送達目的端。 ?
TCP段格式
?源端口、目的端口
?序列號
?確認號(ack控制位置位才有效)
?六個控制位
?窗口尺寸(流控)
總結
以上是生活随笔為你收集整理的s6-4 TCP 数据段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: s6-3 通信模型
- 下一篇: s6-5 TCP 连接的建立