2012-08-14 38 views
1

我使用python中的套接字来发送文件,并且我正在做一个数据包捕获,同时发送这些文件。但是,我发现每个数据包是1434字节而不是1500字节(我的系统上的MTU设置为1500字节)。数据包捕获看到1434字节,而不是1500字节

我附上了一些截图的数据包捕获。我需要以1500字节而不是1434字节发送数据包,有人能告诉我发生了什么事吗?

packet capture 1 packet capture 2

回答

3

TCP发送任何大小的段就是了通过网络发送;你不能从套接字层控制它。也许远程机器只能提供足够大的窗口来发送1314字节的数据(1314 + 14字节的以太网报头+20字节的IP报头,没有选项+ 20字节的TCP报头,没有选项= 1368),或者可能是不可用的不够宽,无法发送更多数据。

此外,你不应该来控制。 TCP提供了一个有序的字节流;数据包边界是不是在TCP中很重要!

+0

感谢您的答复,并对延迟回复感到抱歉,我有同样的想法,但我正在处理的工具需要一个数据包以1500字节发送。我通过更改该工具的要求来解决问题。 – hld619 2012-09-30 20:19:43

+0

如果该工具需要单独的TCP段具有一定的大小,那么该工具已被破坏,并通过删除该要求来修复它是正确的想法。 (要从TCP连接中读取* N *字节,单个'read()'将不起作用 - 您可能必须继续阅读,直到获得所有* N *字节。请确保您没有阅读*更多*除* N *字节,除非您可以稍后处理其余字节。) – 2012-09-30 22:36:21

相关问题