1. 程式人生 > >TCP-傳輸控制協議

TCP-傳輸控制協議

TCP涉及的主要話題:

1) ARQ(Auto Repeat Request)和重傳
2)分組視窗和滑動視窗
3)變數視窗:流量控制和擁塞控制

TCP的服務模型

TCP提供的是一種:
1)面向連線的
2)可靠的位元組流服務

這裡的位元組流是指:TCP不會關注傳送方輸入的位元組流的大小和次數,同樣的位元組流只會出現在兩端,但是每個端點(傳送方和接受方)獨立選擇自己每次讀寫的大小。

TCP的可靠性

1)TCP將位元組流擷取為合理長度的分組傳送
2)TCP維持了一個強制的校驗和,該校驗和涉及它的頭部、任何相關應用程式資料和IP頭部的所有欄位
3)TCP傳送一組報文時候,會設定一個超時計數器,等待對方的確認接收,否則會重發分組資料。
4)TCP的接收到連線的另一端的資料時,會發送一個確認ACK
5)TCP提供了一份全雙工服務
6)TCP使用序列號,一個TCP接收端可丟棄重複的報文段和記錄以雜亂次序到達的報文段。

TCP報文協議標準

這裡寫圖片描述

TCP固定報文頭:20位元組
TCP報文可選區:最多40位元組。

TCP協議裡面有幾個需要注意的地方:

1)TCP的協議包是沒有IP地址的,那是IP層上的事。但是有源埠和目標埠。

2)一個TCP連線需要四個元組來表示是同一個連線(src_ip, src_port, dst_ip, dst_port)準確說是五元組,還有一個是協議。但因為這裡只是說TCP協議,所以,這裡我只說四元組。

3)注意上圖中的四個非常重要的東西:
Sequence Number是包的序號,用來解決網路包亂序(reordering)問題。
Acknowledgement Number就是ACK——用於確認收到,用來解決不丟包的問題。
Window又叫Advertised-Window,也就是著名的滑動視窗(Sliding Window),用於解決流控的。
TCP Flag ,也就是包的型別,主要是用於操控TCP的狀態機的。