udp最大长度问题
来源:4-8 案例实操-TCP基础数据传输-2
慕神7063142
2019-01-15
老师,您好,我对UDP的最大长度不是很理解,length字段是16位,为什么可存储的长度就是2^16-1=65535个字节呢,为什么单位是字节不是其他的呢,这点我想不太明白
写回答
2回答
-
嗯,这个我一个个解释哈。
首先传递的数据在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
20 -
g29tony
2019-09-17
length字段16位,表示这个length的值(2进制)最大是 1111 1111 1111 1111,转换为10进制就是65535,
而length是用来表示数据的长度的,其单位是字节,因此UDP的单个包最大长度是65535 - 8
00
相似问题