一、TCP 頭部標志位
TCP 頭部包含多種標志位,用于控制連接建立、數據傳輸、連接斷開等過程,核心標志位及作用如下:
標志位 | 英文全稱 | 作用 |
---|---|---|
SYN | Synchronize Sequence Numbers | 請求建立連接,三次握手第一步發送 SYN 包 |
ACK | Acknowledgment | 響應報文標志,用于確認收到數據,確認號字段需配合 ACK 位使用 |
PSH | Push | 攜帶數據標志,通知接收方立即從緩沖區讀數據,無需等待緩沖區滿 |
FIN | Finish | 請求斷開連接標志,四次揮手過程中用于發起斷開請求 |
RST | Reset | 復位標志,用于異常斷開連接(如連接超時、錯誤),強制重置連接狀態 |
URG | Urgent | 緊急數據標志,標記數據為緊急,緊急指針字段配合使用,指示緊急數據位置 |
從 TCP 頭部結構看,這些標志位位于“數據偏移”“保留”之后的控制位區域,與源端口、目的端口、序列號、確認號等共同構成 TCP 報文首部(固定 20 字節,含選項則更長 ),TCP 報文段封裝在 IP 數據報的數據部分傳輸 。
二、TCP 保障安全可靠的機制
(一)連接管理:三次握手 & 四次揮手
- 三次握手:通過 SYN、SYN + ACK、ACK 交互,確保收發雙方通信前就緒,同步序列號,確認雙向收發能力 。
- 四次揮手:通過 FIN、ACK、FIN、ACK 交互,確保雙方數據傳輸完畢,有序釋放連接資源,避免數據殘留 。
(二)應答機制
TCP 發送數據時,用序列號標記數據包起始編號;接收方回復確認號(為收到的最后一個字節編號 + 1 ),告知發送方已接收數據范圍。發送方依據確認號判斷數據是否被接收,未確認則觸發重傳,保障數據可靠。
(三)超時重傳機制
數據發送后,若在**超時時間(RTO,Retransmission Timeout )**內未收到確認,發送方認為數據包丟失,重新發送該數據。超時時間會根據網絡情況動態調整(如基于往返時間 RTT 計算 ),平衡重傳效率與網絡開銷。
(四)滑動窗口機制
- 發送方和接收方各維護一個窗口(緩沖區 ),窗口內是已發送未確認、或準備發送的數據 。
- 發送方無需等每個數據包確認后再發下一個,可連續發送窗口內數據,提升傳輸效率;接收方通過窗口大小字段告知發送方自己的接收能力,動態調整發送速率,避免擁塞 。
三、TCP 提升效率的機制
(一)延遲應答機制
接收方不立即回復 ACK,等待一段時間(如緩存更多數據、湊齊應用層讀取需求 ),再批量確認。減少 ACK 報文數量,降低網絡開銷,提升整體傳輸效率。
(二)流量控制機制
結合 TCP 頭部窗口大小字段,接收方根據自身緩沖區剩余空間,調整窗口大小告知發送方。發送方按窗口大小控制發送數據量,避免發送過快導致接收方緩沖區溢出,實現收發速率匹配。
(三)捎帶應答機制
ACK 報文可與應用層數據合并發送(如接收方有數據要發給發送方時,將 ACK 與數據報文一起傳輸 ),減少單獨發送 ACK 的次數,降低網絡報文數量,提升傳輸效率。