计算机网络

《计算机网络——自顶向下方法》运输层——无连接运输:UDP

2020-02-16  本文已影响0人  YAN_DAOJIANG

无连接运输:UDP

运输层最低限度必须提供一种复用、分解服务,以便在网络层与正确的应用及进程之间传递数据。UDP就是只做了运输层协议能够做的最少工作。除了复用/分解功能及少量的差错检测之外,它几乎没有对IP增加别的东西。在使用UDP时,发送方和接收方的运输层实体之间没有握手,正因为如此,UDP被称为是无连接的
既然TCP提供了可靠的数据传输服务,而UDP不能提供,那么TCP是否总是首选?答案是否定的,因为许多应用程序更适合用UDP,原因主要有以下几点:

UDP报文段结构

UDP报文段结构如下图所示。应用层数据占用UDP报文段的数据字段。UDP的首部只有4个字段,每个字段有两个字节组成。通过端口号可以使目的主机将应用数据交给运行在目的端系统中的相应进程。长度字段指示了在UDP报文段中的字节数(首部加数据)。因为数据字段的长度在一个UDP段中不用一在另一个段中,故需要一个明确的长度。接收方使用检验和来检查该报文段中是否出现了差错。实际上计算检验和时,除了UDP报文段以外还包括了IP首部的一些字段。


image

UDP检验和

UDP检验和提供了差错检测功能。检验和用于确定当UDP报文段从源到达目的地移动时,其中的比特是否发生了改变。
发送方的UDP报文段中的所有16比特的字的和进行反码运算,求和遇到溢出时都被回卷(将异常位加到最低位)。得到的结果放在UDP报文段中的检验和字段。
举例来说我们有下满3个16比特的字:
\begin{aligned} &0110011001100000\\ &0101010101010101\\ &1000111100001100 \end{aligned}
这些16比特的字的前两个之和是:
\begin{aligned} &0110011001100000\\ &\frac{0101010101010101}{1011101110110101} \end{aligned}
再将上面的和与第三个字相加是:
\begin{aligned} &1011101110110101\\ &\frac{1000111100001100}{0100101011000010} \end{aligned}
※ 最后一次加法有溢出它要被回卷。
因此将该和0100101011000010求反码的结果是:1011010100111101,这变为了检验和。
在接收方,全部的4个比特字(包括检验和)加在一起。如果该分组中没有引入差错,则显然在接收方处该和将是1111111111111111.如果这些比特之一是0,那么我们就知道分组中已经出现了差错。

上一篇下一篇

猜你喜欢

热点阅读