请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

udp最大长度问题

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

正在回答

2回答

Qiujuer 2019-01-16 09:09:02

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

首先传递的数据在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 回复 有任何疑惑可以回复我~
g29tony 2019-09-17 17:34:28

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

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

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信