网络编程之UDP中一个包的大小最大能多大

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⽹络编程之UDP中⼀个包的⼤⼩最⼤能多⼤
读书笔记:
结论1:局域⽹环境下,建议将UDP数据控制在1472
字节以下
⼀定要知道
因为链路层的传输单元(MTU)是1500字节,1500字节中并不包含链路层的⾸尾18个字节。

1500字节是链路层的数据区。

udp数据包就是放在这个数据区中,
⽹络层是数据链路层的上层,所以,⽹络层IP数据报长度就是1500字节。

这1500字节包含了IP数据报⾸部+IP数据报的数据区。

1500-
20=1480,这1480的长度专门存放TCP传来的数据报: TCP或者UDP数据报。

由上可知,UDP数据报的长度为1480字节(含有报头),⽽UDP⾸部占有8个字节,故UDP的数据区长度为1472字节(1480-8=1472).
注意,上⾯这些都是理论数据。

丢包或者重组
因为UDP不保证数据的可靠性。

那么,当传给UDP数据区的长度⼤于1472时,此时,IP数据报的长度已经⼤于1500字节。

这时,IP层就需要将这个数据包分⽚发送并在接收端重组。

但是,如果分⽚传输的过程中出现丢包,怎么处理?⽐如,IP层需要将⼀个2000字节的数据包分为两个包A和B发出,接收端没有收到B仅收到A。

那么,IP层将会丢弃整个数据包,当然也就不会有重组了。

结论2:Internet编程时,建议将UDP数据控制在548
字节以下
⽹络中的设备繁多,可能设定的传输控制单元(MTU)的⼤⼩也不尽相同。

这样,同⼀段数据经历不同的设备,设备需要做很多繁琐的⼯作。

根据Internet的协议,MTU设置576字节。

实际中,我们应该尽量控制UDP数据报中的数据区的长度为548(576-8(⾸部长度)=548)字节以下。

unix⽹络编程第⼀卷⾥说:ipv4协议规定ip层的最⼩重组缓冲区⼤⼩为576!所以,建议udp包不要超过这个⼤⼩,⽽不是因为internet的标准MTU是576!。

相关文档
最新文档