1.UDP协议的特点
• 无连接:在计算机中,连接可以认为是要建立连接的双方,各自保存对方的信息,无连接就是通信双方不需要保存对方的信息
• 不可靠传输:传输数据时,可能出现丢包等其他情况,UDP不关心对方是否收到,只负责发送(效率比TCP快) (UDP的不可靠传输不是由其无连接导致的)
• 面向数据报:UDP数据报是UDP传输的基本单位,进行读写操作时,一次读写只能读写一个完整的UDP数据报
• 全双工:一条链路,能够进行双向通信
2.UDP报文格式
UDP长度:长度为2字节, 表示范围是0~65536,一个UDP数据报最长就是64KB(65536)
UDP校验和:数据在网络传输过程中,可能会出错,比特翻转就是一种典型的情况(电信号,光信号收到外界环境的干扰,二进制数据中的0传输时变为1,1传输时变为0),UDP校验和能够对传输的数据进行校验检查是否出错(校验和:数据引入冗余信息,通过冗余信息来验证原有的数据)
校验的过程:
1) 主机A把数据内容进行计算得到校验和
2) 主机A把数据内容和校验和一起发送给主机B
3) 主机B把按照与主机A相同的算法,针对数据内容再计算校验和并与主机A发送过来的校验和进行比较,如果不一致,就说明传输出了问题
在UDP中校验和使用CRC(循环冗余校验)的方式来完成,CRC是一个简单粗暴的计算校验和的方式,大致过程是设定一个2个字节的变量,把数据的每个字节都取出来,往这个变量上进行累加,如果结果溢出超过2个字节,溢出部分直接舍弃
除了CRC之外,还有一种常用的方法MD5,MD5有以下三个特点
• 定长:无论输入的内容是多长,得到的结果一定是固定长度
• 分散:输入的内容,即使改变一点点,最终结果差异都会很大
• 不可逆:通过原数据计算MD5,成本很低,而MD5还原成原数据,成本非常高,仅仅理论上可行
3.UDP的用途
应用于对于性能要求比较高,但是对于可靠性要求不高的场景,例如分布式系统中多个服务器之间的相互通信(多个机器在同一个机房里,网络结构简单)