总结一下工作中常用到的tcpdump抓包命令
1、tcpdump 'port 10000' -i eth0 -S
说明:利用tcpdump监控tcp连接三次握手和关闭四次握手
先在192.168.11.220上运行服务端程序,然后在192.168.11.223上运行客户端程序。同时在两个服务器上以root用户执行tcpdump工具,监控10000端口
1)建立连接时服务端220的监控内容如下:
下面结合上图和下面三次握手示意图,解释握手细节:
第一行显示客户端192.168.11.223先发送一个seq,1925249825给服务端,对应下面三次握手示意图中的SYN J
第二行显示服务端192.168.11.220(npsc-220)确认第一行的请求:seq 1925249825, ack的值为第一行的seq值+1,即(ack 1925249826),同时发送一个请求序列号821610649。对应下图三次握手中的(SYN K, ACK J+1)
第三行显示客户端192.168.11.223确认服务端的请求序号(第二行中的seq 821610649),对应下图tcp三路握手中的 (ACK K+1)
由于代码中服务端建立连接后直接给客户端发送本地时间的数据给客户端,所以上面第一行中的信息可以看出由npsc-220(服务端)发送数据给客户端192.168.11.223,请求序号为:821610650:821610676 共26个字节,
第二行表示客户端223收到数据后给服务端的发送了一个ack的确认信息
由于我的程序是由服务端主动关闭连接,所以和下图的四次握手示意图稍微有些差别
第一行显示:服务端(npsc-220)主动发送了一个FIN给客户端192.168.11.223,对应下图的FIN M ,其中M的值为821610676
第二行显示:客户端192.168.11.223确认了服务端的821610676(即下图的ACK M+1, 即ack 821610677),并发送了一个FIN给服务端,对应下图的FIN N
第三行显示:服务端(npsc-220)确认了客户端的FIN ack 19252429827,即下图的ACK N+1 ,
下图是断开连接的四次握手示意图