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

目录

一、UDP协议格式长啥样?

二、端口号和IP地址

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

2)有没有包含IP地址?

三、UDP报文长度

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

2)UDP报文的组成?

四、校验和

1)什么是校验和?

2)为什么使用校验和?

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

[4)更合理的算法:md5算法 简介](#4)更合理的算法:md5算法 简介)

五、UDP协议通讯的特点


一、UDP协议格式长啥样?


二、端口号和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》

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

相关推荐
XiaoLeisj3 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
热爱跑步的恒川3 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面4 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程6 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
幺零九零零7 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
尢词7 小时前
SpringMVC
java·spring·java-ee·tomcat·maven
23zhgjx-NanKon7 小时前
华为eNSP:QinQ
网络·安全·华为
23zhgjx-NanKon7 小时前
华为eNSP:mux-vlan
网络·安全·华为
点点滴滴的记录8 小时前
RPC核心实现原理
网络·网络协议·rpc
Lionhacker8 小时前
网络工程师这个行业可以一直干到退休吗?
网络·数据库·网络安全·黑客·黑客技术