udp最大长度问题

来源:4-8 案例实操-TCP基础数据传输-2

慕神7063142

2019-01-15

老师,您好,我对UDP的最大长度不是很理解,length字段是16位,为什么可存储的长度就是2^16-1=65535个字节呢,为什么单位是字节不是其他的呢,这点我想不太明白

写回答

2回答

Qiujuer

2019-01-16

嗯,这个我一个个解释哈。

首先传递的数据在java中就是最基本的byte数组集合。每一个就是一个byte,而一个byte就是一个字节。所以我们常说字节。

然后我们需要明确一个byte是一个字节,一个字节就是8位。2个byte就是16位。

在udp传输的底层是把我们要发送的数据和头数据拼接后一起发送,而头字节是2个byte。

这里我们可以理解,当我们需要发送8个字节时,实际上发送了10个字节。

此时前面2字节是udp为我们加的,也就是2+8的结构。在这2个字节中存储了后面数据区的数据长度。当我们发送8字节在前2字节就存储了8这个值进去。

关于如何存储进去的我们不做讨论,可以看我的手记。

正因为前面2字节存储的数据区的长度值,而2字节是16位,可以存储的长度最大值就可以得到了。

2^16-1

2
0

g29tony

2019-09-17

length字段16位,表示这个length的值(2进制)最大是 1111 1111 1111 1111,转换为10进制就是65535,

而length是用来表示数据的长度的,其单位是字节,因此UDP的单个包最大长度是65535 - 8

0
0

Socket网络编程进阶与实战 系统掌握Socket核心技术

理论+实践,系统且深入掌握Socket核心技术,从容应对各种Socket应用场景的不二之选

2314 学习 · 476 问题

查看课程