当前位置:   article > 正文

7-ip数据分片实验_ip分片实验

ip分片实验

1. 数据分片

  ip层下面的每一种数据链路层都有其特有的数据帧格式,在该数据帧格式中也定义了数据段的最大长度,也就是最大传输单元(Maximum Transmission Unit,MTU)。当一个ip数据包封装成链路层的数据帧时,该数据报的总长度(首部部分加数据部分)不能超过下面的数据链路层的MTU值,比如以太网的MTU值是1500字节,如果数据包的长度超过了数据链路层的MTU时,那么该数据包必须分片然后再传输。分片后的数据包的首部中总长度字段的大小就是每一个分片的首部部分和数据部分的总和。


这里写图片描述
图1-最大传输单元(MTU)

   在图1中,以太网,点到点链路的最大传输单元不一样,如果A计算机发送的数据包是1500字节,A计算机可以不分片,但是R1和R2路由器的点到点链路的MTU值是800,那么R1会把这个数据报分片,然后再转发给R2,不同的分片将会独立选择路径到达目的地,B计算机根据网络层的标识把分片数据重组成原来的数据。如果A计算机发送的数据包超过了1500字节,那么A计算机一开始就必须把数据包分片再发送。


2. ip数据分片实验

   通过前面的学习知道数据包大小如果超过了数据链路层的MTU时,将会把数据包分片传输,下面我们来做一个数据分片实验,通过gns3软件,把路由器的mtu改成100,使用ping命令发送200字节的数据包,然后用wireshark进行抓包。

ip数据分片实验流程如图2所示:

这里写图片描述
图2-数据分片

   在ip数据分片实验中,重点关注标识,标志,片偏移这三个字段。


选中R1设备,点击Console打开R1控制台窗口,R2同理
这里写图片描述

进入R1的控制台,R1具体配置过程:
这里写图片描述

conf t                          //进入R1的配置模式
int f0/0                        //配置R1的f0/0口
ip add 12.1.1.1 255.0.0.0       //配置f0/0口的ip地址为12.1.1.1,掩码为255.0.0.0
no shutdown                     //打开f0/0口
ip mtu ?                        //查看R1的f0/0口的mtu范围大小
ip mtu 100                      //设置R1的f0/0口的mtu为100
exit                            //退出R1的配置模式
ping 12.1.1.2 size 200 repeat 1 //ping R2设备,ping包大小为200字节
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8



进入R2的控制台,R2具体配置过程:
这里写图片描述

conf t                          //进入R2的配置模式
int f0/0                        //配置R2的f0/0口
ip add 12.1.1.2 255.0.0.0       //配置f0/0口的ip地址为12.1.1.2,掩码为255.0.0.0
no shutdown                     //打开f0/0口
exit                            //退出R2的配置模式
  • 1
  • 2
  • 3
  • 4
  • 5

选中红线右击,点击Start capture开始抓包
这里写图片描述



默认捕获R1的f0/0以太网口的数据包,点击ok开始抓包
这里写图片描述


3. 分片1

从图中通过wireshark捕获的数据包来看,R1设备(12.1.1.1)ping R2设备(12.1.1.2)发送的200字节数据分成了3个片,第一个片Frame 20,数据包大小为80
这里写图片描述

同时标志字段的MF位被设置为1,表示后面还有数据,且第一个数据分片的片偏移为0。
这里写图片描述


4. 分片2

第二个片为Frame 21,数据包大小为80:
这里写图片描述

同时第二个分片Frame 21的标志字段的MF位被设置为1,表示后面还有数据,且第二个数据分片的片偏移为80
这里写图片描述


5. 分片3

第三个片为Frame 22,数据报总长度大小为40,去除ip数据报固定首部20字节,那么第三个片的数据大小为20字节。
这里写图片描述

这里MF位没有设置为1,说明这是最后一个分片,且最后一个数据分片的片偏移为160
这里写图片描述



  通过实验分析的结果可知,当R1设备发送的ping包大小超过100时(因为R1的mtu为100),在传输过程中确实会对数据进行分片传输。接下来,我们来看这三个数据分片的片偏移:
这里写图片描述

  数据分片的大小Frame:Frame 20是第一个数据分片,Frame 22是最后一个数据分片,也就是说第一个数据分片的数据大小为80字节,数据偏移量是0 - 79,第二个数据分片的数据大小也是80字节,数据偏移量是80 - 159,最后一个数据大小是20字节,数据偏移量是160 - 179。

   这里可能会有小伙伴有疑问,我们不是发送了200字节的数据吗,怎么这三个分片加起来才180字节?
   这是因为我们发送的ping包在传输过程中封装成ip数据报了,ip数据报的大小为200字节,其中ip首部固定部分占用了20字节,因此剩下的数据部分为180字节,才是我们真正发送的数据。

这里写图片描述

   注意:在设置df-bit位后,该数据包在发送时就不会设置分片,如果发送的数据包大小超过了数据链路层指定的最大传输单元,那么该数据包在发送过程中会被丢弃掉,也就会出现上面这个数据报就出现了Destination unreachable (Fragmentation needed),Fragmentation needed的意思就是该数据报需要分片传输

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/748404
推荐阅读
相关标签
  

闽ICP备14008679号