关于UDP最小包的问题

Bsi_l4 2015-12-10 05:51:38
一个死循环不断用UDP发1个字节,和一个死循环不断用UDP发2个字节,网络的负荷是否一样?
一个死循环不断用UDP发1个字节,和一个死循环不断用UDP发22个字节,网络的负荷是否一样?
一个死循环不断用UDP发1个字节,和一个死循环不断用UDP发2222个字节,网络的负荷是否一样?
...全文
450 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nswcfd 2015-12-14
  • 打赏
  • 举报
回复
minimal packet size of ethernet is 64 bytes
云霏阳 2015-12-11
  • 打赏
  • 举报
回复
1.不同的网卡实现不一样,有的会填充,有的不会,这完全取决于网卡的实现。 2.另外网卡即使填充数据的话,也不会修改ip头和udp头中的长度字段。
Bsi_l4 2015-12-11
  • 打赏
  • 举报
回复
引用 4 楼 Bsi_l4 的回复:
[quote=引用 3 楼 chj4129 的回复:] 这个是rfc的一个建议,具体实现取决于操作系统和网卡,目前在linux以及unix上,是可以发送出小于64字节的小报文的,你自己也可以测试一下。
我只会程序测试,不会测试网卡硬件,我用程序sendto()发一个字节肯定是不会报错的, 我是关心底层硬件是不是会填充一些字节来凑数?[/quote] 比如说,假设网卡往外发的最小单位是4个字节,我发1个字节,底层硬件就会填充3个字节,以满足最小单位,我发2个字节,底层硬件就会填充2个字节,以满足最小单位,会不会有这种情况?
Bsi_l4 2015-12-11
  • 打赏
  • 举报
回复
引用 3 楼 chj4129 的回复:
这个是rfc的一个建议,具体实现取决于操作系统和网卡,目前在linux以及unix上,是可以发送出小于64字节的小报文的,你自己也可以测试一下。
我只会程序测试,不会测试网卡硬件,我用程序sendto()发一个字节肯定是不会报错的, 我是关心底层硬件是不是会填充一些字节来凑数?
云霏阳 2015-12-11
  • 打赏
  • 举报
回复
这个是rfc的一个建议,具体实现取决于操作系统和网卡,目前在linux以及unix上,是可以发送出小于64字节的小报文的,你自己也可以测试一下。
Bsi_l4 2015-12-11
  • 打赏
  • 举报
回复
引用 1 楼 chj4129 的回复:
有一些区别: 1.当你用socket发送1个字节的udp报文的时候,发到网络上的报文实际长度为14 + 20 + 8 + 1 = 43字节,发送2个字节的话,实际发送44字节,这样网络负荷区别不大; 2.如果发送22字节,实际发送64字节,此时有一些区别,但是不明显 3.发送2222字节,此时实际发送2264字节,由于网络设备mtu通常为1500,从而需要分片;另外由于网络带宽都是一样的,如果发送的报文大,报文个数就会少,发送的报文小,报文个数就会多。 4.小包多了,网络实际带宽利用率就会降低,此时输出的大部分是各种协议的包头,输入的数据不多,另外小包多了,对接收设备的开销也会急剧加大。 5.不过在程序中用一个死循环来发送1字节的udp报文,由于性能问题,是很难将前兆网络发满的。
谢谢回复! 我在网上查说硬件设备存在一个最小发送包(64个字节),如果发送的数据包大小小于那个最小发送包的话,是不是会填充无用的字节以满足最小发送包大小?所以说发送1个字节和2个字节对网络的符合是不是一样的了?
云霏阳 2015-12-10
  • 打赏
  • 举报
回复
有一些区别: 1.当你用socket发送1个字节的udp报文的时候,发到网络上的报文实际长度为14 + 20 + 8 + 1 = 43字节,发送2个字节的话,实际发送44字节,这样网络负荷区别不大; 2.如果发送22字节,实际发送64字节,此时有一些区别,但是不明显 3.发送2222字节,此时实际发送2264字节,由于网络设备mtu通常为1500,从而需要分片;另外由于网络带宽都是一样的,如果发送的报文大,报文个数就会少,发送的报文小,报文个数就会多。 4.小包多了,网络实际带宽利用率就会降低,此时输出的大部分是各种协议的包头,输入的数据不多,另外小包多了,对接收设备的开销也会急剧加大。 5.不过在程序中用一个死循环来发送1字节的udp报文,由于性能问题,是很难将前兆网络发满的。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧