首页 > 代码库 > UDP用户数据报协议和IP分组
UDP用户数据报协议和IP分组
UDP总体的封装格式例如以下:
以下是8字节UDP首部:
当IP层依据协议字段把UDP报文向上传送到UDP模块后,UDP模块再依据port号将数据发送到对应的进程中,以此实现进程到进程间的通信。
16位UDP长度代表UDP首部和UDP数据的总字节数。长度最小能够为8,即数据段不包括实际内容。
下面是抓包结果:
不同于TCP,UDP协议的接收方在接收数据后不会返回不论什么确认信号,发送方仅仅管发,至于有没有成功到达,一概无论。而且在開始发送之前也不会进行不论什么通信。
当UDP报文的长度大于MTU时,IP层就须要进行分片了。下面介绍IP层分片。
物理网络层一般要限制每次发送数据帧的最大长度,这个最大长度称为最大传输单元(MTU)。IP层在发送一个IP数据报之前须要询问下一跳接口的MTU大小,假设待发送的IP数据报大小大于MTU,则须要进行分片。所以,分片既能够发生在原始发送端主机上,也能够发生在中间路由器上。但数据报的重组仅仅在终于目的端进行。无论是分片还是重载,都是在IP层进行的,对上层来说这些操作是透明的。
IP首部中的下列字段为数据的分片和重组提供了信息:
- 16位标识。唯一地标识主机发送的每一份数据报,通常每发送一份报文它的值就加1。注意,一个数据报分片后的各个分组中,标识字段是同样的,即表示同一个IP数据报。
- 3位标志。指导重组的一些标记。比如:
- 一个bit作为“很多其它的片”位,表示接下来还有很多其它兴许分组。
- 一个bit作为“不分片”位,表示不正确数据报进行分片。
- 13位片偏移。该片偏移原始数据报開始处的位置。
IP数据报分片后成为一个个的分组,这些分组都拥有各自的IP首部,路由选择时也是相互独立的。它们到达目的端时有可能会发生失序,但利用各自的IP首部中的信息,全然可以又一次恢复成原始的IP数据报。这里须要注意,不论什么运输层首部仅仅出如今第一片数据中。
比如要发送1473字节的用户数据,那么总的IP数据报长度 = 20字节IP首部 + 8字节UDP首部 + 1473字节用户数据 = 1501字节,超过了以太网规定的1500字节的MTU,所以须要进行分片,例如以下图所看到的:
注意上图,分组1中包括了UDP首部信息,而兴许分组并不包括UDP首部。
參考:
《TCP/IP具体解释》第11章。
UDP用户数据报协议和IP分组
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。