TCP三次握手簡析

tcp三次握手簡介

tcp握手需要用到標識位裏面的兩種標識:SYN和ACK,以及報文中的seq序列號和ack確認號;
上面的ack確認號和ACK標識位是不同兩種數據,下面小寫的ack代表ack確認號,大寫的ACK代表ACK標識位;

簡單流程如下:
1. client隨機產生一個seq數字,發送SYN請求到server;
2. server收到SYN請求,將ack置爲收到的seq+1,並且隨機產生一個seq,響應SYN+ACK;
3. client收到SYN+ACK請求,驗證收到的ack是否爲發出去的seq序列號+1,將ack置爲收到的seq+1,響應ACK;
握手完成,開始傳輸數據;

tcpdump報文分析

下面是一段通過tcpdump命令監控到的tcp三次握手的報文;

# tcpdump -i eth1 -XSnnvv host 111.111.111.111 and port 80
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes



18:55:12.923498 IP (tos 0x14, ttl 53, id 31105, offset 0, flags [DF], proto TCP (6), length 64)
    111.111.111.111.50217 > 222.222.222.222.80: Flags [S], cksum 0x80e2 (correct), seq 277050658, win 65535, options [mss 1440,nop,wscale 5,nop,nop,TS val 784552069 ecr 0,sackOK,eol], length 0
    0x0000:  4514 0040 7981 4000 3506 df5b b781 a72c  E..@y.@.5..[...,
    0x0010:  7929 14f0 c429 0050 1083 7522 0000 0000  y)...).P..u"....
    0x0020:  b002 ffff 80e2 0000 0204 05a0 0103 0305  ................
    0x0030:  0101 080a 2ec3 5085 0000 0000 0402 0000  ......P.........
18:55:12.923538 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    222.222.222.222.80 > 111.111.111.111.50217: Flags [S.], cksum 0x2a16 (correct), seq 1517913223, ack 277050659, win 14480, options [mss 1460,sackOK,TS val 1268712571 ecr 784552069,nop,wscale 6], length 0
    0x0000:  4500 003c 0000 4000 4006 4df5 7929 14f0  E..<..@[email protected])..
    0x0010:  b781 a72c 0050 c429 5a79 8487 1083 7523  ...,.P.)Zy....u#
    0x0020:  a012 3890 2a16 0000 0204 05b4 0402 080a  ..8.*...........
    0x0030:  4b9f 047b 2ec3 5085 0103 0306            K..{..P.....
18:55:12.936229 IP (tos 0x14, ttl 53, id 57168, offset 0, flags [DF], proto TCP (6), length 52)
    111.111.111.111.50217 > 222.222.222.222.80: Flags [.], cksum 0x815d (correct), seq 277050659, ack 1517913224, win 4105, options [nop,nop,TS val 784552080 ecr 1268712571], length 0
    0x0000:  4514 0034 df50 4000 3506 7998 b781 a72c  [email protected]....,
    0x0010:  7929 14f0 c429 0050 1083 7523 5a79 8488  y)...).P..u#Zy..
    0x0020:  8010 1009 815d 0000 0101 080a 2ec3 5090  .....]........P.
    0x0030:  4b9f 047b                                K..{
......

SYN:

這裏寫圖片描述
黃色:數據包來源ip端口和目標ip端口;
紅色:標識位 [S] = SYN;
藍色:seq序列號,以及seq在16進制數據包中的位置;0x 1083 7522 = 277050658;

SYN+ACK:

這裏寫圖片描述
黃色:數據包來源ip端口和目標ip端口;
紅色:標識位 [S.] = SYN+ACK;
藍色:seq序列號,以及seq在16進制數據包中的位置;隨機產生:1517913223;
綠色:ack確認號,以及ack在16進制數據包中的位置;爲SYN請求的 seq+1 = 277050658 + 1 = 277050659;

ACK:

這裏寫圖片描述
黃色:數據包來源ip端口和目標ip端口;
紅色:標識位 [.] = ACK;
藍色:seq序列號,以及seq在16進制數據包中的位置;爲SYN+ACK中的 ack = 277050659;
綠色:ack確認號,以及ack在16進制數據包中的位置;爲SYN+ACK中的 seq+1 = 1517913223 + 1 = 1517913224;

wireshark的報文更加詳細,可以更方便分析檢測;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章