其實啊, 三次握手通俗點說: a: 老哥,有事找你人生。 b: 小弟, 我知道了。 a: 老哥,那我要開始了啊。
先放張過程圖, 大體流程先體驗下
實踐出真知, 抓包走你 ~
這是我訪問b站時的三次握手,很清楚了有3條。
no.60是第一次握手
no.64是第二次握手
no.65是第三次握手
看詳細的, 因為三次握手是基於tcp協議的, 所以我們需要了解一下tcp報文首部。
在這裡:
有用到的先說明:
ack —— 只有當 ack = 1 時確認號字段才有效。當 ack = 0 時,確認號無效。
syn —— 同步位元 syn 置為 1,就表示這是乙個連線請求或連線接受報文。
確認號——佔 4 位元組,是期望收到對方的下乙個報文段的資料的第乙個位元組的序號。
第一次握手
第一次握手需要傳送syn = 1, 代表這是乙個連線請求, seq這是隨機的, 別人設計的, 用來後面推算服務端返回的ack的值, 之後說明。
第二次握手
第二次握手, 返回加上乙個ack確認, 以及兩個序號,乙個序列號 seq 和 乙個確認序列號ack, 這兩個都是變數啊~ 怎麼寫無所謂了, 比如ack 和 ack, 不是乙個意思嗎?
還有就是: 確認序列號 = 序列號 + 1, 用來下次比對。
第三次握手
客戶端收到伺服器發來的包後檢查確認序號ack是否正確, 正確值就是第一次握手的seq+1, 如果正確, 就發x+1(第一次握手是x), 確認號ack是y+1(服務端返回的序號是y), 確認ack, 沒有syn了, 現在客戶端就可以發請求了, 例如經常用到的http, 可以帶上引數, 怎麼樣隨意了 - 3 -
ps: 比較容易混亂的就是seq和ack了, 就是我發乙個seq給你, 你把計算出來的確認號給我, 不管是站在客戶端還是服務端的角度來看, 都一樣, 第三次握手的seq是繼續第一次握手的seq。
tcpdump抓包分析TCP三次握手過程
1 首先看下man手冊 tcpdump 8 name tcpdump dump traffic on a network synopsis tcpdump addefllnnopqrstuuvxx c count c file size f file i inte ce m module m sec...
wireshark抓包,TCP的三次握手和四次握手
自己在阿里雲上,使用python寫了一小段 用來驗證tcp的連線情況。使用網路除錯助手進行連線,並抓包 可以看到 最初的三條資料就是3次握手建立連線,包含syn syn ack ack。len 3是手動傳送的資料123,伺服器返 到。伺服器的python 主動傳送乙個http包頭和乙個pdu資料內容...
網路知識 wireshark抓包,三次握手分析
tcp需要三次握手建立連線 網上的三次握手講解的太複雜抽象,嘗試著使用wireshark抓包分析,得到如下資料 整個過程分析如下 step1 client給server傳送 syn seq 0 這個資料並不是所有人都為0 step2 server給client傳送 syn ack seq 0 這裡的...