linux – tcpdump在捕获期间截断到UDP数据包中有用数据的1472字节

我正在编写一个与网络一起工作的应用程序.为了进行一些测试,我需要重现前一天的流程.但与此同时,不允许停止当前工作的听众.我也无法重写现有程序以保存传入流.为了解决我的任务,我决定使用tcpdump.

我使用以下命令在目标计算机上运行tcpdump:

tcpdump -w capture.cap -n "dst host host.domain.com and port 5555"

当我用tcpick或scapy读取capture.cap时.我可以看到所有超过1472字节的有用数据被截断为长度为1472.但是在标题中它仍然写入了数据包的原始长度.
我可以判断,UDP数据包分裂为几个然后再连接.但是tcpdump可能会过滤掉所有没有标头的软件包(应该只出现在第一个数据包中)

有没有办法转储完整的UDP包?

解决方法

如果IP数据包大于发送数据包的网络链路的MTU,则IP会将其分段为适合网络的IP数据包;这是由IP层完成的,而不是UDP层.

以太网的MTU通常为1500字节(最大以太网数据包大小为1518,其中包括14字节的报头,1500字节的有效负载和4字节的FCS).如果没有选项,则IPv4标头为20个字节,UDP标头为8个字节,因此最大UDP有效负载大小为1500-28 = 1472.

因此,IP将数据包拆分为两个或多个片段,并在接收机器上重新组装它们.

有关tcpdump未捕获除第一个片段以外的任何片段的原因的讨论,请参阅相关问题.

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...