<JavaEE> 协议格式 -- 传输层协议 UDP

目录

一、UDP协议格式长啥样?

二、端口号和IP地址

1)UDP协议中包含哪两个端口号?

2)有没有包含IP地址?

三、UDP报文长度

1)UDP报文长度最长多长?

2)UDP报文的组成?

四、校验和

1)什么是校验和?

2)为什么使用校验和?

3)UDP的校验和是如何计算的?

4)更合理的算法:md5算法 简介

五、UDP协议通讯的特点


一、UDP协议格式长啥样?

<JavaEE> 协议格式 -- 传输层协议 UDP_第1张图片


二、端口号和IP地址

1)UDP协议中包含哪两个端口号?

UDP协议中包含源端口号和目的端口号,各占2个字节。

2)有没有包含IP地址?

不包含IP地址,IP地址在网络层中载入。

三、UDP报文长度

1)UDP报文长度最长多长?

“UDP报文长度”这个属性,占用2个字节,即16位比特位,可以表示的范围在0~65535之间
与“UDP报文长度”这个属性的表示范围相同,UDP数据报最长只能放下64kb的数据

2)UDP报文的组成?

数据报长度=报头+荷载

四、校验和

1)什么是校验和?

校验和是计算机中非常广泛使用的概念。
校验和本质上是一个字符串,字符串根据原始数据通过某种算法计算生成。
相同的原始数据的校验和一定是一致的,不同的原始数据的校验和通常是不一致的。
也存在不同数据的校验和相同的可能,但是概率极小,可以忽略不计。

2)为什么使用校验和?

网络传输中存在大量外部干扰,可能导致数据传输出错,如发生高低电平变化的“比特翻转”等情况。
这种情况下,接收方就需要验证收到的数据与发出的数据是否在传输过程中发生了变化
这种验证就是通过校验和进行验证。

如果校验和出错,数据会被直接丢弃。

3)UDP的校验和是如何计算的?

UDP使用CRC算法,又称为循环冗余算法。
“校验和”这个属性的大小也是2个字节。
算法将当前要计算的数据的每个字节进行累加,即使溢出也会继续计算,最后将结果保存到“校验和”中。
CRC算法存在缺陷,使用这种算法,两个不同数据得到相同校验和的概率比较大。

4)更合理的算法:md5算法 简介

md5算法通过一系列复杂公式计算校验和。
md5算法存在以下特点:
<1> 计算结果,长度固定
<2> 结果分散。即使两个原始数据内容只有一点差异,计算得到的校验和差异都会非常大。这个特点也使得md5算法非常适合作为hash算法。
<3> 不可逆。在现有计算机算力下,md5算法无法通过结果逆向计算得出原始数据。

五、UDP协议通讯的特点

1> 无连接
UDP协议通信时不会存储对端信息,需要在发送时显式指定传输对象。
2> 不可靠
没有确认机制,没有重传机制;发送数据后不关心数据是否正确送达。
3> 面向数据报
不能灵活的控制读写数据的次数和数量。
4> 全双工
通过一个套接字(socket),既可以发送(send),又可以接收(receive)。

阅读指针 -> 《协议格式 -- 传输层协议 TCP》

链接生成中.........

你可能感兴趣的:(JavaEE,udp,网络,java-ee)