首页 理论教育 UDP报文格式《计算机网络》最新章节

UDP报文格式《计算机网络》最新章节

时间:2023-11-09 理论教育 版权反馈
【摘要】:和其他协议一样,UDP报文分为首部和数据部分。当UDP数据报到达目的主机时,协议处理程序会依据目的端口号对数据报予以分发。图5-2所示为UDP的分用情况。图5-2UDP的分用情况在实际运行中存在这样一种情况,接收方会发现接收到的UDP数据报上标注的接收端口号并没有对应的进程。按照协议规定,UDP处理程序就此丢弃该报文并发送一个类型为3的“端口不可达”的ICMP数据报给发送方。对于校验和出错的UDP数据报,协议处理程序一般选择将其丢弃。

UDP报文格式《计算机网络》最新章节

和其他协议一样,UDP报文分为首部和数据部分。UDP首部非常简单,只有8 Byte,其中包含4个字段,每个字段2 Byte。UDP首部结构示意如图5-1所示。

图5-1 UDP首部结构示意

UDP首部的各个字段如下:

(1)源端口。在源主机上,标识数据报发送进程的端口号

(2)目的端口。在目的主机上,标识数据报接收进程的端口号。如同前面所介绍过的,无论是源端口还是目的端口,都是相应进程申请网络通信时获得的;服务进程会申请一个约定的熟知端口或者登记端口。

(3)报文长度。整个UDP数据报的长度。

(4)校验和。用以校验整个数据报,用于发现用户的数据报在传输中出现的错误

在UDP数据报中,最基本的字段就是源端口和目的端口,可以通过它们来标识数据报的发送方和接收方。当UDP数据报交付到IP层,会加上源IP地址和目的IP地址。这样由两个IP地址和两个端口号,便可以在互联网上确定通信的参与进程。如果源IP和目的IP都是单一地址,那么参与通信的是一对进程;如果某一个IP地址是广播地址,那么可以实现一对多或者多对一通信。

当UDP数据报到达目的主机时,协议处理程序会依据目的端口号对数据报予以分发。UDP的协议处理程序将每个UDP端口号与一个报文接收缓存队列相关联,它会依据报文的目的端口号,将报文送到对应的缓存队列,从而实现分用。如果到达的报文太多,超过了缓存队列的存储能力,就会造成报文丢失。但是,正如前文所言,UDP没有流量控制,对于这种情况没有任何应对机制。图5-2所示为UDP的分用情况。

图5-2 UDP的分用情况(www.xing528.com)

在实际运行中存在这样一种情况,接收方会发现接收到的UDP数据报上标注的接收端口号并没有对应的进程。这就类似于信函正确地发送到目的地址,却发现“查无此人”。按照协议规定,UDP处理程序就此丢弃该报文并发送一个类型为3的“端口不可达”的ICMP数据报给发送方。UDP的这种规定包含交互效果,即你有“来言”,我必有“去语”。这可以被用在确定目标IP地址是否存在活动主机的应用场合,比如说黑客对活动主机的发现。这比前第5章提到的类型为8和0的ICMP的“来言去语”隐蔽一些。

UDP数据报的首部校验和要对整个数据报进行数据校验,以在接收方确认数据报在传输过程中没有发送错误,这和IP数据报只对首部进行校验是不同的,但校验和的计算是需要在数据报前面添加一个“伪首部”后再进行的。人们称其为“伪首部”,其“伪”在不参与数据传递等任何处理,只有在计算校验和的时候才会被临时加上,其既不会向下传递到网络层,也不会向上往应用层交付,只会计算校验和时的临时数据。

“伪首部”是一个12 Byte的数据,包含5个字段。伪首部和UDP首部如图5-3所示。

图5-3 伪首部和UDP首部

计算校验和的过程和网络层计算首部校验和的过程非常类似,是对整个UDP数据报进行计算,而不是仅对首部进行计算。

在发送方,首先要将校验和全部填入0;再把伪首部和数据报以16 bit为单位分割为若干分段,如果最后的分段若不足16 bit则用0填充;然后将这些分段以二进制反码加法逐个累加它们的和;最后将累加和的反码写入校验和中。应注意,为补足最后一个分段使其成为16 bit而填入的0,在发送时是不予发送的。

在接收方,把接收到的数据报添加上伪首部;也将其分割为若干个16 bit分段,最后的分段视情况而用0补足16 bit长度;按二进制反码加法逐一累加这些分段的和。若结果为全1,则校验成功。

对于校验和出错的UDP数据报,协议处理程序一般选择将其丢弃。另外,也可以仍然交给应用程序,但是要加上错误标志。

UDP采用的校验和的算法简单、运算快捷。其对于发现简单的由于网络故障而造成的少量比特错误很有效,但总体上纠错能力不强,更因为易于伪造而无法抗拒恶意的修改。互联网上使用的很多协议都有类似的问题,当这些协议被提出时,硬件设备的水平都不高,人们在设计协议时采用的都是能用就行的原则,对于安全之类的考虑不足。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈