2014-10-29 28 views
-2

据我们所知,TCP数据包大小的绝对限制是64K(65535字节),实际上这远远大于您将看到的任何数据包的大小,因为较低层(例如以太网)具有较低的分组大小。例如,以太网的MTU(最大传输单位)为1500字节。在TCP中发送大于64K的数据包

我想知道,有没有任何方法或任何工具,发送大于64k的数据包?

我想测试面对数据包大于64k的设备!我的意思是我想看看,如果我发送一个大于64K的数据包,它的行为如何?它会放弃它的一部分吗?或者是其他东西。

所以:

1-如何发送这个大包?这是什么适当的层?

2-接收器的行为如何?

回答

3

有没有这样的事情作为一个TCP数据包。 TCP数据在段中发送和接收,在您使用的API范围内可以达到您喜欢的那么大,因为它们可以由多个IP数据包组成。在接收端,TCP与字节流无法区分。

NB 与此无关,或其他任何事情。

3

IP数据包格式只有16位的大小的数据包,所以你将无法创建一个大于64k大小的数据包。见http://en.wikipedia.org/wiki/IPv4#Total_Length。由于TCP使用IP作为底层,因此这里也适用此限制。

+0

是否有任何方式或设备发送比这更大的数据包?我的意思是没有办法通过一起传送一些字节来创建一个数据包,例如65K数据包并将其连续发送?网卡(NIC)是否将数据拆分为数据包或应用程序发送数据包? – TheGoodUser 2014-10-29 10:18:20

+3

“物理”网络数据包甚至比“逻辑”IP数据包小,请参阅http://en.wikipedia.org/wiki/Ethernet_frame和http://en.wikipedia.org/wiki/Jumbo_frame,以便您有限制在数据包格式固有的多层次上,而且这不仅仅是软件强制限制。 – 2014-10-29 11:10:20