UDP协议
UDP特点
UDP的传输过程寄信
无连接
知道对方的端口号和IP就直接传输,不需要建立连接
不可靠传输
没有任何安全机制,发送方发送数据报以后,如果因为网络因素导致数据错误或者丢失,UDP的协议层也不会给应用层返回任何错误信息。
面向数据报传输
应用层交给UDP多长的报文,UDP原样发送,既不拆分也不合并
全双工
即能发也能写就是全双工
UDP报文结构
理解协议的报文格式
UDP报文分为报头段和数据段,报头又分为四个字段:
- 源端口号
- 目的端口号
- UDP长度
- 校验和
每个字段都是二个字节一共八个字节。
UDP长度能表示的数值范围是0-65535个字节也就是64kb,当初创建UDP的时代还属于很看重存储的时代,UDP能表示的范围在当时算的上很大的了,但是计算机行业发展迅速,现在的数据动不动就几个GB,此时UDP的64kb就有点小了,当单个数据报长度接近或者是超过时,一般的策略就是换成TCP传输,因为TCP是字节流的没有长度限制。
校验和的作用是检查数据是否出错,校验的方式是CRC算法(循环冗余校验),把UDP报文中的每个字节都进行累加,加和也放到一个两个字节的数字中,加的过程溢出了也无所谓,得到的最终结果也就是校验和。接收方按照同样的规则来算一遍,来看一下是不是一样。
注意:校验和有没有可能出错呢,答案是理论上是可能的,如果当数据里有个地方少了1,另一个地方又恰好多了个1,导致校验和的结果一样,理论上是存在的,但是在实践中的概率极低,毕竟需要恰好是两个比特位发生变化,且是在合适的位置。