udp 超出长度丢弃问题

UDP报文长度限制,在IPv4下是65507字节(65535-8字节UDP header-20字节 IPheader) 长度限制内的包都可以发
fragmentation发生在IP层,一个长UDP报文,会被分为若干个fragment,封成IP包发送接收端收到所有的fragment之后,会在IP层组装成一个完整的UDP datagram交给你的UDP recv函数
只要有一个fragment丢了,整个UDP报文就丢了
所以作为没有ACK的UDP协议,一般我们不希望出现分包发送的情形,以避免累积丢包率,导致实际报文的丢包率很高
根据IEEE的要求,IPv4的网络,至少要保证MTU不低于576,于是扣除一些IP、UDP header的长度,548长度的UDP包可以认为是不会发生fragmentation的
但是人们喜欢冗余,喜欢留余地,所以很多人实践中,把这个限制写成了512

https://stackoverflow.com/questions/20314308/understanding-how-to-send-larger-data-chunks-over-udp-reliably/20317315#20317315



https://stackoverflow.com/questions/900697/how-to-find-the-largest-udp-packet-i-can-send-without-fragmenting/900725#900725



https://stackoverflow.com/questions/1098897/what-is-the-largest-safe-udp-packet-size-on-the-internet



https://www.cnblogs.com/x_wukong/p/5995525.html



https://blog.csdn.net/hellozhxy/article/details/80280197



Category web