1.UDP实现了传输协议能够做的最少工作,在IP的数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测
2.UDP优点
(1)UDP无须建立连接:不会有建立连接的时延
(2)无连接状态:UDP不维护连接状态,应用服务器使用UDP时,一般都能支持更多的活动客户机
(3)分组首部开销小
(4)UDP无拥塞控制,适合很多实时应用
(5)UDP首部开销小(8B),而TCP为20B
(6)IP数据报只能找到目的主机而无法找到目的进程,UDP提供端口功能及复用和分用功能,可以将数据报投递给对应的进程。因此,UDP数据报比IP数据报多提供了端口功能。
3.特点
(1)UDP常用于一次性传输较少数据的网络应用,如DNS、SNMP等
(2)UDP提供尽最大努力的交付,即不保证可靠交付:所有维护传输可靠性的工作需要用户在应用层来完成
(3)UDP是面向报文的:报文是UDP数据报处理的最小单位
4.UDP的首部格式
(1)源端口:源端口号。在需要对方回信时选用(可有可无),不需要时可用全0
(2)目的端口:这在终点交付报文时必须使用到。UDP协议实现分用所依据的头部字段是目的端口
(3)长度:UDP数据报的长度(包括首部8B和数据)(不含伪首部),其最小值是8(仅有首部)
(4)校验和
①检测UDP数据报在传输中是否有错,有错就丢弃。
②该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0
5.收到数据报
(1)根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用进程
(2)如果接收方UDP发现收到的报文中的目的端口号不正确,丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方
伪首部只有在计算检验和时才出现,不向下传送也不向上递交。其中的0表示固定字段,17表示协议字段。通过伪首部,不仅可以检查源端口号、目的端口号和UDP用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址。
伪首部包括源IP地址和目的IP地址,因此伪首部包括IP分组报头的一部分。
【在发送端】
1.填上伪首部
2.全0填充检验和字段
3.全0填充数据部分(使之成为4B的整数倍)
4.伪首部+首部+数据部分采用二进制反码求和(此时首部中校验和字段为全0)
因此:UDP校验和对伪首部、UDP报文头以及应用层数据进行校验。
5.把和求反码填入检验和字段(即二进制反码运算求和再取反)
如果校验和的计算结果恰好为0,那么将校验和字段置为全1。
6.去掉伪首部,发送
【在接收端】
1.填上伪首部
2.伪首部+首部+数据部分采用二进制反码求和(此时首部中的校验和字段为刚刚计算出的值,并非全0)
3.结果全为1则无差错,如果UDP校验和校验出UDP数据报是错误的,那么可以丢弃,也可以交付给上层(应用层),但是需要附上错误报告
1.简单、处理速度快
2.检错能力并不强
UDP的特点是开销小,时间性能好且易于实现。
1.在客户/服务器模式中,它们之间的请求都很短,使用UDP不仅编码简单,而且只需要很少的消息
2.远程调用使用UDP的理由和客户/服务器模式的一样
3.对于实时多媒体应用,需要保证数据及时传送,而比例不大的错误是可以容忍的,所以使用UDP也是合适的,而且使用UDP协议可以实现多播,给多个客户端服务