- 主题:一个udp包最大能传多少数据呢?
自己实验了下,服务器用的金山云,客户端在办公室
服务端用nc -lu来收包,客户端自己写的程序,直接udp发
实际测试一个udp包传输最大可以传16k数据过去。
但这时Tcpdump有提示:
UDP, bad length 16000 > 1472
大于16k的数据,也只能传16k过去,其它的就截断了
这里自己没搞懂,mtu不是1472吗?怎么16k的数据也能传过去呢?
16k能传,那为什么大于16k就传不过去呢?
这是受什么影响呢?
--
FROM 223.104.39.76
你需要买本计算机网络的教科书看看。里面讲得很清楚。这种知识太基础了,不适合在论坛上面说。
【 在 Daimon (天行健,君子以自强不息) 的大作中提到: 】
: 自己实验了下,服务器用的金山云,客户端在办公室
: 服务端用nc -lu来收包,客户端自己写的程序,直接udp发
: 实际测试一个udp包传输最大可以传16k数据过去。
: ...................
--
FROM 124.72.118.*
鱼神你太狠了
你是指udp协议定义最大64k吗?
实际网络中,为啥我只能传16k?这个要看书,看哪个章节?
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 你需要买本计算机网络的教科书看看。里面讲得很清楚。这种知识太基础了,不适合在论坛上面说。
--
FROM 223.104.39.76
理论最大值是指 IP 包最大 64K,实际扣掉头部。
如果超过 MTU 会分片发送。但是分片的 UDP 包要看路由器支不支持了。互联网的路由环境复杂,一般都会把 UDP 包的负荷控制在 1400 左右。多了互联网路由器说不定就丢了——比如你试一下发 UDP 到国外的主机,超过 1500 几乎不可能发送成功。
【 在 Daimon (天行健,君子以自强不息) 的大作中提到: 】
: 鱼神你太狠了
: 你是指udp协议定义最大64k吗?
: 实际网络中,为啥我只能传16k?这个要看书,看哪个章节?
: ...................
--
FROM 124.72.118.*
我刚才还真的试了下
linode的机器,给国内服务器发udp,一个包,传16k没问题
服务端:
nc -lu 9999 > a.txt
客户端:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.send(b'h' * 1000 * 17, ('xxxxx', 9999)
我试了手机网络、办公网络、国外服务器,都是16k囊艽16k以内能传,超过16k截断
我就是不知道这个16k的限制是哪里的限制
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 理论最大值是指 IP 包最大 64K,实际扣掉头部。
: 如果超过 MTU 会分片发送。但是分片的 UDP 包要看路由器支不支持了。互联网的路由环境复杂,一般都会把 UDP 包的负荷控制在 1400 左右。多了互联网路由器说不定就丢了——比如你试一下发 UDP 到国外的主机,超过 1500 几乎不可能发送成功。
--
FROM 223.104.39.76
看路由器啊。它不丢你就能发。它丢了你就不能发。
【 在 Daimon (天行健,君子以自强不息) 的大作中提到: 】
: 我刚才还真的试了下
: linode的机器,给国内服务器发udp,一个包,传16k没问题
: 服务端:
: ...................
--
FROM 124.72.118.*
我原来理解应该不同的网络环境差异很大
但试了好几个网络,全是16k
这个16k似乎是操作系统的限制
与路由器无关
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 看路由器啊。它不丢你就能发。它丢了你就不能发。
--
修改:Daimon FROM 223.104.39.76
FROM 223.104.39.76
办公室 -> 金山云:16k
linode -> 金山云: 16k
办公室 -> linode: 64k
金山云 -> linode: 64k
【 在 Daimon (天行健,君子以自强不息) 的大作中提到: 】
: 我原来理解应该不同的网络环境差异很大
: 但试了好几个网络,全是16k
: 这个16k似乎是操作系统的限制
: ...................
--
FROM 223.104.39.76
我不太清楚你的环境是怎么回事。反正我从自己电脑往金山云的 hk 区域发 UDP 包,没法超过 1500.
你确定一边发的,另外一边有收到吗?
【 在 Daimon (天行健,君子以自强不息) 的大作中提到: 】
: 办公室 -> 金山云:16k
: linode -> 金山云: 16k
: 办公室 -> linode: 64k
: ...................
--
修改:hgoldfish FROM 124.72.118.*
FROM 124.72.118.*
我整个金山云的hk区域试下
确实收到了,a.data文件内容是正确的
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 我不太清楚你的环境是怎么回事。反正我从自己电脑往金山云的 hk 区域发 UDP 包,没法超过 1500.
: 你确定一边发的,另外一边有收到吗?
--
FROM 223.104.39.76