概念:
TCP協議被稱作一種端對端協議。這是因爲它爲兩臺計算機之間的連接起了重要作用:當一臺計算機需要與另一臺遠程計算機連接時,TCP協議會讓它們建立一個連接、發送和接收數據以及終止連接。
Tcp是提供面向連接的,可靠的字節流服務.面向連接是tcp在正式進行通訊之前首先通過一些握手機制確認雙方通訊意向並建立一條認爲可以傳輸的概念通道.字節流服務是tcp傳輸的最小單位爲字節,認爲字節是有意義的單位.並且tcp不會在此字節流中插入記錄符號.發送端不對字節數據做任何解釋,均由接收端的應用完成解釋.
格式:
1. 源端口
用於指示源端口的數值。
2. 目的端口
用於指示目的端口的數值。
3. 序號
數據段中第一個數據的序號。
4. 應答號
當A C K位被置之後,這個域包括下一個發送者想要接收到的序號,這個值總被髮送。
5. 偏移
這個數指示數據的開始位置。
6. 保留域
保留域不被使用,但是它必須置0。
7. 控制位
控制位是以下各位:
U ( U R G ) 緊急指針域有效
A ( A C K ) 應答域有效
P ( P S H ) p u s h操作
R ( R S T ) 連接復位
S ( S Y N ) 同步序號
F ( F I N ) 發送方已達字節末尾
8. 窗口
這個域指示發送方想要接收的數據字節數,其開始於報文中的 A C K域。
9. 校驗和
校驗和是報文頭和內容按1的補碼和計算得到的1 6位數。假如報文頭和內容的字節數爲奇則最後應補足一個全0字節,形成校驗和,注意補足的字節不被送上網絡發送。
10. 緊急指針
這個域指出緊急數據相對於跟在U R G之後數據的正偏移。
11. 選項
選項可能在頭的後面被髮送,但是必須被完全實現並且是 8位長度的倍數。
建立連接三次握手:
1. 客戶和服務器端分別爲CLOSE和LISTEN,首先客戶端激活將發起請求連接的包, S ( S Y N ) 同步序號位置上,此刻客戶端爲SYN_SENT等待服務器迴應,服務端在等待階段LISTEN.
2. 服務器端收到客戶請求連接進入SYN_RECV,馬上回應ACK進入ESTABLISHED完成狀態.客戶端在等待迴應.
3. 客戶端接收到正確的ACK後進入ESTABLISHED.
關閉連接四次握手:
- 首先客戶或者服務器端發送FIN進入半關閉狀態,發送方進入FIN_WAIT_1
- 收到FIN一方發送ACK,進入CLOSE_WAIT,併發送FIN進入LAST_ACK
- 發送方收到ACK直接關閉進入FIN_WAIT_2,接收到FIN發送ACK進入關閉
- 介紹最後一個ACK關閉