计算机中的udp(计算机网络UDP协议)

UDP协议的概念

用户数据报协议(User Datagram Protocol,UDP)是Internet传输层协议,提供无连接、不可靠、数据报尽力传输服务。UDP 是一个非常简单的协议,开销最小。如果一个进程想发送很短的报文,而且不在意可靠性,就可以使用 UDP。使用 UDP 发送一个很短的报文,在发送方和接收方之间的交互要比使用 TCP 时少得多。

计算机中的udp(计算机网络UDP协议)(1)

UDP协议

UDP协议特点

  • 应用进程容易控制发送什么数据以及何时发送,会出现分组的丢失和重复。
  • 发送数据前,无需提前建立连接。
  • 无连接状态。
  • 首部开销小,只有8个字节。

无连接服务:UDP提供无连接服务。这就是表示 UDP发送出去的每一个用户数据报都是一个独立的数据报。不同的用户数据报之间没有关系,即使它们都是来自相同的源进程并发送到相同的目的程序。用户数据报不进行编号。此外,也没有像TCP协议那样的连接建立和连接终止,这就表示每一个用户数据报可以沿着不同的路径传递。

UDP协议的结构

计算机中的udp(计算机网络UDP协议)(2)

UDP协议的结构

如图,其中源端口号、目的端口号、UDP长度、校验和属于UDP数据报的首部;数据部分属于UDP数据报数据字段。UDP首部四个字段每个字段长度都是2个字节,共8个字节。他们各自的作用:

  • 源端口号和目的端口号:主要用于UDP实现复用和分解;关于传输层的复用与分解在前面的文章中有介绍,感兴趣的可以去查看(计算机网络|传输层的复用与分解)。
  • 长度:指示UDP报文段中的字节数,他等于首部字节数与数据字节数的总和;其最小值为8(只有首部)。
  • 校验和:接收方用来检测接收的报文是否出现差错。
UDP校验和

UDP校验和主要提供差错检测功能,就是用于检测UDP报文段从源主机到目的主机的传送过程中,其中的数据是否发生了改变。该字段不是必须的,当源主机不想计算校验和,则直接令该字段全为0,当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给应用进程。如果接收方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程0),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给对方。

计算机中的udp(计算机网络UDP协议)(3)

源主机到目的主机

UDP的校验和由三部分内容求和得到,分别是伪首部、首部以及数据报文

计算机中的udp(计算机网络UDP协议)(4)

UDP的校验和的组成

UDP的伪首部:伪首部占12个字节,伪首部并不是UDP真正的首部,只是在计算校验和,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。UDP伪头部目的是为了让数据包接受者确定发送和接受的UDP数据包是来自正确的源且是发给自己的。由于UDP结构中只包含了源和目的的UDP端口号,而且没有IP地址信息,所以使用伪头部结构来计算校验和以确定数据包的正确性。伪首部既不向下传送也不向上递交,而仅仅是为了计算校验和。

UDP校验和的计算方法:

  • 所有参与运算的内容按16位对齐求和(UDP的伪首部、首部以及数据)。
  • 求和过程中遇到溢出(即进位)都被回卷(即进位与和的最低位再相加)。
  • 最后对计算的和取反码,就可以得到UDP的校验和,填入UDP数据报的校验和字段。

计算机中的udp(计算机网络UDP协议)(5)

对齐求和

计算机中的udp(计算机网络UDP协议)(6)

溢出回卷

计算机中的udp(计算机网络UDP协议)(7)

取反码

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页