UDP 协议简单学习

95 阅读3分钟

相较于采取许多复杂措施的 TCP 协议,UDP 协议简单、纯粹而直接,非常适合于实时性要求良好的网络应用,如在线视频会议。

对于我们的应用程序而言,UDP 协议会在如下的方面为我们提供帮助:

多路分解与多路复用(二次打包)

作为一种传输层协议,UDP 协议会将我们的应用程序借系统调用传输而来的信息进行二次打包,从而构成新的 UDP 数据包。
在这里插入图片描述

每一个 UDP 元信息包都具有:

  • 目标主机的地址信息 (IP 地址)

  • 端口信息

    • 本机端口也会随之提供,帮助目标主机找到发送者的进程
    • 目标主机端口标识着目标主机中与我们通信的具体应用
  • 校验码
    它用于判断我们的应用数据是否发生改变

  • 长度
    代表了我们的数据的长度规模,便于接收

校验码(差错检测服务)

我们的二进制数据,归根打底,就是硬件上面的电子信号,而我们都知道,网络主机的数据传输,往往需要跨越长远的距离。

在这个过程之中,难免就会出现偏差与错误,造成不必要的损失。

因此,一方面,我们要努力改善我们的硬件,提升他们的可靠性,而另一方面,我们要在软件层面上的措施加以修订,需要一种手段,判断我们的数据包是否发送了这种错误,从而保障我们的数据传输质量,让我们的程序更加可靠。

校验码就承担起了这一职责,它的过程也非常简单,所有应用程序的数据,按照一定的长度与尺寸规则,划分成片,在这个基础上,让我们的这些二进制片段再按照一定的规则进行计算,构建完成新的校验字符串。
在这里插入图片描述

并将其写入 UDP 元数据包,伴随应用程序数据进行发送。

在目标主机接收到我们的数据之后,就开始对我们的数据按照同样的规则二次计算,并将其与元信息中的校验串进行比对,从而判断是否发生改变(一致则没有发生改变,不一致则一定发生改变)。

之后的处理,则取决于具体的应用程序。

小结:UDP 的适与不适

在提供了差错校验服务与简单的二次打包服务之后,UDP 协议便会依照由网络层提供的传输服务,将一个又一个封装完毕的传输层数据包,进行发送。

相较于过程更为复杂的 TCP 协议,UDP 协议仅提供必要服务的做法,尽管使其在数据的可靠性上面屈居 TCP 协议之下,但是也帮助它在效率与速度上面赢得美名与赞誉。

因此,许多的计算机网络书籍,建议我们在数据实时性要求高,容错性也容许的情况下,选择我们的 UDP 协议。