首页 > 系统管理 > Tcpdump 抓包分析TCP的三次握手和四次断开
2018
06-22

Tcpdump 抓包分析TCP的三次握手和四次断开

 大家都知道Http请求要经过tcp的三次握手和四次端口,那么具体是怎么工作的通过tcpdump抓包来看下,方便以后我们分析定位一些问题。

我们以抓取"著名"的博客tshare365站点,为例:

实际操作:

在终端1上输入:
tcpdump -i eth0 -S host tshare365.com
在终端2通过curl 模拟一次http请求:
curl  -I  http://tshare365.com

此时在看终端1的输出:

blob.png

分析:

在分析之前我们需要先知道Tcp三次握手和四次端口的过程:

三次握手

blob.png

通过如下三部建立了tcp的三次握手

ack =seq+1

blob.png

11:58:22.930651 IP zdong-test.51342 > 139.129.5.26.http: Flags [S], seq 2601600286, win 29200, options [mss 1460,sackOK,TS val 2597752556 ecr 0,nop,wscale 7], length 0
11:58:22.944315 IP 139.129.5.26.http > zdong-test.51342: Flags [S.], seq 3132456416, ack 2601600287, win 14480, options [mss 1460,sackOK,TS val 3312696084 ecr 2597752556,nop,wscale 5], length 0
11:58:22.944344 IP zdong-test.51342 > 139.129.5.26.http: Flags [.], ack 3132456417, win 229, options [nop,nop,TS val 2597752570 ecr 3312696084], length 0

1条:zdong-test主机的51342端口向 139.129.5.26的80端口发送了SYN(Flags[S]表示)请求,seq是2601600286

2条:139.129.5.26的80端口向zdong-test主机的51342端口发送了SYN+ACK(Flags[S.])seq是3132456416 ack是上一条的seq+1=2601600287

3、 zdong-test主机的51342端口向 139.129.5.26的80端口发送了ACK(Flags[.]表示)请求

以上是三次握手的过程,下面开始传输数据(Flags[P])


数据传输过程

blob.png

四次端口

blob.png

四次断开过程

blob.png

11:51:18.802604 IP zdong-test.51334 > 139.129.5.26.http: Flags [F.], seq 2158549759, ack 4090830, win 237, options [nop,nop,TS val 2597328428 ecr 3312271925], length 0
11:51:18.815933 IP 139.129.5.26.http > zdong-test.51334: Flags [F.], seq 4090830, ack 2158549760, win 453, options [nop,nop,TS val 3312271939 ecr 2597328428], length 0
11:51:18.815957 IP zdong-test.51334 > 139.129.5.26.http: Flags [.], ack 4090831, win 237, options [nop,nop,TS val 2597328441 ecr 3312271939], length 0

四次端口应该是4个请求,这里只是出现了3次,应该是第一条Flags[F.] 中表示的FIN和ACK合并了,先这样理解,有问题后期在更新

重点

要看到抓包的结果必须看懂Flags中的标志位:

S=SYN   发起连接标志
P=PUSH  传送数据标志
F=FIN    关闭连接标志
.=ACK   表示确认包
RST= RESET  异常关闭连接
.      表示没有任何标志




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复