UDP协议—无连接,不可靠,面向数据报

UDP协议解析
UDP:用户数据报传输协议
传输层协议:负责端与端之间的数据传输
端口号:标识了一个主机上进行通信的不同应用程序

无连接
源端与目的端不建立连接,只要知道对端的地址就可以发送数据

不可靠
发送数据后,对对方是否完整的收到数据,收到的数据是否有序并不关心
面向数据报
由16位数据包决定,向上层交付数据时只能一整条一整条的交付

UDP报文格式:每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据
UDP报文由八个字节的报头和数据构成
传输层—UDP协议

UDP报头:有四个字段
16位源端口、16位目的端口、16位数据报长度、16位校验和

端口号:UDP协议使用端口号为不同的应用保留其各自的数据传输通道
使用这一机制实现同一时刻不同应用发送和接收数据

数据报长度
1.面向数据报传输
2.传送数据的长度不超过64kb-8,若是数据过长需要在应用层进行分包处理每条数据不超过64kb-8
udp可靠性由应用层保证:,所以要保证传输的可靠性,就要在应用层进行数据分包,因为udp不保证数据有序,所以还需要用户在应用层进行包序管理,udp实现的应用层协议:DHCP

校验和
保证数据的完整性和准确性,发送发生成校验和,接收方进行校验,如果校验和出错,则直接丢弃

UDP的缓冲区
UDP没有真正意义上的发送缓冲区,但是有接收缓冲区,这个缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致,如果缓冲区满了,再达到的UDP数据就会被丢弃
正因为UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序

UDP协议存在问题
数据报乱序问题:由于网络或其他问题导致接收数据与发送数据的顺序不一致
解决:在发送数据时,为每一个数据报提供一个id号,使得接收端可用id对数据进行重组,保证数据的有效性
UDP报文丢失:因为UDP传输没有确认应答机制超时重传机制导致传输中数据丢失了,发送方也不知道
解决:增加超时重传机制

基于UDP的应用层协议
NFS: ⺴络⽂件系统
TFTP: 简单⽂件传输协议
DHCP: 动态主机配置协议
BOOTP: 启动协议(⽤于⽆盘设备启动)
DNS: 域名解析协议

相关文章: