IP分片如何分片?如何组装?三位标志分别是哪三位?

分片

当数据报的长度超过了MTU(最大传出单元),IP层就要对数据报分片。

对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中。标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置1,IP将不对数据报进行分片。相反把数据报丢弃并发送一个ICMP差错报文给起始端。  

组装

当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。

为了重新组合这些数据报分片,接收主机在第一个分片到达时分配一个存储缓冲区。这个主机还将启动一个计时器。当数据报的后续分片到达时,数据被复制到缓冲区存储器中片偏移量字段指出的位置。当所有分片都到达时,完整的未分片的原始数据包就被恢复了。处理如同未分片数据报一样继续进行。

三位标志

第一个比特保留为以后用;第二个比特是“不分片”比特,若为1,IP将不对数据报进行分片,若无法将此数据报通过任何可用网络转发,则丢弃,并发送一个ICMP差错报文给起始端,若为0, 则在需要时将数据报分片;第三个比特是“更多分片”比特,为1,表示后面还有更多的分片,为0,则表示是最后的分片。

时间: 2024-11-07 15:08:03

IP分片如何分片?如何组装?三位标志分别是哪三位?的相关文章

IP数据报的分片和组装

一.IP数据报的格式 IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍. (1)对于IPv4 ,4位版本字段是4. (2)4位首部长度的数值是以4字节为单位的,最小值为5,也就是说首部长度最小是4x5=20字节, 也就是不带任何选项的IP首部,4位能表示的最大值是15,也就是说首部长度最大是60字节. (3)8位TOS字段有3个位用来指定IP数据报的优先级(目前已经废弃不用),还有4个位表示可选的服务类型(最小延迟.最大呑吐量.最大可靠性.最小成本),还有一个位总是0. (4)1

IP数据报的分片和组装原理

一份数据从一个主机通过路由器发送给另一个主机时,要经过很多路由层转发的.过程比较复杂,那么IP在路由层到底是以怎样的形式转发和目的主机这份数据报的时候又是如何处理的? 首先我们需要了解数据报的格式: IP的转发和控制都是由IP数据报的头部决定 4位首部长度的数值是以 4字节为单位的,最小值为 5,也就是说首部长度最小是 4x5=20字节 , 也就是不带任何选项的 IP首部 ,4位能表表示的最大值是 15,也就是说首部长度最大是 60字 节 8位TOS字段有 3个位用来指定IP数据报的优先级 (目

转自:Tsihang 三层网络设备对于IP报文的分片和重组处理原理

三层网络设备对于IP报文的分片和重组处理原理 对于网络分片,我一年前就想整理出来,虽然说网络上的资料很多,但是真正掌握精髓的除非真正做过分片程序,不然很难将协议栈整体联系起来理解.这篇文章,包括设计分片原理图,耗时一小时完成,算是记录一点理解. 三层网络设备,即能够基于IP头信息对报文进行识别和处理的网络设备,在转发IP报文的时候,经常会遇到来自上层的数据包过长,从而导致打上MAC头的帧不符合IEEE802.3标准规定的最大帧长,造成不能被转发和对端解析的问题.这样就需要在三层进行分片,将过长的

网络基础之--IP数据报、分片策略、路由表

IP 数据报的格式 一个 IP 数据报由首部和数据两部分组成. 首部的前一部分是固定长度共 20 字节是所有 IP 数据报必须具有的. 在首部的固定部分的后面是一些可选字段其长度是可变的. IP 数据报首部的固定部分中的各字段 版本--占 4 位指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4) 首部长度--占 4 位可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节. 区分服务--占 8 位用来获得更好的服务在旧标准中叫做服务

mycat 离散分片 -> 枚举分片

1,枚举分片 枚举分片:通过在配置文件中配置可能的枚举id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的 2,添加配置文件 在function.xml里面进行配置: <!-- mapFile标识配置文件名称 type默认值为0(0表示Integer,非零表示String) 默认节点的作用:枚举分片时,如果碰到不识别的枚举值,就让它路由到默认节点 --> <function name="hash-int-mc040301&qu

第三部分 基本类型:第15章 枚举类型和位标志

15.1 枚举类型枚举类型定义了一组“符号名称/值”配对.例如,以下Color类型定义了一组符合,每个符号表示一种颜色. internal enum Color{ White, //赋值0 Red, //赋值1 Green, //赋值2 Blue, //赋值3 Orange //赋值4 } 枚举类型的好处:枚举类型容易编写.阅读和维护.枚举类型是强类型. 派生关系:System.Object -> System.ValueType -> System.Enum -> 枚举类型 枚举类型是

TableInputFormat分片及分片数据读取源码级分析

我们在MapReduce中TextInputFormat分片和读取分片数据源码级分析 这篇中以TextInputFormat为例讲解了InputFormat的分片过程以及RecordReader读取分片数据的过程.接下来咱们分析TableInputFormat的分片信息和数据读取过程. TableInputFormat这是专门处理基于HBase的MapReduce的输入数据的格式类.我们可以看看继承结构:(1)public class TableInputFormat extends Table

24位bmp彩色图转换为24位灰度图的方法

一.所用到的流处理函数: fstream:可同时进行读写操作的文件类:或 ofstream:写操作(从内存中读数据到文件)的文件类: ifstream:读操作(从文件读数据到内存)的文件类. 二.位图文件的格式: ① 位图文件头,所用结构体:BITMAPFILEHEADER,占14个字节 ② 位图信息头,所用结构体:BITMAPINFOHEADER,占40个字节 ③ 颜色表项,所用结构体:RGBQUAD,由biBitCount值决定 ④ 数据区,当结构体BITMAPINFOHEADER中的成员变

给定两个32位的整数N和M,以及表示比特位置的i和j。编写一个方法,将M插入到N中, * 使得M从N的第j位开始,到第i位结束

1 /* 2 * 给定两个32位的整数N和M,以及表示比特位置的i和j.编写一个方法,将M插入到N中, 3 * 使得M从N的第j位开始,到第i位结束,假定从j位到i位足以容纳M,也即是M=10011 4 * 那么j和i之间至少可以容纳5个数,假如,不可能出现j=3,i=2的情况,因为第三位和第二位之间放不下M 5 * 例如 6 * N=1000000000(1024) 7 * M=10011(19) 8 * i=2,j=6,输出10001001100 9 * 思路如下: 10 * 1.将N中的从