精华内容
下载资源
问答
  • IP数据包分片

    千次阅读 2018-02-23 13:57:26
    一般的ping则一切正常,结合 wireshark对数据包进行分析,发现过大的数据包传输过程中会进行分片,而代码在处理过程中并为对此进行处理。现对相关基础知识进行总结。 2. IP数据包简介 整个ip数据包中,包含了...

    1. 缘由:

    维护我司老代码,偶然发现在ping过大的数据包时候,映射到上层(非TCP/IP协议栈)的协议不正确。一般的ping则一切正常,结合 wireshark对数据包进行分析,发现过大的数据包传输过程中会进行分片,而代码在处理过程中并为对此进行处理。现对相关基础知识进行总结。

    2. IP数据包简介

    这里写图片描述

    整个ip数据包中,包含了首部和数据。其中,如果选项没有数据,则ip首部的长度就为20byte。
    在ip首部中涉及到分片的主要有:总长度,标识,标志,分片偏移
    总长度:整个数据包的长度,包含了首部和数据。所以要得到数据的长度,就用总长度减去首部长度
    标识:当数据被分片,每个分片具有相同的标识,这样就可以识别相同组的分片 分片偏移:用于确定该分片在原未分片数据中的位置

    3. IP分片

    这里我们以ICMP协议为例进行解析。
    查看windows下ping命令的语法,我们可以看到-l参数可以指定发送的数据大小。
    这里写图片描述
    默认情况下,ping数据包默认大小是32字节,此时肯定不会发生IP数据包分片,如下图所示。
    这里写图片描述

    当icmp发送的数据包大于MTU(以太网中,该值一般为1500字节)时,就会在ip层发生分片。
    这里写图片描述
    同一个IP数据包Identification字段一致。
    Flags字段为1时,表示进行数据包分片,此时若Fragment offset表示分片偏量,若为0,则表示是第一个数据包分片。
    Flags字段为0,表示后面没有分片。

    展开全文
  • IP数据包结构: 第一个字节 版本 用来表示 TCP/IP协议的版本 V4 V6 首部长度 (一般为20字节) 第二个字节 区分服务:代表不同的包的优先级(QoS策略,语音先行) 第三四个字节 数据链路层 数据最大为46-1500字节...

    在这里插入图片描述

    在这里插入图片描述

    IP数据包结构:

    第一个字节

    版本 用来表示 TCP/IP协议的版本 V4 V6

    首部长度 (一般为20字节)

    第二个字节

    区分服务:代表不同的包的优先级(QoS策略,语音先行)

    第三四个字节

    数据链路层 数据最大为46-1500字节(最大传输单元MTU),此外头为18字节,帧的范围64-1518字节。但是由于数据包也有头一般为20字节,所以数据为26-1480字节。

    数据包最大 为65535 字节,若大于1480字节,分片

    在这里插入图片描述

    在这里插入图片描述

    数据包分片

    第五六字节

    标识:数据包分片后,可以恢复成一个完整的数据包。同一个包编号相同

    第七个字节
    标志
    在这里插入图片描述

    第七第八字节

    片偏移

    在这里插入图片描述

    第九个字节

    生存时间:TTL,每过一个路由器TTL减一。路由的时候避免环路。

    第十个字节

    协议号指定该给那个协议进程处理

    ICMP 1

    IGMP 2

    TCP 6

    UDP 17

    IPv6 41

    OSPF 89

    在这里插入图片描述

    在这里插入图片描述

    第十一十二个字节

    首部检验和:检验首部是否被修改

    在这里插入图片描述

    第十三-十六字节

    源地址

    第十七-二十字节

    目的地址

    二十字节以后:用来支持安全,测试(但是后来没用),最后用全0字节补充

    IPv6 为固定

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • IP分片实例分析

    2020-06-05 11:45:51
    IP分片实例分析 引言 最近公司要研发一款用于链路通信加密的设备,使用祖冲之算法对OSI七层中的数据链路层数据进行流式加密,在设计技术方案时,发现一个问题,就是广域网上传输的数据包都是有最大长度限制的,...

    IP分片实例分析

    引言       

            最近公司要研发一款用于链路通信加密的设备,使用祖冲之算法对OSI七层中的数据链路层数据进行流式加密,在设计技术方案时,发现一个问题,就是广域网上传输的数据包都是有最大长度限制的,对TCP数据包是MSS(最大分段长度), 对UDP数据包是MTU(最大传输单元),而对于我们的项目,TCP的分段不用特殊处理,而IP分片需要在加密设备端主动分片,并且满足IP的包格式。UDP不会分段,就由IP分片;TCP会分段,就不用IP分片。

    IP分片

          下面我们就具体说说IP分片,当UDP包长度大于MTU(1500)时,进行IP分片,即一个IP包分成多个:

          1.在IP包头部分,分片后的包和原始包对比,FLAGS 和 FRAGMENT OFFSET两个字段的内容要发生变化----详见下面 IP报文格式 IP分片实例分析

          2.分片后的数据包中,只有第一包是带UDP包首部,其余包只有IP包首部,到了终端后在进行重组。

    IP报文格式

    上面是IP的报文格式,接下来我们先说明各个字段的意义。然后,用Etheral软件转包分析IP的报文格式。

    1.版本:ip报文中,版本占了4位,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。一般此处的值为4,表示ipv4。

    2.头长度:该字段用四位表示,表示整个ip包头的长度,其中数的单位是4字节。即二进制数0000-1111(十进制数0-15),其中一个最小长度为0字节,最大长度为60字节。一般来说此处的值为0101,表示头长度为20字节。

    3.Tos服务字段:该字段用8位表示。该字段一般情况下不使用。

    4..总长度:该字段表示整个ip报文的长度,单位是1字节。能表示的最大字节为2^16-1=65535字节。不过由于链路层的MTU限制。超过1480字节后就会被分片(以太帧MTU为1500的情况下,除去20字节的包头)

    5.标识:该字段是ip软件实现的时候自动产生的,该字段的目的不是为了接受方的按序接受而设置的,而是在ip分片以后,用来标识同一片分片的。方便ip分片的重组。

    6.标志:该字段是与ip分片有关的。其中有三位,但只有两位是有效的,分别为MF,DF,MF。MF标识后面是否还有分片,为1时,表示后面还有分片。DF标识是否能分片,为0表示可以分片。

    7.片偏移:该字段是与ip分片后,相应的ip片在总的ip片的位置。该字段的单位是8字节。比如,一个长度为4000字节的ip报文,到达路由器。这是超过了链路层的MTU,需要进行分片,4000字节中,20字节为包头,3980字节为数据,需要分成3个ip片(链路层MTU为1500),那么第一个分片的片偏移就是0,表示该分片在3980的第0位开始,第1479位结束。第二个ip片的片偏移为185(1480/8),表示该分片开始的位置在原来ip的第1480位,结束在2959。第三片的片偏移为370(2960/8),表示开始的时候是2960位,结束的时候在3979位。

    8.TTL:该片表示生存周期,该值占8位。ip分片每经过一个路由器该值减一,它的出现是为了防止路由环路,浪费带宽的问题。比如,该ip在R1路由器发送到R2路由器。R2路由器又发给R1路由器。防止这种循环。window系统默认为128.

    9.协议:该值标识上层的协议。占8位。其中1,标识ICMP、2标识IGMP、6标识TCP、17标识UDP、89标识OSPF。

    10校验和:该值是对整个数据包的包头进行的校验。占16位。

    11.源地址和目的地址。标识发送ip片的源和目的ip,32位

    12.接下来是可选的部分,一般一些特殊的要求会加在这个部分。

    13:数据

    IP分片实例分析

    下面是我在实际测试中的抓包截图和分析,抓包工具用的IPtool,对其进行了过滤设置,所以只会看到分片后的几个包:

    1. 上图分为三块,最上面的是0--3共四个数据包,是分片后的数据包,可以看到包类型,包长度,以及源地址,目的地址,源端口,目的端口(端口号为什么是杂乱无章的哪?????文中有答案,仔细阅读哦);

    2. 上图左下区域为 报文解析,大家可以对照 IP报文格式 进行学习,注意上图是IP分片的第0包,所以FRAGMENT OFFSET 值为0,那么第1包是185,第2包是370,第3包是555,FLAGS字段 最后一包和其他包的值不一致,可以与下面的截图进行对比;

    3.上图右下区域为报文完整内容。

    附件:四个分片的完整截图

     

     

    重要的事情强调三遍:

    分片后的数据包中,只有第一包是带UDP包首部,其他包的都是数据;FRAGMENT OFFSET 该字段的单位是8字节.

    分片后的数据包中,只有第一包是带UDP包首部,其他包的都是数据;FRAGMENT OFFSET 该字段的单位是8字节.

    分片后的数据包中,只有第一包是带UDP包首部,其他包的都是数据;FRAGMENT OFFSET 该字段的单位是8字节.

    展开全文
  • 如下图所示,有三个数据包,这是分片的第二个数据包数据包总长度为 1500字节,那么分片偏移应该为: 1500 - 20(IP头部大小) = 1480 字节;但如下图所示的分片偏移却是 185; 查阅RFC791,所述如下: The data...

      分析工具: wireshark 3.0

         如下图所示,有三个数据包,这是分片的第二个数据包,数据包总长度为 1500字节,那么分片偏移应该为:

    1500 - 20(IP头部大小) = 1480 字节;但如下图所示的分片偏移却是 185; 

         查阅RFC791,所述如下:

        The data of the long datagram is divided into two portions on a 8 octet (64 bit) boundary(the second portion might not be an integral multiple of 8 octets,but the first must be).

        分片偏移是要按8 octet来对齐的,也就是按8字节对齐,所以这里的一个单位应该是8字节, 185单位 * 8字节 = 1480字节,也就对的上了。

        关于octet,大多数因特网标准使用八位组(octet)这个术语而不是使用byte来表示8位的量,早期的一些系统的byte表示的bit 不一致,有的byte表示10bits,所以octet是准确定义的,1 octet = 8 bit;

         另外,这里是标识 + 分片偏移,一起组合成的十六进制码 20b9,wireshark 中也清楚展示了,flags 是最高三位的 001,分片偏移是剩下的13位: 0 0000 1011 1001, 所以, 20b9 = 0010 0000 1011 1001.

     

     

     

    展开全文
  • IP分片实现分析

    2019-01-08 17:45:54
    数据包的分片与重组发生在IP层, 当IP数据包的长度超过PMTU,并且允许IP分片时,就会进行分片操作,分片后的数据包有独立的IP报头,并且独立路由,在接收端的IP层进行重组. 目前有两种分片处理方式,快速分片和慢速分片....
  • 在网络通信中如果发送的IP包超过MTU...判断数据包是不是分片包是在DecedeIPV4这个函数中做的,具体位置是在 数据包解析模块->DecodeEthernet->DecedeIPV4在DecedeIPV4这个函数中有如下一段代码: /* If a fragment, pa
  • IP分片原理&分析

    千次阅读 2016-07-20 19:11:55
    分片是分组交换的思想体现,也是IP 协议解决的两个主要问题之... IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片( fra
  • 基于Ping命令的IP分片数据分析 (IP4)

    千次阅读 2010-01-30 08:54:00
    基于Ping命令的IP分片数据分析(IP4) 概述:为了让分片的数据变的清晰,本次测试只使用了ICMP的Request和reply,也即通过Ping命令对路由发送数据包。Ping 192.168.1.1说明:Ping默认以32bit字节的数据包发送请求,...
  • Linux 协议栈IP分片和重组分析

    千次阅读 2019-04-03 10:37:39
    最近项目在调试map-t技术,涉及到mtu,ip分片和重组问题。下图是IP协议头的数据字段的示意: 如图所示,IP协议理论上允许的最大IP数据报为65535字节(16位来表示包总长)。但是因为协议栈网络层下面的数据链路层...
  • 对于分片,需要拷贝IP首部和选项,以及数据。而选项的拷贝要注意:根据协议标准,某些选项只应当出现在的一个数据包片中,而其他一些则必须出现在所有的数据包中。 1.2 数据包重组 1.2.1 数据结构 为了使数据包的...
  • ip数据包的结构:首部+数据部分 1.版本(v4或者v6)+首部长度(固定的20字节,所以就没有)+区分服务优先级(我的例子...网络层数据包最大65535字节,数据链路层数据最大 1500字节,所以这里可能会有个数据包分片的行为 ...
  • Wireshark数据包分析实战(第二版)

    千次下载 热门讨论 2014-06-29 14:24:16
    6.2.4IP分片 6.3传输控制协议 6.3.1TCP头 6.3.2TCP端口 6.3.3TCP的三次握手 6.3.4TCP终止 6.3.5TCP重置 6.4用户数据报协议 6.5互联网控制消息协议 6.5.1ICMP头 6.5.2ICMP类型和消息 6.5.3Ech0请求与响应 6.5.4路由...
  • 01 引言最近有位热心读者朋友给成哥发来私信,说他现在对IP分片有疑惑。他读过成哥的《Wireshark数据包分析三板斧》和《一文秒懂TCPIP实际五层结构》系列文章,直言对自己帮助很大,可以算是成哥的铁粉了。但是他在...
  • [协议分析] IP分片(碎片)重组简单概念  链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,可以用 netstat -i 命令查看这个值。如果IP层有...
  • 如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20...
  • 如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP
  • 这本书以wireshark软件为基础,对实际的数据包分析,深入浅出的讲解了很多概念,让我们能够实际了解到每一个数据包在网络上何去何从,比如三次握手,四次挥手,IP分片,DHCP协议工作过程等等。这本书很适合在看《TCP...
  • 本文作者 Strawberry@ QAX A-TEAM...Windows TCP/IP 堆栈在处理 ICMPv6 路由器广告数据包时,存在一个远程执行代码漏洞。攻击者可通过向受影响主机发送特制 ICMPv6 路由广告包来利用此漏洞,成功利用此漏洞的攻击...
  • 01 引言最近有位热心读者朋友给成哥发来私信,说他现在对IP分片有疑惑。他读过成哥的《Wireshark数据包分析三板斧》和《一文秒懂TCPIP实际五层结构》系列文章,直言对自己帮助很大,可以算是成哥的铁粉了。但是他在...
  • 上次分析ip分片重组,这次分析一下ip分片。首先我们要先了解为什么需要分片。比如在以太网中,使用CSMA/CD协议(由网卡实现),他规定了一个链路层数据包(不包括mac头,但是这一版内核实现的时候是包括了mac头的...
  • 上次分析ip分片重组,这次分析一下ip分片。首先我们要先了解为什么需要分片。比如在以太网中,使用CSMA/CD协议(由网卡实现),他规定了一个链路层数据包(不包括mac头,但是这一版内核实现的时候是包括了mac头的...
  • 上次分析ip分片重组,这次分析一下ip分片。首先我们要先了解为什么需要分片。比如在以太网中,使用CSMA/CD协议(由网卡实现),他规定了一个链路层数据包(不包括mac头,但是这一版内核实现的时候是包括了mac头的...
  • [na]IP分片抓包实验

    千次阅读 2018-03-06 15:25:00
    这两点比较重要 ...我们都知道,在以太网中,如果源主机向目标主机发送的数据包大于网关MTU,则该数据包在传输过程中会被IP协议分片传输,具体的分片过程是怎样的呢?我们通过协议分析软件抓包来...
  • 在TCP中,已经自己限定了MSS,默认是536字节,不会形成IP分片。所以值得注意的就是UDP包和ICMP,他们并未对此作出限定,因此,在发送数据包时需要注意包的大小。在这篇中,我们主要分析在DPDK中,是怎么设计分片和...

空空如也

空空如也

1 2 3 4 5
收藏数 90
精华内容 36
关键字:

ip分片数据包分析