UDP:用户数据报协议

Posted tianzeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UDP:用户数据报协议相关的知识,希望对你有一定的参考价值。

  进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。

技术图片

  由于IP层已经把IP数据报分配给TCP或UDP(根据I P首部中协议字段值),因此TCP端口号由TCP来查看,而UDP端口号由UDP来查看。TCP端口号与UDP端口号是相互独立的。尽管相互独立,如果TCP和UDP同时提供某种知名服务,两个协议通常选择相同的端口号。这纯粹是为了使用方便,而不是协议本身的要求。

  UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节(发送一份0字节的UDP数据报是OK)。

  UDP检验和覆盖UDP首部和UDP数据(TCP同,但是TCP检验和是必须的,UDP检验和是可选的)。IP首部的检验和它只覆盖IP的首部并不覆盖IP数据报中的任何数据。

  伪首部包含IP首部一些字段。其目的是让UDP两次检查数据是否已经正确到达目的地(根据目的IP检验是否是发送给本机的数据,根据协议号把数据交付上层——TCP或UDP)。

  UDP数据报长度在传输过程中会计算两次,如果检验和的计算结果为0,则存入的值为全1(65535),这在二进制反码计算中是等效的。如果传送的检验和为0,说明发送端没有计算检验和。

IP分片

  分片发生在物理层,任何时候IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。

  数据到目的端重新组装由IP层来完成。发送端发送每份IP数据报时,其标识字段包含唯一值,该数值在分片时被复制到每一个片中。

  1. 标识字段(MF)——更多片:除了最后一片外都被设置为1
  2. 标识字段(DF)——不分片:置1IP将不对数据报分片,对数据报丢弃发送ICMP差错
  3. 片偏移是该片距原始数据报开始处位置
  4. 分片后每个数据报都有自己的IP首部,选择路由时与其他数据报独立
  5. 丢失一个分片将重传整个IP数据报(不清楚分片位置,不清楚如何被分片)
  6. 分片后,除了最后一片,其他每片的数据部分必须是8的整数倍
  7. 任何运输层只出现在第一片数据报中

技术图片

 

以上是关于UDP:用户数据报协议的主要内容,如果未能解决你的问题,请参考以下文章

UDP:用户数据报协议

UDP用户数据报协议

TCP/IP详解UDP用户数据报协议

Linux| |对于UDP的学习UDP(用户数据报协议)

ThreadX NetXDUO UDP用户数据报协议基础知识

六LWIP学习笔记之用户数据报协议(UDP)