2021-05-12 14:32:11
TCP三次握手及tcpdump抓包
1. TCP報文段的首部格式
說明:
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三次握手具體過程
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 root@192.168.1.124
說明:ssh也屬於tcp連線,等待抓取封包過程中,另一台伺服器ssh登入該伺服器,無需輸密碼,即可完成3次握手
2)192.168.1.123機器
抓包 tcpdump port 22 -c 3 -n
註:Flags [S] 中的 S 表示為SYN包為1
client主機返回ACK,包序號為ack=1 ,這是相對序號,如果需要看絕對序號,可以在tcpdump命令中加-S
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-03/142123.htm
相關文章