tcpdump监控tcp三次握手和四次断开

导读:本篇文章讲解 tcpdump监控tcp三次握手和四次断开,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

tcpdump语法:

-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。 
-vv 输出详细的报文信息。 
-i 指定监听的网络接口。 
-n 不把网络地址转换成名字。 
-nn 不进行端口名称的转换。 
-S 将tcp的序列号以绝对值形式输出,而不是相对值。

TCP:

在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.
其中,对于我们日常的分析有用的就是前面的五个字段。 
它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置。

一、服务器端(192.168.14.13)安装nginx,开启80端口监听,同时在服务器端执行tcpdump工具

[root@localhost html]# ss -ntlp |grep 80
LISTEN     0      128          *:80                       *:*                   users:(("nginx",pid=6167,fd=6),("nginx",pid=6166,fd=6),("nginx",pid=6165,fd=6),("nginx",pid=6164,fd=6),("nginx",pid=6163,fd=6))
LISTEN     0      128         :::80                      :::*                   users:(("nginx",pid=6167,fd=7),("nginx",pid=6166,fd=7),("nginx",pid=6165,fd=7),("nginx",pid=6164,fd=7),("nginx",pid=6163,fd=7))

[root@localhost html]# tcpdump -i ens32 port 80 -n -nn -S

二、客户端访问nginx的80端口

[root@localhost ~]# curl  http://192.168.14.13
WEB SERVER

三、服务器端访问记录

[root@localhost html]# tcpdump -i ens32 port 80 -n -nn -S
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes
02:32:47.561144 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [S], seq 4025842404, win 29200, options [mss 1460,sackOK,TS val 17840596 ecr 0,nop,wscale 7], length 0
02:32:47.561262 IP 192.168.14.13.80 > 192.168.14.27.55980: Flags [S.], seq 3005208540, ack 4025842405, win 28960, options [mss 1460,sackOK,TS val 11035968 ecr 17840596,nop,wscale 7], length 0
02:32:47.561615 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [.], ack 3005208541, win 229, options [nop,nop,TS val 17840597 ecr 11035968], length 0
02:32:47.561823 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [P.], seq 4025842405:4025842482, ack 3005208541, win 229, options [nop,nop,TS val 17840597 ecr 11035968], length 77: HTTP: GET / HTTP/1.1
02:32:47.561839 IP 192.168.14.13.80 > 192.168.14.27.55980: Flags [.], ack 4025842482, win 227, options [nop,nop,TS val 11035969 ecr 17840597], length 0
02:32:47.562322 IP 192.168.14.13.80 > 192.168.14.27.55980: Flags [P.], seq 3005208541:3005208787, ack 4025842482, win 227, options [nop,nop,TS val 11035970 ecr 17840597], length 246: HTTP: HTTP/1.1 200 OK
02:32:47.562749 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [.], ack 3005208787, win 237, options [nop,nop,TS val 17840598 ecr 11035970], length 0
02:32:47.563151 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [F.], seq 4025842482, ack 3005208787, win 237, options [nop,nop,TS val 17840598 ecr 11035970], length 0
02:32:47.563845 IP 192.168.14.13.80 > 192.168.14.27.55980: Flags [F.], seq 3005208787, ack 4025842483, win 227, options [nop,nop,TS val 11035971 ecr 17840598], length 0
02:32:47.564286 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [.], ack 3005208788, win 237, options [nop,nop,TS val 17840599 ecr 11035971], length 0

四、三次握手分析(seq相对本地进行累加计算,本地ack等于对端seq+1)

02:32:47.561144 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [S], seq 4025842404, win 29200, options [mss 1460,sackOK,TS val 17840596 ecr 0,nop,wscale 7], length 0
02:32:47.561262 IP 192.168.14.13.80 > 192.168.14.27.55980: Flags [S.], seq 3005208540, ack 4025842405, win 28960, options [mss 1460,sackOK,TS val 11035968 ecr 17840596,nop,wscale 7], length 0
02:32:47.561615 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [.], ack 3005208541, win 229, options [nop,nop,TS val 17840597 ecr 11035968], length 0

下面结合上图和下面三次握手示意图,解释握手细节:

第一行显示客户端192.168.14.27先发送一个seq 4025842404给服务端,对应下面三次握手示意图中的SYN seq=x

第二行显示服务端192.168.14.13确认第一行的请求:seq 4025842404, ack的值为第一行的seq值+1,即(ack 4025842405),同时发送一个请求序列号seq 3005208540。对应下图三次握手中的(SYN seq=y, ACK x+1)

第三行显示客户端192.168.14.27确认服务端的请求序号(第二行中的seq 4025842405),ack的值为第二行的seq值+1,即(ack 3005208541)对应下图tcp三路握手中的 (ACK y+1)

tcpdump监控tcp三次握手和四次断开

五、数据传输

02:32:47.561823 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [P.], seq 4025842405:4025842482, ack 3005208541, win 229, options [nop,nop,TS val 17840597 ecr 11035968], length 77: HTTP: GET / HTTP/1.1
02:32:47.561839 IP 192.168.14.13.80 > 192.168.14.27.55980: Flags [.], ack 4025842482, win 227, options [nop,nop,TS val 11035969 ecr 17840597], length 0
02:32:47.562322 IP 192.168.14.13.80 > 192.168.14.27.55980: Flags [P.], seq 3005208541:3005208787, ack 4025842482, win 227, options [nop,nop,TS val 11035970 ecr 17840597], length 246: HTTP: HTTP/1.1 200 OK
02:32:47.562749 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [.], ack 3005208787, win 237, options [nop,nop,TS val 17840598 ecr 11035970], length 0

第一行表示三次握手成功之后,客户端向服务器发送HTTP:GET请求,序号为4025842405:4025842482,seq=x+1(即,4025842404+1

第二行表示服务器收到请求之后给客户端发送了一个ack的确认信息

第三行表示服务器发送HTTP状态200给客户端,序号为3005208541:3005208787,seq=y+1(即,3005208540+1

第四行表示客户端收到信息后给服务器发送了一个ACK的回复信息

tcpdump监控tcp三次握手和四次断开

六、四次断开分析(seq相对本地进行累加计算,本地ack等于对端seq+1)

02:32:47.563151 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [F.], seq 4025842482, ack 3005208787, win 237, options [nop,nop,TS val 17840598 ecr 11035970], length 0
02:32:47.563845 IP 192.168.14.13.80 > 192.168.14.27.55980: Flags [F.], seq 3005208787, ack 4025842483, win 227, options [nop,nop,TS val 11035971 ecr 17840598], length 0
02:32:47.564286 IP 192.168.14.27.55980 > 192.168.14.13.80: Flags [.], ack 3005208788, win 237, options [nop,nop,TS val 17840599 ecr 11035971], length 0

第一行表示客户端192.168.14.27主动发送一个FIN给服务器192.168.14.13,对应下图的FIN seq 4025842482

第二行表示服务器192.168.14.13确认了客户端4025842482,seq+1(即,ack 4025842483);另外发送一个FIN seq 3005208787

第三行表示客户端确认了服务器的FIN 3005208787,seq+1(即,3005208788)

tcpdump监控tcp三次握手和四次断开

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95286.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!