问一下,一个广播包最大能发多少?

mousefather 2006-11-17 08:26:07
我有个程序在局域网内用广播的方式发送数据包,当我包的大小小于1300字节的时候,接收端基本上都能接受到,可是当我把包大小加大到3000字节的时候就基本上接收不到了,大概发60000个包才能收到一个,难道是丢包了?也不会丢的那么严重吧?
我也尝试去设置发送和接收的socket的buffer大小,也没用
...全文
436 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mousefather 2006-11-20
  • 打赏
  • 举报
回复
两层三层是什么意识阿,是不是网卡要支持阿,我看过我的机器的MTU是1500,那是不是最大发送不能超过1500字节?
我做的实验是这样,如果我发送的包小于1300,发送10万个包,接受端最多丢一两个包,但是加大到3000字节,接受端丢包率会达到一半以上
captain_x 2006-11-19
  • 打赏
  • 举报
回复
2层的话要小于1500
3层的话应该65536的包是可以的
herryhuang 2006-11-19
  • 打赏
  • 举报
回复
首先假设你的“广播”是三层广播报文。

根据BSD经典实现,广播报文是不分片的,如果超过MTU,就直接扔了。

另一种可能是,由于你发包的速度太快,你的硬件或者驱动程序发送能力不足(或者对端设备接收能力不足),导致存在少量的丢包(所以我很怀疑“我包的大小小于1300字节的时候,接收端‘基本上’都能接收到”这句话里面的“基本上”到底是什么意思)。在这种情况下,由于少量的分片被丢弃,在接收的一端就有一些报文没有及时的重组,而停留在了重组的缓存中,随着这样的没有重组的分片报文越积越多,很快将重组缓存塞满,而后续来的报文依然是分片过的,这样就导致所有的报文都在接收段被丢弃了。你可以做一个实验,看看接受端在这种情况下开能不能接收分片的单播报文,就知道了。
wangjie_629 2006-11-18
  • 打赏
  • 举报
回复
丢大包应该是你设备的问题,你拿台笔记本一级级的排查。应该是可以收到65536的包
做鸡真好吃 2006-11-17
  • 打赏
  • 举报
回复
up~

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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