传输层(二):用户数据报协议

1、UDP协议的主要特点

  UDP协议的主要原则是协议简洁、运行快捷。主要有以下特点:

1.1、UDP协议是一种无连接的传输层协议

  1、UDP协议在传输报文之前不需要在通信双方之间建立连接,因此减少了协议开销与传输延迟。

  2、UDP协议对报文除了提供一种可选的校验和之外,几乎没有提供其他的保证数据传输可靠性的措施。

  3、如果UDP协议检测出收到的分组出错,它就丢弃这个分组,既然不确认,也不通知发送端和要求重传。

  因此,UDP服务提供的是"尽力而为"的传输服务。

1.2、UDP协议是一种面向报文的传输层协议

  UDP协议对应用程序提交数据的处理方式如下:

  0

  1、UDP协议对于应用程序提交的报文,在添加了UDP头部,构成一个TPDU之后就向下提交给IP层;

  2、UDP协议对应用程序提交的报文既不合并,也不拆分,而是保留原报文的长度与格式。接收端会将发送端提交传送的报文原封不动的提交给接收端应用程序。因此,在使用UDP协议时,应用程序必须选择合适长度的报文。

  3、若应用程序提交的报文太短,则协议开销相对较大;若应用程序提交的报文太大,则UDP协议向IP层提交的TPDU可能在IP层被分片,会降低协议的效率。

2、UDP协议报文格式

  UDP报文有固定8B的报头,UDP用户数据报格式如下:

  0

UDP报头主要有以下字段:

2.1、端口号

  端口号字段包括源端口和目的端口。源与目的端口号字段长度都为16位。

  源端口号表示发送端进程端口号,目的端口号表示接收端进程端口号。若源进程是客户端,则源端口号是由UDP软件分配的临时端口号,目的端口号使用服务器的熟知端口号。

2.2、长度

  长度字段的长度是16位,定义了包括报文在内的用户数据报的总长度。因此,用户数据报的长度最大为65535字节,最小字节时8字节。由于UDP报头长度固定为8字节,因此实际UDP报文的数据长度最大为65527字节。

2.3、校验和

  UDP校验和是可选的。UDP校验和用来检验整个用户数据报、UDP报头与伪报头在传输中是否出现差错,这正反映出效率优先的思想。若应用进程对通信小笼包的要求高于可靠性,应用进程可以选择不使用校验和。

3、UDP校验和的基本概念

3.1、使用伪报头的目的

理解在校验和中增加伪报头的目的,需要注意以下问题:

  1、伪报头不是用户数据报的真正头部,只是在计算时临时加上去的;

  2、伪报头只在计算时起作用,既不向低层传输,也不向高层传送;

  3、伪报头包括IP分组头的源IP地址(32位)、目的IP地址(32位)、协议字段(8位)与UDP长度(16位),以及8位全0的填充字段。

  4、若没有伪报头,校验的对象只是UDP报文,也能够判断UDP报文传输是否出错。若IP分组头出错,那么分组就有可能会传送到错误的主机,因此在UDP的校验和中增加了伪报头部分。

3.2、伪报头结构

  UDP校验和包括三个部分:伪报头(pseudo header)、UDP报头与数据。伪报头长度为12个字节。

  UDP校验和校验的伪报头与报头的结构如下:

  0

  伪报头取IP分组头的一部分,其中填充字段要填入0,目的是使伪装报头长度为6位的整数倍。IP分组报头的协议号17表示的是UDP报文。UDP长度是UDP数据报的长度,不包括伪报头的长度。

4、UDP协议适用的范围

  确定应用程序在传输层是否采用UDP协议有以下三个考虑的原则。

4.1、视频播放应用

  在Internet上播放视频,用户最关注的是视频流能尽快和不间断的播放,丢失个别数据报文对视频节目的播放效果不会产生重要的影响。

  视频播放程序对数据交付实时性要求较高,而对数据交付可靠性要求相对较低,UDP协议更为适用。

4.2、简短的交互式应用

  只需要进行简单的请求与应答报文的交互,客户端发出一个简短的请求报文,服务端回复一个简短的应答报文,在这种情况下应用程序应该选择UDP协议。

  应用程序可以通过设置"定时器/重传机制"来处理由于IP数据分组丢失问题,而不需要选择有确认/重传的TCP协议,以提高系统的工作效率。

4.3、多播与广播应用

  UDP协议支持一对一、一对多与多对多的交互式通信,这点TCP协议是不支持的。

  UDP协议头部长度只有8个字节,比TCP协议头部长度20字节要短。同时,UDP协议没有拥塞控制,在网络拥塞时不会要求源主机降低报文发送速率,而只会丢弃个别的报文。

  对于IP电话、实时视频会议应用来说是使用的。由于这类应用要求源主机以恒定速率发送报文,在拥塞发生时允许丢弃部分报文。

5、UDP协议小结

  UDP协议的优点:简洁、快速、高效;

  UDP协议的缺点:不能提供必需的差错控制机制,同时在拥塞严重时缺乏必要的控制与调节机制。

  UPD协议是用于实时语音与视频传输的传输层协议。

 

posted @   无虑的小猪  阅读(296)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示