1. TCP封包段的首部格式
<a href="https://s1.51cto.com/wyfs02/M02/8E/E0/wKioL1jOUZrC4nGsAAEpmMqos44324.png" target="_blank"></a>
說明:
ACK : TCP協定規定,隻有ACK=1時有效,也規定連接配接建立後所有發送的封包的ACK必須為1
SYN(SYNchronization) : 在連接配接建立時用來同步序号。當SYN=1而ACK=0時,表明這是一個連接配接請求封包。對方若同意建立連接配接,則應在響應封包中使SYN=1和ACK=1. 是以, SYN置1就表示這是一個連接配接請求或連接配接接受封包
FIN (finis)即完,終結的意思, 用來釋放一個連接配接。當 FIN = 1 時,表明此封包段的發送方的資料已經發送完畢,并要求釋放連接配接
2. tcp連接配接時的三次握手和斷開時的4次揮手整體過程
2.1 tcp三次握手具體過程
<a href="https://s4.51cto.com/wyfs02/M00/8E/E2/wKiom1jOUhOjVYKeAAE8ioIHlwE063.png" target="_blank"></a>
1)首先由Client送出請求連接配接即 SYN=1,聲明自己的序号是 seq=x(我可以給你發資料嗎?)
2)然後Server 進行回複确認,即 SYN=1 ,聲明自己的序号是 seq=y, 并設定為ack=x+1(可以)
3)最後Client 再進行一次确認,設定 seq=x+1, ack=y+1(好的)
注:seq 序列号範圍:2^32 -1 到最大值,再從0開始
seq 序列号作用:server端依據這個序列号來組資料
2.2 使用tcpdump抓包檢視tcp三次握手過程
參數說明:
-c 指定包個數
-n IP、端口用數字方式顯示
port 指定端口
1)192.168.1.24機器建立ssh連接配接
說明:ssh也屬于tcp連接配接,等待抓取資料包過程中,另一台伺服器ssh登入該伺服器,無需輸密碼,即可完成3次握手
2)192.168.1.123機器
抓包 tcpdump port 22 -c 3 -n
<a href="https://s4.51cto.com/wyfs02/M01/8E/E0/wKioL1jOUmyiAFmOAABDKHa4-B4222.png" target="_blank"></a>
注:Flags [S] 中的 S 表示為SYN包為1
client主機傳回ACK,包序号為ack=1 ,這是相對序号,如果需要看絕對序号,可以在tcpdump指令中加-S
<a href="https://s3.51cto.com/wyfs02/M01/8E/E2/wKiom1jOUn-SF_XUAABAwRPB5Qg819.png" target="_blank"></a>
本文轉自 huangzp168 51CTO部落格,原文連結:http://blog.51cto.com/huangzp/1908165,如需轉載請自行聯系原作者