UDP数据包允许的最大数据长度

理论上,一个UDP数据包最大为2^16,也就是65536,那么最大的数据长度就是:65536 - 20(IP头) - 8(UDP头) = 65507 bytes。

但是,在网络传输的时候有一个MTU(最大传输单元),如果包大小超出了MTU,将会被拆分传输,由于UDP并不是可靠的传输,分片可能会丢失,所以一般情况下都不会这样做,也就是UDP数据包最大不超过MTU。

以太网(Ethernet)MTU的默认值是1500,所以这个时候UDP包的最大数据长度就是:1472 = 1500 - 20 -8 bytes。

而在因特网(Internet)标准MTU值为576,所以这个时候UDP包的最大数据长度就是:508 = 576 - 60(IP头) - 8(UDP头) bytes。

基于以上原因,一般情况下一个DNS的UDP包的最大长度是512 bytes。

2014年07月31日