udp发包大小

今天在用udt测试3G网络的时候,发现udt m_iss (也就是分包大小) udt 默认是1500 ,结果在3G上就是不能正常通信,在局域网里通信相当的棒,

后来发现是跟路由器有关,3G网络中超过1400KB的数据包就被阻挡了,kao ,郁了好久…   

udt 采用udp的发送和接收 ……最后我改成1300成功, 以下引用别人的知识:


udp最大发包大小:

65507 字节 = 65535 - 20 - 8,是一个理论值。


我建议您在设计程序的时候选择小于 PMTU 的 IP 分组大小,因为大于这个数值的分组可能被分片(否则无法发送),而分组交换的网络是不可靠的,存在着丢包。

IP 协议的发送方不做重传。接收方只有在收到全部的分片后才能 reassemble 并送至上层协议处理代码,否则在应用程序看来这些分组已经被丢弃。

假定同一时刻网络丢包的概率是均等的,那么较大的 IP datagram 必然有更大的概率被丢弃,因为只要丢失了一个 fragment,就导致整个 IP datagram 接收不到。不超过 PMTU 的分组是没有这个问题的。

一般地,在局域网中,UDP 分组的大小限制在 1472 字节内是安全的;在距离较近(100km 以内)的广域网中,1400 字节较为安全;距离较远的时候(如中美之间),我建议控制在 1300 字节,甚至 1200 字节。需要根据实际网络情况做出进一步的调整。

你可能感兴趣的:(udp发包大小)