UDP数据包的大小

问题来源于日志信息,在这里总结一下,后续在补充新的内容。

成都创新互联公司是一家企业级云计算解决方案提供商,超15年IDC数据中心运营经验。主营GPU显卡服务器,站群服务器,雅安机房托管,海外高防服务器,大带宽服务器,动态拨号VPS,海外云手机,海外云服务器,海外服务器租用托管等。

  1. 在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)---(1500+18),其中的18是链路层的首部和尾部18Bytes,也就是说数据帧的内容最大为1500(不包括帧头和帧尾),事实上,这个1500就是网络层的IP数据报的长度限制,即MTU(Maximum Transmission Unit)为1500;  

  2. 在网络层,因为IP包的首部要占用20字节,所以这的MTU为1500-20=1480,这个1480就是用来存放TCP传来的TCP报文段或者UDP传来的UDP数据报的;

  3. 在传输层,对于UDP包的首部要占用8字节,所以这的MTU为1480-8=1472,也就是用户可以使用的部分;


    所以,在应用层,你的Data最大长度为1472。 (当我们的UDP包中的数据多于MTU(1472)时,发送方的IP层需要分片fragmentation进行传输,而在接收方IP层则需要进行数据报重组,由于UDP是不可靠的传输协议,如果分片丢失导致重组失败,将导致UDP数据包被丢弃)。  

因此,在普通局域网络环境下,使用UDP传输的时候,建议将UDP的数据控制在1472以下比较好。

IP数据包的最大长度为65535,因为在IP包头中用2个字节来描述报文长度,2个字节所能表示的大小就是65535;

就具体函数而言:

    用UDP协议发送时,用sendto函数最大能发送数据的长度为:65535- IP头(20) - UDP头(8)=65507字节。用sendto函数发送数据时,如果发送数据长度大于该值,则函数会返回错误。


分享名称:UDP数据包的大小
转载来于:http://bzwzjz.com/article/jdgjgs.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站设计 重庆企业网站建设 响应式网站设计方案 定制网站建设多少钱 成都网站建设 手机网站制作设计 企业网站制作 成都网站制作 专业网站设计 成都网站建设 网站建设 企业网站设计 成都定制网站建设 网站制作 成都网站建设 成都商城网站建设 营销型网站建设 成都商城网站制作 上市集团网站建设 成都商城网站建设 成都网站建设公司 手机网站建设