【UDP的报文结构】

特点

  • 无连接:无需建联断联,发完即走,就像发消息一样,不需要建立连接,只需要消息发出和被收到
  • 不可靠传输:不提供任何传输层的可靠性保障机制,后面说到TCP的时候会提到什么是可靠什么是不可靠
  • 面向数据报:保边界,一次发送一次接收,整包交付,应用层交给UDP多长的报文,UDP都原样照发
  • 全双工:同一端口对可同时收发数据。半双工就像单向车道一样,只能单车通行,不能双车对向行驶。全双工就是双向车道

结构

  • UDP数据报 = 报头 + 载荷(应用层数据包)
  • 报头和载荷之间可以想象成字符串拼接的过程
  • UDP的载荷就负责承载数据包里的内容
  • UDP报头一共4个字段,一个字段2字节,一共8字节
  • 两个端口号都是2个字节来表示的,所以取值是0到65535
  • 数据报长度:使用两个字节来表示,用这一个数据来表示,一个UDP数据报有多长。
  • 由于是两个字节来表示的,所以这里能表示的最大值就是64KB(65535),因此一个UDP数据报最大长度就是64KB,无法更长了。
  • 一旦整个数据报的长度超出了64KB此时就可能会出现数据截断,导致原本数据是完整的,但是后面的部分表示不出来,没了

总的UDP数据报能表示的最大长度是64KB,载荷部分实际能够承担的最大长度应该是64KB - 8(自身的),64KB - 8 约等于 64KB,我们使用语言描述的时候就会采取近似值

  • 校验和:在网络传输的过程中,数据可能受到外界环境的干扰,发生比特反转,然后坏掉。网络中的校验和并非是简单的按照长度或者数量作为校验的标准,而是一定要让数据的内容能够参与进去。
  • UDP中,校验和,使用比较简单的方式-->CRC算法(循环冗余校验)来完成校验
  • 比如,要生产一个两个字节的校验和,这里我们写一段伪代码
short 复制代码
for(遍历取出数据报中的每个字节的数据){
      checksum += 当前字节的数据
 }
  • 在加的过程中,数据可能比较大,会超出short两个字节的范围,我们也不需要在意,因为最后都是一个固定的结果
  • UDP数据报发送方,在发送前,先计算一遍CRC,然后把算好的CRC值放到UDP数据报的校验和中,接下来数据包到达对端,对端接收数据之后,也会再计算一般CRC,然后对比两边计算出来的校验和是否一致,如果不一致,说明在传输的过程中损坏了
  • 严格来说,校验和只能用来证明真伪,如果数据出错了,是无法确保这个数据100%正确。但在实践中可以近似的认为校验和一致,原来的数据就一致
  • ⚠️如果有多个比特位发生了,校验和是有小概率出现,恰好还和之前算出的校验和一样的情况。这样的情况概率比较低,可以忽略不计,如果希望这里有更高的检查精度,就需要用到其他更为严格的校验和算法了

高精度校验和算法

  • md5算法是业界常用的校验和算法
  • md5的背后有一系列的数学公式,来进行计算,不同于CRC这么简单
  • 认识一下md5的特点
  • 1.定长:无论原始数据有多长,计算出来的md5的最终值都是固定长度
  • 2.分散:计算md5的过程中,原始数据,只需要变化一点点,算出的md5值就会有很大的差异,在网络传输中,如果出现了比特翻转,意味着只是极少的比特位翻转了,也会导致最终的md5差异很大
  • 3.不可逆:把数据计算成md5值的过程很简单,但是给你一个算好的md5值,让你还原回原始的字符串,理论上是无法完成的。从原始的字符串到md5这个过程,有很多的信息量损失了,就像是木头到纸的过程,你看着一张纸很难想象到它是由木头制作而来的。
  • 由于这些特性,md5也可以用于一些加密的场景,很多网站都会采取密码加密存储的方式,防止密码的明文泄露
相关推荐
长安11089 小时前
web后端----HTTP协议与浏览器F12
前端·网络协议·http
Crazyong10 小时前
FreeRTOS-任务通知-1
网络
JdayStudy10 小时前
SIR 网络传播仿真软件说明书
开发语言·网络·php
szm022510 小时前
计算机网络
网络
JicasdC123asd10 小时前
密集残差瓶颈网络改进YOLOv26特征复用与梯度传播双重优化
网络·yolo·目标跟踪
weixin_4492900111 小时前
智能盒子-Agent-Skill-执行逻辑架构
网络·架构
2601_9492210311 小时前
CFCA牵头跨境电子签名互认 以信任链赋能海南自贸港高水平开放
网络·信任链
茶杯梦轩11 小时前
面试常问:DNS,CDN,Cookie,Session和Token详解及实战避坑指南
后端·网络协议·面试
Java成神之路-11 小时前
HTTP 协议进化史:从 1.0 到 3.0
网络·网络协议·http
先知后行。12 小时前
canopen
网络