
问题来自日志信息. 在此处进行汇总,以后再添加新内容.

在链路层,以太网的物理特性决定了数据帧的长度(46 + 18)-(1500 + 18),其中18是链路层的第一个和最后18个字节,也就是说数据帧的最大内容为1500(不包括帧头和帧尾). 实际上,这1500是IP数据报在网络层的长度限制,即MTU(最大传输单元)为1500;

在网络层,由于IP数据包的报头占用20个字节,因此此MTU为1500-20 = 1480,此1480用于存储来自TCP的TCP数据包或来自UDP Reported的UDP数据;

在传输层,UDP数据包的报头占用8个字节,因此此MTU为1480-8 = 1472,这是用户可以使用的部分;

因此,在应用程序层中udp数据包监视,数据的最大长度为1472. (当我们的UDP数据包中的数据大于MTU(1472)时,发送方的IP层需要分片以便传输udp数据包监视,接收方的IP层需要执行数据报重组,因为UDP是不可靠的传输协议,如果碎片丢失并且重组失败,则UDP数据包将被丢弃.
因此,在普通局域网环境中使用UDP传输时,最好将UDP数据控制在1472以下.
IP数据包的最大长度为65535,因为2个字节用于描述IP报头中数据包的长度,并且2个字节可以表示的大小为65535;
在特定功能方面:
使用UDP协议发送时,可以使用sendto函数发送的最大数据长度为: 65535-IP标头(20)-UDP标头(8)= 65507字节. 使用sendto函数发送数据时,如果发送的数据长度大于此值,则该函数返回错误.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-214972-1.html
尤其是反舰导弹和机场
就大陆的现状而言