博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【调试工具】tcpdump
阅读量:6450 次
发布时间:2019-06-23

本文共 4335 字,大约阅读时间需要 14 分钟。

原文地址:

在调试网络通信程序是tcpdump是必备工具。tcpdump很强大,可以看到网络通信的每个细节。如TCP,可以看到3次握手,PUSH/ACK数据推送,close4次挥手,全部细节。包括每一次网络收包的字节数,时间等

最简单的一个使用示例:

sudo tcpdump -i any tcp port 11211

  • -i 参数制定了网卡,any表示所有网卡

  • tcp 指定仅监听TCP协议

  • port 制定监听的端口

tcpdump需要root权限 需要要看通信的数据内容,可以加 -Xnlps0 参数,其他更多参数请参见网上的文章

演示一个memcache的连接,赋值,取值,关闭连接过程

执行命令:

telnet 10.8.34.27 11211

运行结果:

15:14:34.336031 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [S], seq 3049437196, win 14480, options [mss 1460,sackOK,TS val 910488745 ecr 4129152319,nop,wscale 7], length 015:14:34.336057 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [S.], seq 3663074357, ack 3049437197, win 14480, options [mss 1460,sackOK,TS val 4129152433 ecr 910488745,nop,wscale 7], length 015:14:34.336159 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [.], ack 1, win 114, options [nop,nop,TS val 910488745 ecr 4129152433], length 0

执行命令:

get userId

运行结果:

15:23:40.025373 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [P.], seq 15:27, ack 6, win 114, options [nop,nop,TS val 911034453 ecr 4129686634], length 1215:23:40.025571 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [P.], seq 6:35, ack 27, win 114, options [nop,nop,TS val 4129698122 ecr 911034453], length 2915:23:40.025768 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [.], ack 35, win 114, options [nop,nop,TS val 911034453 ecr 4129698122], length 0

执行命令:

set username 0 0 4

运行结果:

15:27:45.985897 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [P.], seq 153:173, ack 160, win 114, options [nop,nop,TS val 911280417 ecr 4129926755], length 2015:27:46.025059 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [.], ack 173, win 114, options [nop,nop,TS val 4129944122 ecr 911280417], length 0

运行命令:

nick

运行结果:

15:28:47.625886 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [P.], seq 173:179, ack 160, win 114, options [nop,nop,TS val 911342058 ecr 4129944122], length 615:28:47.625910 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [.], ack 179, win 114, options [nop,nop,TS val 4130005722 ecr 911342058], length 015:28:47.626046 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [P.], seq 160:168, ack 179, win 114, options [nop,nop,TS val 4130005723 ecr 911342058], length 815:28:47.626204 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [.], ack 168, win 114, options [nop,nop,TS val 911342058 ecr 4130005723], length 0

执行命令:

get username

运行结果:

15:29:59.978653 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [P.], seq 179:193, ack 168, win 114, options [nop,nop,TS val 911414421 ecr 4130005723], length 1415:29:59.978743 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [P.], seq 168:199, ack 193, win 114, options [nop,nop,TS val 4130078075 ecr 911414421], length 3115:29:59.978867 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [.], ack 199, win 114, options [nop,nop,TS val 911414421 ecr 4130078075], length 0

执行命令:

quit

运行结果:

15:30:52.755257 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [P.], seq 193:199, ack 199, win 114, options [nop,nop,TS val 911467215 ecr 4130078075], length 615:30:52.755534 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [F.], seq 199, ack 199, win 114, options [nop,nop,TS val 4130130852 ecr 911467215], length 015:30:52.755843 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [F.], seq 199, ack 200, win 114, options [nop,nop,TS val 911467215 ecr 4130130852], length 015:30:52.755865 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [.], ack 200, win 114, options [nop,nop,TS val 4130130852 ecr 911467215], length 0
  • 15:30:52.755865 时间带有精确到微妙

  • 10.8.34.13.36686 > 10.8.34.27.memcache 表示通信的流向,36686是客户端,memcache是服务器端

  • [S] 表示这是一个SYN请求

  • [.] 表示这是一个ACK确认包,(client)SYN->(server)SYN->(client)ACK 就是3次握手过程

  • [P] 表示这个是一个数据推送,可以是从服务器端向客户端推送,也可以从客户端向服务器端推

  • [F] 表示这是一个FIN包,是关闭连接操作,client/server都有可能发起

  • [R] 表示这是一个RST包,与F包作用相同,但RST表示连接关闭时,仍然有数据未被处理。可以理解为是强制切断连接

  • win 114是指滑动窗口大小(接收缓存的窗口大小)

  • length 12指数据包的大小

三次握手部分:

16:01:29.583827 IP 10.8.34.13.45468 > 10.8.34.27.memcache: Flags [S], seq 2309185558, win 14480, options [mss 1460,sackOK,TS val 913304024 ecr 4131967648,nop,wscale 7], length 0
  • Flags是[S],表明是syn建立连接包(即三次握手的第一次握手)

  • seq

    2309185558序号为2309185558,这个其实就是tcp三次握手的第一次握手10.8.34.13.45468发送syn请求建立连接包

  • win 14480,表示窗口大小为14480字节

  • options [mss 1460,sackOK,TS val 913304024 ecr 4131967648,nop,wscale

    7]为tcp首部可选字段,

  • mss

    1460表示mss是发送端(client)通告的最大报文长度,发送端将不接收超过这个长度的tcp报文段(这个值和MTU有关)。sackOK表示发送端支持并同意使用SACK选项。wscale

7表示发送端使用的窗口扩大因子为7

转载地址:http://arlwo.baihongyu.com/

你可能感兴趣的文章
一键生成表结构说明文档的参考,数据字典生成方式参考
查看>>
CCNP课堂练习一:详解交换机vlan的介绍及通过交换机从逻辑上划分区域配置
查看>>
awk实际应用:文本合并
查看>>
Silverlight发布时的优化工作(2)
查看>>
Visual Studio 2010 Ultimate测试体系结构
查看>>
推荐《认知与设计——理解UI设计准则》读书笔记
查看>>
Windows 2003 AD升级至Windows 2012 AD之DHCP服务器迁移
查看>>
创建和管理表
查看>>
手机视频开发包
查看>>
Nagios短信报警功能通过飞信实现
查看>>
活动目录系列之一:基本概念
查看>>
DNS原理介绍和具体搭建DNS
查看>>
MDOP中的诊断和恢复工具——DaRT
查看>>
mysql dba系统学习(17)mysql的备份和恢复的完整实践
查看>>
Flink SQL 功能解密系列 —— 流计算“撤回(Retraction)”案例分析
查看>>
MS虚拟化架构部署XenDesktop5系列五
查看>>
Properties 类的使用
查看>>
iOS开发-UIWebView加载本地和网络数据
查看>>
JQuery利用sort对DOM元素进行排序
查看>>
Ubuntu:带着Android的芯 走着微软的路
查看>>