UDP协议


计算机网络(第七版)阅读笔记

UDP协议特点

(1)UDP是无连接的,即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。

(2)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表(这里面有许多参数)。

(3)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界

(4)UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很多的实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。UDP正好适合这种要求。

(5)UDP支持一对一、一对多、多对一和多对多的交互通信

(6)UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

UDP的首部格式

用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节,由四个字段组成,每个字段的长度都是两个字节。各字段意义如下:

(1)源端口
源端口号。在需要对方回信时选用。不需要时可用全0。

(2)目的端口
目的端口号。这在终点交付报文时必须使用。

(3)长度
UDP用户数据报的长度,其最小值是8(仅有首部)。

(4)检验和
检测UDP用户数据报在传输中是否有错。有错就丢弃。

UDP的工作流程

当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点——应用进程。如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由网际控制报文协议ICMP发送“端口不可达”差错报文给发送方。让发送的UDP用户数据报故意使用一个非法的UDP端口,结果ICMP就返回“端口不可达”差错报文,因而达到了测试的目的。请注意,虽然在UDP之间的通信要用到其端口号,但由于UDP的通信是无连接的,因此不需要使用套接字(TCP之间的通信必须要在两个套接字之间建立连接)。

UDP计算检验和的方法

UDP计算检验和的方法和计算IP数据报首部检验和的方法相似。但不同的是:IP数据报的检验和只检验IP数据报的首部,但UDP的检验和是把首部和数据部分一起都检验。在发送方将全零放入检验和字段,把伪首部以及UDP用户数据报看成由许多16位字串接起来,若UDP数据报数据部分不是偶数个字节则要填入一个全零字节(此字节不发送),然后按照二进制反码计算出16位字的和。将该结果取反码放到UDP首部的检验和字段并发送到接收方,接收方将UDP数据报按二进制取反求16位字和,若全为1则数据无差错,否则有差错,丢弃。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM