09 论数据如何被切片的-IP切片及IP首部讲解

大家好!
我是小黄,很高兴又跟大家见面啦 !
今天更新的是:


创建时间:2021年1月23日
软件: eNsp_Client 、SecureCRT 、MindMaster


在这里插入图片描述

  • 先放一张思维导图,大致知道操作系统的具体功能和目标,然后再一一展开叙述。

1. IP分片 :

  • 分片:网络中转发的IP报文的长度可以不同,但如果报文长度超过了数据链路所支持的最大长度,则报文就需要分割成若干个较小的片段才能够在链路上传输。将报文分割成多个片段的过程叫做分片。

1. 1 IPv4报头示意图:

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

  • 4位版本号:IP协议的版本,ipv4就值为4
  • 4位头部长度:指这个报头一共有多少个字节,其中1个数表示4字节
    4位能表示到15(头部长度为1111时),因此报头最多4*15=60个字节
  • 8位服务类型
    其中3位表示优先权字段,现在已经忽略。
    然后4位为TOS字段,这四位互斥,只能一位取1,分别表示最小延迟,最大吞吐量,最高可靠性和最小消费。
    然后还有1位保留,必须为0;
  • 16位总长度:指整个ip数据报即报头+数据的大小。
    其中一个数表示一个字节。由于ip所在网络层 的 下一层链路层封装为帧,而帧的最大传输单元(MTU)的上限为1500个字节(这里都用以太网的帧举例)。
    在这里插入图片描述在这里插入图片描述
    因此这个2^16个字节的长度就远远超过了它下层的限制,所以ip数据报如果超过1500个字节,会被分片传输。

这就会有一个问题,如果ip数据报的大小为1501,那么就会被分为2片。一个片的数据为1500字节,另一片的数据为1字节,后者显然很不划算(分片带来的性能消耗

  • 16位标识:标识了每个发送的数据报,初值是随机的,之后每发一个数据报值+1。
  • 3位标识字段
  1. 第一位保留
  2. 第二位表示是否禁止下层链路层把ip封装成帧的时候使用分片机制,如果这个设置了,那么ip数据报就不会分片,如果ip数据报超过1500字节(以太网是1500,其他的不一定),那么这个ip数据报就被丢弃,返回差错报文。
  3. 第三位表示 此ip数据报是否有 更多的数据报分片。

1. 2 分片机制 ( 标识、标志、片偏移 )

  • 接收端根据分片报文中的标识符(Identification),标志(Flags),及片偏移(Fragment Offset)字段对分片报文进行重组。

在这里插入图片描述

  • 标识符 :用于识别属于同一个数据包的分片,以区别于同一主机或其他主机发送的其它数据包分片,保证分片被正确的重新组合。
  • 标志字段 :用于判断是否已经收到最后一个分片。
  1. 最高位 : 是保留位 , 没有意义 。
  2. 中间位 :DF 位 , Don’t Fragment ; DF = 1 时 , 禁止分片 ; DF = 0 时 , 允许分片 。
  3. 最低位 : MF 位 , More Fragment ; MF = 1 时 , 后面还有分片 ; MF = 0 时 , 本分片就是该分组的最后一个分片 , 后面没有分片 。
  4. 只有 DF = 0 时 , MF 才有意义 。
  • 片偏移字段 :表示每个分片在原始报文中的位置。第一个分片的片偏移为0,第二个分片的片偏移表示紧跟第一个分片后的第一个比特的位置。

1. 3 IPv4分片的示意图:

在这里插入图片描述

分片编号IPv4报文字节数分片偏移量(F0)用户数据字节数
01500=20(IPv4 Header)+8(UDP Header)+1472(用户数据)01472
11500=20(IPv4 Header)+1480(用户数据)185=1480/81480
21500=20(IPv4 Header)+1480(用户数据)370=1480*2/81480
31500=20(IPv4 Header)+1480(用户数据)555=1480*3/81480
468=20(IPv4 Header)+48(用户数据)740=1480*4/848
累计6068字节-----5690字节

  1. 分片现象发生在IP层(网络层)。被分片的数据是来自上层,也就是TCP/UDP层。因此,首个分片带有TCP Header或UDP Header,其余分片不带。
  2. 最后一个分片的IPv4报文长度 ≤ MTU字节数;其他分片的IPv4报文长度 == MTU字节数
  3. More Fragments(MF)标志。这个标志是IPv4 Header中的一个字段。More Fragments的意思是“更多的分片”。MF=1的确切含义是:本IPv4包是分片IPv4包 AND 后续还有分片;MF=0的确切含义为:本IPv4包不是分片IPv4包 OR 后续不再有分片。
    4.Fragment Offset (FO)分片偏移量。FO也是IPv4 Header中的一个字段。FO表示特定分片相对于原始未分片IP报文起始位置偏移量(参见图中左侧的红色虚线)。FO的单位是:8字节。例如FO=185,偏移量实际值为185*8=1480字节。

1. 4 为什么会产生IP分片:

  • 每一种物理网络都会规定链路层数据帧的最大长度,称为链路层MTU(Maximum Transmission Unit). IP协议在传输数据包时,若IP数据报加上数据帧头部后长度大于MTU,则将数据报文分为若干分片进行传输,并在目标系统中进行重组 。
  • 举例说明:比如说,在以太网环境中可传输最大IP报文大小(MTU)为1500字节。如果要传输的数据帧大小超过1500字节,即IP数据报长度大于1472(1500-20-8=1472,普通数据报)字节,则需要分片之后进行传输。

  1. 最大传送单元 MTU: MTU 是 链路层可封装数据 的上限 。
  2. MTU 值: 以太网的 最大传送单元 MTU 是 1500 15001500 字节 。
  3. 什么时候进行分片?: 链路层的数据部分 , 就是 IP 分组 , 该分组的 MTU 是 1500 字节 , 当网络层的 IP 分组超过 1500 字节, 此时就要进行分片 。

1. 5 实验演示分片:

实验设备:eNSP 、Wireshark
实验步骤

  1. eNSP上搭建如下实验环境:PC 、AR2220
  2. 配置PC端上的IP地址与子网掩码、路由端的IP地址
  3. 在PC端上ping 192.168.1.2 验证实验环境是否搭建成功。
  4. 在PC端进行数据抓包:ping 192.168.1.2 查看数据包情况
  5. 向192.168.1.2发送3000字节大小的数据包:ping 192.168.1.2 -L 3000 查看数据包的情况
  6. 根据抓取到的数据包情况来进行分析:
  7. 为什么前两个是IPv4,第三个为ICMP数据包呢?因为前两个IPv4数据包是从后面分割出去的,并不含ICMP报文。
  • 搭建环境:

在这里插入图片描述

  • 验证实验环境是否搭建成功

在这里插入图片描述

  • 第一次抓包的ping 192.168.1.1 看抓包情况(都是ICMP数据包)

在这里插入图片描述

  • 向192.168.1.2 发送3000字节的数据包之后的情况(可以看到数据包中包含ICMP和IPv4的数据包、说明此时数据发生了 分片)

在这里插入图片描述

  • 查看分包情况是否跟理论一致

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

  • 第一片分包情况

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

2. TTL值 :

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

  • 报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。
  • TTL值诞生的目的:避免出现环路。

2. 1 实验演示TTL值:

实验设备:eNSP 、Wireshark
实验步骤

  1. eNSP上搭建如下实验环境:PC 、AR2220
  2. 配置PC端上的IP地址与子网掩码、路由端的IP地址
  3. 配置每个路由使其可以互通。
    ip route-static 目标IP GigabitEthernet 出接口 下一跳
    路由1:ip route-static 23.1.1.0 24 GigabitEthernet 0/0/0 12.1.1.2
    路由2:ip route-static 192.168.1.0 24 GigabitEthernet 0/0/0 12.1.1.1
    路由3:ip route-static 192.168.1.0 24 GigabitEthernet 0/0/1 23.1.1.2
  4. 配置PC端出口网关:路由1出口的地址192.168.1.2
  5. 在PC端上23.1.1.3 验证实验环境是否搭建成功。
  6. 在每个出接口上进行抓包来进行TTL值分析。ping 23.1.1.3
  7. 想从路由1上ping 路由3需要进行配置:
  • 配置实验环境:

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

  • 数据抓包进行分析TTL值:

在这里插入图片描述

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

补充说明不同的操作系统的TTL值不同。可以用来探测系统
win系统:XP 128 、7 64 、10 128
Linux系统:64
UNINE系统:255
每次经过一个路由设备转发TTL值减一,当TTL值为0时将丢弃数据包

3. 其他应用层协议 :

在这里插入图片描述


各位路过的朋友,如果觉得可以学到些什么的话,点个赞 再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。

每个小伙伴的关注都是本人更新博客的动力!!!
请微信搜索【 在下小黄 】文章更新将在第一时间阅读 !
在这里插入图片描述

把握现在 ,展望未来 ,加油 !


由于水平有限 ,写的难免会有些不足之处 ,恳请各位大佬不吝赐教 !

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在下小黄

ღ给个赞 是对小黄最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值