⭐ 作者:小胡_不糊涂
作者主页:小胡_不糊涂的个人主页
收录专栏:JavaEE
持续更文,关注博主少走弯路,谢谢大家支持
什么是检验和?
网络传输中,由于一些外部干扰,就可能会出现数据传输出错的情况。因此,就需要有办法,能够识别出出错的数据。校验和,就是这样的一种检查手段。
校验和本质上是一个字符串,体积比原始的数据更小又是通过原始的数据生成的。
原始数据相同,得到的校验和就一定相同。反之校验和相同,原始数据大概率相同(理论上会存在不同的情况,实际的概率非常低可以忽略不计)
校验和的计算:在UDP中使用的是CRC算法(循环冗余算法)。
把当前要计算校验和的数据,每个字节都进行累加,把结果保存到这个两个字节的变量中。
如果中间某个数据,出现传输错误,第二次计算的校验和就会和第一次不同。
但是CRC这个算法可能会导致两个不同的数据,得到相同的crc校验和的概率比较大。
为了避免上述问题,还有一种方法也可以计算校验和:md5算法
md5三个特点:
UDP传输的过程类似于寄信;
UDP协议⾸部中有⼀个16位的最大长度,也就是说⼀个UDP能传输的数据最⼤⻓度是64K(包含UDP⾸部),然⽽64K在当今的互联⽹环境下,是⼀个⾮常⼩的数字。
如果我们需要传输的数据超过64K,就需要在应⽤层⼿动的分包,多次发送,并在接收端手动拼装。
基于UDP的应⽤层协议: