UDP协议
1.UDP的基本特点
- 无连接:知道源端口号和目的端口号就可以进行传输,不需要进行连接
- 不可靠:没有任何的安全机制,发送端发送完数据后,接收端是否会因为网络故障等其原因而没有接收到数据,UDP协议不会返回任何信息给应用层.
- 面向数据报:应用层交给UDP多长的报文,UDP会原样返回,不会拆分和合并.
- 全双工:两个通信实体之间可以互相通信,可以同时发送和接收数据
2.UDP协议格式
UDP数据报分为报头和载荷,报头包含了数据传输的相关的控制信息和元数据,而载荷就是一个完整的应用层协议数据.
报头报头包含以下字段:1.源端口号2.目标端口号3.长度4.校验和.4个字段占用的8个字节.
源端口和目的端口 :各有两个字节,也就是16个比特位,合法的端口也就是0-65535,端口是不会使用的,而1-1024这个范围的端口,系统赋予了特定的含义.
UDP报文长度 :UDP报文的总长度,包括报头和UDP载荷的部分.占用2个字节,换算单位的能表示数据也就是64kb.
如果传输的数据大于64kb,该如何处理?
- 分片处理:将大文件分割成小块:将大文件分割成多个小块,每个小块大小不超过65535字节,并且需要重新组装数据.在中途很可能会出现某个小块传输数据失败的情况,容易导致bug.
- 使用TCP代替UDP,TCP没有要求报文长度,所以传输多长都可以,并且提供了可靠的数据传输机制.
校验和 :检查数据是否在网络传输中是否出错,网络传输本质上是光信号/电磁波,如果有磁场等外界因素干扰就会导致数据传输失败.
校验和的方式就是在接收方接收到数据的时候,先确认一下,查看这个数据是否是一个错误的数据.
UDP校验和的实现(CRC校验算法)
1.将UDP头部和数据视为16位块.
2.对所有的16位块进行二进制求和,最终得到校验和
数据传输的时候,会把数据和校验和一起发过去,接收方在收到数据的时候,接收到了发送端发送的数据和校验(旧的校验和)和,接受方再按照相同的方式再算一遍,最终得到了一个新的校验和.
如果新的校验和与旧的校验和不相同,那么就视为传输出错,那么数据就会被丢弃(TCP传输),如果相同那么数据就正确的.