通过UDP发送netcat文件:不寻常的Wireshark输出

为了演示TCP和UDP之间的差异,我通过networking连接传输文件的内容,并logging与Wireshark的交互。 在TCP中一切看起来很正常,但是在UDP中有些奇怪。

我正在和A机一起听

netcat -ul 5000 

然后从机器B发送文件:

 netcat -u <ip address> 5000 < file.txt 

当我查看Wireshark日志时,通过UDP数据包得到了一半的信息,显然有一半通过IPv4,没有数据报(见下面的截图)。

Wireshark输出

难道这只是Wireshark在显示数据的方式上很怪异,或者是UDP中没有任何东西的信息的一半? 为什么?

你得到一个UDP数据包,它有你正在发送的文件的大小。 然后,UDP数据包被IP堆栈分割成几个IP数据包。

Wireshark显示原始IPv4碎片数据包和碎片整理的UDP数据包碎片。

如果上层发送比L2协议的MTU允许的更大的数据包,则这是在IP层上的标准操作行为。

在TCP协议中,协议找出主机之间最大的不可分片pathMTU,并使用该大小发送正确大小的数据包,从而不需要完成IP级别的分片。 这对协议操作有好处。

更新:

IPv4是处理networking操作的路由部分的L3(互联网层)协议。 UDP是在IPv4之上运行的L4(传输级别)协议。

对于你的问题具体回答:

这是Wireshark显示碎片数据的正常方式,显示了两个协议层。 如果您有HTTP请求,那么您将在Wireshark中看到IPv4 + TCP + HTTP解码的请求,这也是正常的。

一半的消息不是来自其他地方,而是在不同层次的协议栈上的相同数据。