圖片來源自網絡
- 面向連接的、可靠地、基於字節流的傳輸層通信協議
- 將應用層的數據流分割成報文段併發送給目標節點的TCP層
- 數據表都有序號,對方收到則發送ACK確認,未收到則重傳
- 使用校驗和來檢驗數據在傳輸過程中是否有誤
TCP報文頭:
- 第一層:源端口與目標端口,各佔兩個字節,一共四個字節
- 第二層:報文段序號,每一個字節都會有對應的序號,佔四個字節
- 接受了第一段報文段的第一個字節序號爲100,報文段一個20個字節
- 那麼下一次接受的報文段的第一個字節序號應該爲121
- 第三層:期望收到下一段報文的第一個字節的序號,也就是上面例子的121
- 第四層:
- offset表示數據偏移,是長度不固定的,用於指出TCP報文數據距離TCP報文的起始處有多遠。
- Reserved保留段
- TCP Flags:
- URG:緊急指針標誌
- ACK:確認序號標誌
- PSH:push標誌
- RST:重置連接標誌
- SYN:同步序號,用於建立連接過程
- FIN:finish標誌,用於釋放連接
- Window指的是滑動窗口的大小,用於告訴發送端,接收端的緩存大小,以此用來控制發送端的發送速率。根據RTT與RTO做流量控制與亂序重排。
- RTT:發送一個數據包到收到對應的ACK,所花費的時間
- RTO:重傳時間間隔,TCP在傳送數據時會開啓一個重傳時間定時器,只有對方回覆了ACK纔會停止,不然就會觸發重傳。RTO是由RTT計算出來的。
- 滑動窗口主要保證TCP的可靠性、流控特性
- 第五層
- Checksum:校驗和:
- 校驗和(checksum)是指傳輸位數的累加,當傳輸結束時,接收者可以根據這個數值判斷是否接到了所有的數據。如果數值匹配,那麼說明傳送已經完成。通常是以十六進制表示。
- Urgent Pointer:緊急指針,只有當TCP Flags爲URG纔有
- TCP Options:可變長度,可選項
- Checksum:校驗和: