Zhang_Jiawen
4 Tellurium

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(7月14日更新)

看到有人转载把题目改成:如果看了这个还是不会Wireshark,就去掐死写文章的妹纸。我了个去。

happydanye
1 Copper

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(7月14日更新)

写的真好。期待早日给出过滤条件的那两张。

请教个问题:怎么升级/替换 wireshark里面的协议分析器?我用wireshark来抓cmpp(中国移动短消息协议)包,但是wireshark的协议分析器是cmpp1.0,现在网上通常都是2.0,这样我在分析cmpp包的时候,wireshark会说这是个malformed packet,因此就无法给出直观的解释。

另外,能推荐比较优秀的数据包协议分析器么?

0 项奖励
happydanye
1 Copper

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(7月14日更新)

应该改成去追比较好。。。哈哈。。。

0 项奖励
Yanhong1
4 Beryllium

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(7月14日更新)

这个建议好,哈哈。还可以出些题,设置闯三关游戏

0 项奖励
Zhang_Jiawen
4 Tellurium

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(7月14日更新)

这个好像挺复杂的,我没有替换过,找到一些信息供参考:

假设已经有了解析器源文件,


插件型

为了编译该解析器代码来创建该插件,除了解析器的源代码packet-foo.c外,还需要在该源代码文件所在目录下创建下列一些文件,其包含了windows平台与unix/linux平台下的各自所需文件。①makefile.am —— unix/linux的makefile模板;②makefile.common ——包含插件文件的名称;③makefile.nmake ——包含wireshark插件的windows平台下的makefile;④moduleinfo.h ——包含插件版本信息;⑤moduleinfo.nmake ——包含windows平台下动态链接库(dll)的版本信息;⑥packet-foo.c ——自定义协议解析器的源代码;⑦plugin.rc.in ——包含windows平台下的dll资源模板。


makefile.commonmakefile.am文件必须修改,来反映相关的文件与解析器名称。moduleinfo.h moduleinfo.nmake文件必须填写版本信息。把该解析器编译成一个动态连接库或共享库,并复制到已安装wiresharkplugin目录下,即可使用。

内置型

内置型协议解析器源代码都在目录wireshark-1.2.0\\epan\\dissectors下。此处,我们以添加udp协议为例,说明内置型添加协议解析器的步骤:

第一步:将要添加的协议解析器源文件packet-udp.c和头文件packet-udp.h放在此目录下;

第二步:在此目录下修改makefile.common文件,分别将源文件和头文件名添加到对应的dissector_srcdissector_include宏下面。

第三步:最后对整个工程进行编译连接,就可以把要添加的协议解析器,如同wireshark大多数内置解析器一起被整合编译到libwireshark中。

0 项奖励
Zhang_Jiawen
4 Tellurium

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(7月14日更新)

数据包协议分析器Capsa,这篇文章可以供参考:十大免费又好用的网络分析工具

0 项奖励
happydanye
1 Copper

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(7月14日更新)

感谢回复。确实复杂,需要改源代码重新编译,收益超过付出。等等看吧,暂时就对着协议看16进制的码了。

0 项奖励
happydanye
1 Copper

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(7月14日更新)

感谢回复。科来大概看了一下,支持的协议不如wireshark多。我估计不会支持cmpp这种较冷门的协议。其实我对wireshark支持cmpp也是有点惊喜的。您文章写的很好,期待您的关于过滤的两章。谢谢!!!

0 项奖励
Zhang_Jiawen
4 Tellurium

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(7月14日更新)

感谢支持。这个帖子一直是看的人多讨论的人少,我有时候也犹豫下一节应该写什么。欢迎更多看到帖子的同学加入讨论喜欢哪方面的内容。

0 项奖励
happydanye
1 Copper

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(6月24日更新)

这节很有实用意义(狙击网络高延时点)。正好最近处理问题用上了(非常感谢Zhang,Jiawen),分享下应用的思路(也有跟文中不同的地方)。

问题:业务突然变慢,客户端(确定)和服务端(应该)都没有改动。

问题定位:根据经验判断是网络质量变差,现在需要验证判断。(服务端无法协调联查,但服务端处理很多客户端,未见其他地方的客户端有同样问题)。

验证过程:首先断掉客户端重连,用wireshark抓包发现tcp三次握手都还行。客户端发数据包也很快,服务端回tcp的ack也挺快,但数据包的响应就慢了一些。客户端发大数据包的时候,干脆就没响应包回来(但也不是必然)。根据逻辑,服务端和网络都有可能有问题,客户端出问题的可能可以排除。不过业务的服务端是nb的中国移动,客户端所在的网络是中国电信的网络,因此我们基本可以把问题归结为网间互通。

有趣的问题是:小包看起来是ok的,大数据包延迟(或丢包)的现象很严重。

另外有三个问题想请教下Zhang,Jiawen:

1、在wireshark上,如何方便查一个tcp报对应的响应包(或响应包对应的原始包)。可以手工根据sequence id和ack id来判断,但是wireshark提供方便的工具么?----我们的业务是在一个tcp长连接中发很多包。

2、有没有技巧可以方便的统计延时的情况,例如某时间段中,发包到收到ack的延时超过1s的数据包数量?

3、有没有技巧可以方便的统计丢包的情况,例如某时间段中,发出去的包没收到ack的有多少?

0 项奖励