UDP协议

发布时间:2024年01月19日

? 作者:小胡_不糊涂
🌱 作者主页:小胡_不糊涂的个人主页
📀 收录专栏:JavaEE
💖 持续更文,关注博主少走弯路,谢谢大家支持 💖

1. 报文结构

在这里插入图片描述

  • 16位UDP长度, 表示整个数据报(UDP?部+UDP数据)的最大长度;
  • 如果校验和出错,就会直接丢弃。

什么是检验和?
网络传输中,由于一些外部干扰,就可能会出现数据传输出错的情况。因此,就需要有办法,能够识别出出错的数据。校验和,就是这样的一种检查手段。

校验和本质上是一个字符串,体积比原始的数据更小又是通过原始的数据生成的。
原始数据相同,得到的校验和就一定相同。反之校验和相同,原始数据大概率相同(理论上会存在不同的情况,实际的概率非常低可以忽略不计)

校验和的计算:在UDP中使用的是CRC算法(循环冗余算法)。
把当前要计算校验和的数据,每个字节都进行累加,把结果保存到这个两个字节的变量中。
如果中间某个数据,出现传输错误,第二次计算的校验和就会和第一次不同。
但是CRC这个算法可能会导致两个不同的数据,得到相同的crc校验和的概率比较大。

为了避免上述问题,还有一种方法也可以计算校验和:md5算法

md5三个特点:

  • 定长:无论原始数据有多长,计算得到的md5都是固定长度
  • 分散:对于大部分内容都一样的原始数据,只要其中一个字节不同,得到的md5值差异就会很大
  • 不可逆:由原始数据计算md5是很容易的;但是由md5还原出原始数据是很难的

2. 特点

UDP传输的过程类似于寄信;

  • ?连接:UDP协议本身不会存储对端的信息,所以要在发送数据的时候显式指定要传输给谁。也就是知道对端的IP和端?号就直接进?传输,不需要建?连接;
  • 不可靠:没有确认机制,没有重传机制;如果因为?络故障该段?法发到对?,UDP协议层也不会给应?层返回任何错误信息;
  • ?向数据报: 不能够灵活的控制读写数据的次数和数量。应?层交给UDP多?的报?,UDP原样发送,既不会拆分,也不会合并;
  • 全双工:通过一个Socket,既可以send,也可以receive。

UDP协议?部中有?个16位的最大长度,也就是说?个UDP能传输的数据最??度是64K(包含UDP?部),然?64K在当今的互联?环境下,是?个?常?的数字。
如果我们需要传输的数据超过64K,就需要在应?层?动的分包,多次发送,并在接收端手动拼装。

基于UDP的应?层协议:

  • NFS: ?络?件系统
  • TFTP: 简单?件传输协议
  • DHCP: 动态主机配置协议
  • BOOTP: 启动协议(?于?盘设备启动)
  • DNS: 域名解析协议
  • 也包括自己写UDP程序时?定义的应?层协议
文章来源:https://blog.csdn.net/iLoyo_/article/details/135698543
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。