tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。
位碼(可以理解為請求狀態):
有6種標示:syn(synchronous建立聯機) ack(acknowledgement 確認) psh(push傳送) fin(finish結束) rst(reset重置) urg(urgent緊急)
序號:有兩種:sequence number(順序號碼) acknowledge number(確認號碼)
順序號是傳送方定義,確認號是接收方返回的(ack num = seq num + 1),傳送方會檢驗收到的ack num是否是seq num + 1。
三次握手
第1次握手:主機a傳送位碼為[syn],產生seq number=0的資料報到主機b,(主機b發現是[syn],表示主機a請求建立連線);
第2次握手:主機b收到請求後要確認請求連線資訊,向a傳送ack number=(主機a的seq+1),位碼為[syn, ack], 產生seq=0的包(這裡的seq是主機b的seq);
第3次握手:主機a收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼是否為[syn, ack] (syn,ack 可以理解為,ack:我收到了連線請求,syn:我也準備好了,可以連線了),若是[syn, ack],主機a會再傳送ack number=(主機b的seq+1),位碼是[ack],主機b收到後確認seq值與位碼則連線建立成功。
從此完成了三次握手,主機a與主機b開始傳送資料。
然後模擬tcp連線,用nc命令。
找台機器作為「伺服器」主機b,在終端上: nc -l 9999
在本機上開啟抓包,然後本機終端上:nc 10.0.10.65 9999 連線上去。
暫停抓包。
效果如下:
看下,是不是三次握手的流程。
TCP協議三次握手(通訊)
在 計算機網路 一書中其中有提到,三次握手的目的是 為了防止已經失效的連線請求報文段突然又傳到服務端,因而產生錯誤 這種情況是 一端 client a發出去的第乙個連線請求報文並沒有丟失,而是因為某些未知的原因在某個網路節點上發生滯留,導致延遲到連線釋放以後的某個時間才到達另一端 server b。...
tcp三次握手 TCP 三次握手總結
tcp特點概述 tcp segment structure 段結構 step2 server host receives syn,replie with syn ack segment 答覆syn ack報文段 step3 client receives synack,replies with ac...
簡單理解三次握手
第一次握手 客戶端向服務端傳送資料,資料中包括syn 請求鏈結 標誌和自動生成的seq number 1234567 第二次握手 服務端收到資料 將接受到的seq number 1 並作為ack number 並且加上 ack 標誌 和 syn 標誌 還有自己生成 的 seq number2222 ...