总的来说:1.无连接,2.面向数据报,3.全双工,4.有接受缓存,无发送缓存。5.不可靠传输。
一、UDP报文的格式
UDP报头中一共有四个字段,每个字段2个字节,一共8个字节。
因为每个字段2个字节,所以数据报长度为0~65535,即64KB(包含8个字节的头部)。
二、UDP对数据的校验
UDP中,校验和使用简单的CRC算法(循环冗余校验)。
UDP数据的发送方在发送数据前,会先计算一遍CRC,并把计算好的CRC值放入到UDP数据报中。
而接收端在接受到数据后,也会按照相同的算法计算一遍CRC,然后与发送方的CRC进行比较。
但是这种算法只适用于少数比特翻转的情况,如果有多个比特同时翻转,可能会产生和之前一样的CRC。(CRC的计算公式较简单)
三、其他校验算法
除了CRC,还有一些更高精度的算法,例如:md5算法和sha1算法。
这些算法的计算公式更复杂。
以下介绍md5算法的特点:
1.定长。无论原始数据多长,算出来的md5的最终值都是固定长度。常见的md5有16位版本(2字节),32位版本(4字节),64位版本(8字节)。
2.分散。计算md5的过程中,原始数据只要有一点点的变化,计算出的md5值差异也会很大。这个特性也决定了md5可以作为一个字符串hash算法(hash表对hash冲突要求是很严的,md5的分散特性保证了key与value的一一对应)。
3.不可逆。从一个源字符串得到一个md5可以,但是从一个md5值来还原为源字符串理论上是无法完成的。