TCP協議一
阿新 • • 發佈:2018-11-04
TCP協議一
TCP/IP協議集包括應用層,傳輸層,網路層,鏈路層
其中TCP和UDP協議是工作在傳輸層,用來控制傳輸的。
IP協議工作在網路層。
下面這張圖顯示了各個協議工作層:
一、建立連線階段:
位碼即tcp標誌位,有6種標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)Sequence number(順序號碼) Acknowledge number(確認號碼)
第一次握手:主機A傳送位碼為syn=1,隨機產生seq number=1234567的資料包到伺服器,主機B由SYN=1知道,A要求建立聯機;
第二次握手:主機B收到請求後要確認聯機資訊,向A傳送ack number=(主機A的seq+1),syn=1,ack=1,隨機產生seq=7654321的包;
第三次握手:主機A收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到後確認seq值與ack=1則連線建立成功。
如圖:
三次握手的意義在於:
第一次:客戶端告訴伺服器,我想要連線你(SYN)
第二次:伺服器迴應客戶端,可以連線(ACK),同時要求客戶端保持指定的埠處於可通訊狀態(SYN),所以在第二次握手時,伺服器會同時置上ACK+SYN位。
第三次:客戶端告訴伺服器,我的指定埠是OK的,可以通訊了(ACK)
在三次握手成功後,客戶端就可以發資料了。
以下是wireshark抓出來的三次握手的過程和傳送的過程
二、資料傳輸階段:
在資料傳輸階段seq和ack的值如下:
seq=(收到包或上個包的)ack
ack=(收到包的)seq+size
顯然ack有效驗的功能,告訴接收方我已經收到了你發過來的包,並且傳遞了size資訊。
以下是整個過程的wireshark抓包的截圖:
分析:
過程圖表分析
可以看出:
將要傳送包的
ack=要響應包的seq + len 或者 (自己發的上一個包的ack(兩次都是響應同一個包))
seq=要響應包的ack 或者 (自己發的上一個包的seq + len (兩次都是響應同一個包))