eNSP-IP数据包分析

一、IP数据包 基本知识

1.包头基本格式

IP数据报是可变长度的,它由两部分组成:首部和数据

首部由两部分组成:固定部分和可变部分

固定部分20字节,可变部分由一些选项组成,最长40字节

上图中,每一行是32位,4字节,前五行就是20字节。

 2.关键字段说明

  1. 版本 (Version - 4 bits)

    • 意思: 这个包裹使用的是哪个“版本”的快递协议?现在最常用的是 IPv4 和 IPv6。

    • 可能的值:

      • 4: 代表 IPv4 (目前互联网上使用最多的版本)

      • 6: 代表 IPv6 (新一代的互联网协议,地址空间更大,正在逐步普及)

    • 重要性: 告诉处理这个包裹(数据包)的路由器和电脑,应该用哪套规则来解释这个面单(包头)和里面的东西(数据)。就像快递员一看就知道是按国内件还是国际件的规则处理。

  2. 首部长度 (IHL - Internet Header Length - 4 bits)

    • 意思: 这个“快递面单”(IP 包头)本身有多长?

    • 可能的值: 通常为 5 (代表 5 * 4 = 20 字节)。因为选项字段很少用,所以大多数情况下 IP 包头就是 20 字节长。

    • 重要性: 告诉处理数据的设备,从哪里开始是包裹里的实际“货物”(传输层数据,如 TCP/UDP 数据),而不是面单信息。就像快递员需要知道面单贴到哪里结束,包裹本身从哪里开始。

  3. 服务类型 (ToS - Type of Service - 8 bits) / 区分服务 (DS - Differentiated Services - 6 bits)

    • 意思: 这个包裹的“优先级”和“特殊要求”是什么?(比如加急件、易碎品?)

    • 可能的值: 这个字段比较复杂,演变过。

      • 早期 (ToS):可以设置优先级(如 最低延时最大吞吐量最高可靠性最小成本)。

      • 现在更常用 (DS):用来标记数据包的服务质量 (QoS) 类别。网络设备可以根据这个值决定优先转发哪些包(比如视频通话的包优先级高于网页浏览的包),或者在网络拥塞时先丢弃哪些包。值由网络管理员定义(如 EF - 加速转发,用于语音/视频;AF - 确保转发,有不同丢弃优先级;BE - 尽力而为,默认)。

    • 重要性: 让网络知道这个包裹(数据)有多重要/紧急,以便更好地管理和调度网络资源,提供更好的服务质量。就像你在快递单上勾选“加急”或者“易碎品小心轻放”。

  4. 总长度 (Total Length - 16 bits)

    • 意思: 整个包裹(IP 数据包)的总大小是多少?包括“面单”(IP 包头)和里面的“货物”(数据)。

    • 可能的值: 范围是 20 字节 (最小,只有包头无数据) 到 65535 字节 (最大)。

    • 重要性: 告诉接收方这个包裹有多大,以便它知道需要接收多少数据。也帮助网络设备判断一个包是否完整、是否需要分片(见下)。就像快递单上写着包裹的总重量或体积。

  5. 标识 (Identification - 16 bits)

    • 意思: 给这个包裹分配的一个唯一编号(在一个特定的会话或数据流中相对唯一)。

    • 可能的值: 一个由发送方生成的数字(如 36754)。

    • 重要性: 主要用于分片和重组。 如果一个包裹太大(超过网络链路允许的最大大小,称为 MTU),就需要被拆分成几个小包裹(分片)。所有属于同一个原始大包裹的小分片,它们的 标识 字段值都是一样的!这样接收方才能知道哪些小包裹原来是属于同一个大包裹的,需要把它们重新拼起来。就像你把一个大箱子分成几个小箱子邮寄,每个小箱子上都写着同一个原始运单号。

  6. 标志 (Flags - 3 bits)

    • 意思: 控制包裹是否可以拆开(分片),以及当前这个小包裹是不是原始大包裹的最后一块。

    • 可能的值 (3个开关):

      • 第一位 (Reserved): 保留位,总是 0

      • 第二位 (DF - Don't Fragment): 禁止分片开关。

        • 0: 允许路由器在需要时把这个包裹拆小(分片)。

        • 1: 不允许拆包!如果包裹太大,路由器直接丢掉它,并给发件人发个错误消息(ICMP 错误)。用于某些不能忍受分片的应用(如一些 VPN)。

      • 第三位 (MF - More Fragments): 还有更多分片开关。

        • 0: 这个包裹是原始大包裹的最后一个分片(或者它本身就没被分片)。

        • 1: 这个包裹后面还有属于同一个原始大包裹的其他分片(这个不是最后一个)。

    • 重要性: 明确告诉路由器能不能拆包,并告诉接收方还有没有后续分片需要等待。

  7. 片偏移 (Fragment Offset - 13 bits)

    • 意思: 如果包裹被拆开了(分片了),当前这个小包裹里的“货物”(数据)在原始大包裹的“货物”中,是从哪个位置开始的?

    • 可能的值: 以 8 字节 为单位计数。比如:

      • 0: 表示这是第一个分片,数据从原始数据的开头开始。

      • 185: 表示这个分片的数据是从原始数据 185 * 8 = 1480 字节的位置开始的。

    • 重要性: 接收方收到所有属于同一个原始大包裹的分片后,需要按照 片偏移 的值,像拼图一样,把各个小包裹里的数据按顺序拼接起来,还原出原始数据。就像你收到几个小箱子,要根据箱子编号(偏移量)按顺序打开,把里面的东西放回原位。

  8. 生存时间 (TTL - Time to Live - 8 bits)

    • 意思: 这个包裹最多还能经过多少个“驿站”(路由器)。每经过一个路由器,这个值就减 1。重点:这个不是时间(秒),是跳数!

    • 可能的值: 范围是 1 到 255。常见的起始值是 64 (Linux/Mac) 或 128 (Windows)。

    • 重要性: 防止包裹在网络里迷路(形成路由环路)永远转圈。如果某个路由器发现这个包裹的 TTL 减到 0 了,它就会把包裹丢掉,并给发件人发一个错误消息(ICMP 超时)。就像快递单上写着“最多中转5次”,每过一个中转站就划掉一次,划没了就退回。

  9. 协议 (Protocol - 8 bits)

    • 意思: 包裹里面装的“货物”是什么类型的?也就是 IP 包头后面紧跟着的是哪种高层协议的数据。

    • 可能的值 (常见):

      • 1: ICMP (网络控制消息,如 ping)

      • 6: TCP (可靠传输,如网页、邮件)

      • 17: UDP (快速传输,如视频、DNS 查询)

      • 89: OSPF (路由协议)

      • (还有很多其他协议号)

    • 重要性: 告诉最终接收方(目的主机)的 IP 层,它需要把这个包裹里的“货物”(数据)交给哪个“部门”(传输层协议,如 TCP 或 UDP)去处理。就像快递单上写着“内件品名:文件”或“电子产品”,方便分拣中心把包裹送到正确的处理部门(文件部/电子部)。

  10. 首部校验和 (Header Checksum - 16 bits)

    • 意思: 用来检查“快递面单”(IP 包头)本身在传输过程中有没有被意外损坏(比如电磁干扰导致的比特翻转)。

    • 计算方式: 发送方根据包头内容计算出一个数值填在这里。每个路由器或接收方收到包后,会用同样的方法再计算一遍包头校验和,如果和自己算出来的不一样,就说明包头在传输中出错了。

    • 可能的值: 计算得出的数值(如 0x4A5B)。

    • 重要性: 保证面单信息的准确性。如果面单错了(比如目的IP错了),包裹就送错地方了。所以需要校验。注意: 这个只校验包头,不校验包裹里的“货物”(数据),数据的校验由高层协议(如TCP)负责。

  11. 源IP地址 (Source Address - 32 bits for IPv4, 128 bits for IPv6)

    • 意思: 发件人的地址! 发送这个包裹的电脑/设备的唯一网络地址。

    • 可能的值: 一个合法的 IP 地址 (如 192.168.1.100 对于 IPv4, 2001:0db8:85a3::8a2e:0370:7334 对于 IPv6)。

    • 重要性: 这是包裹的起点。接收方需要知道是谁发来的,才能回复。路由器(快递中转站)主要根据目的地址转发,但有时也会看源地址(比如做安全策略)。就像快递单上的发件人地址和电话。

  12. 目的IP地址 (Destination Address - 32 bits for IPv4, 128 bits for IPv6)

    • 意思: 收件人的地址! 这个包裹最终要送达的电脑/设备的唯一网络地址。

    • 可能的值: 一个合法的 IP 地址 (如 8.8.8.8 对于 IPv4, 2001:4860:4860::8888 对于 IPv6)。

    • 重要性: 这是最重要的字段! 网络中的路由器(快递中转站)主要就是查看这个地址来决定包裹下一步该往哪个方向(哪个接口/线路)发送,直到最终到达目的地。就像快递单上的收件人地址和电话,是整个快递流程的核心依据。

二、实验分析

1.搭建拓扑结构

2.配置电脑

3.配置路由器

<Huawei>sys    #进入系统视图
[Huawei]int g0/0/0     #进入0号接口
[Huawei-GigabitEthernet0/0/0]ip address 192.168.1.1 24     #设置IP和掩码

[Huawei-GigabitEthernet0/0/1]int g0/0/1  #进入1号接口
[Huawei-GigabitEthernet0/0/1]ip address 192.168.2.1 24      #设置IP和掩码

4.打开抓包软件

5.ping测试

6.分析

### ENSPIP 分片协议的工作原理 在网络通信过程中,数据包大小可能超过传输路径上的最大传输单元(MTU),这时就需要对数据包进行分片处理。IP分片机制允许较大的IP数据报被分割成较小的数据片段以便于传输。 当设备接收到一个大于其出站接口 MTU 的 IP 数据包时,会触发分片操作。该过程由源主机或中间路由器执行,在IPv4中,如果设置了DF位,则不允许分片并返回ICMP错误消息;如果没有设置DF标志,则可以对该数据包进行分片[^1]。 对于每一片段而言,除了最后一个片段外都具有相同的标识符、源地址和目的地址,并且每个片段都有自己的头部校验和。接收端依据这些信息重新组装原始数据报。 ### 配置教程 #### 实现 IP 分片功能的前提条件 为了能够在企业网络仿真平台(ENSP)环境中观察到IP分片现象,通常需要满足以下几个前提: - 网络拓扑结构应包含至少两个不同子网; - 子网间的连接链路存在不同的MTU限制; - 发送方发送的数据量较大以至于超过了某些链路上的最小MTU值。 #### 创建模拟环境 启动 ENSP 并创建一个新的工程文件。按照实际需求构建简单的三层架构模型,比如客户端PC -> 路由器A (Router A) -> 路由器B(Router B)->服务器Server。确保各节点间能够正常通讯。 #### 设置 MTU 参数 针对上述提到的不同链路段分别设定各自的MTU参数。例如,在 Router A 和 Router B 之间的直连串口上降低默认MTU值至小于标准以太网帧长度(通常是1500字节)。具体命令如下所示: ```shell interface Serial 0/0/0 mtu 1400 ``` 此配置意味着任何试图经过这条线路传送的大于1400字节的数据都将经历一次分片过程[^2]。 #### 测试与验证 利用ping工具携带大尺寸负载向目标机器发起请求,以此检验是否会发生预期中的分片行为。可以通过调整 ping 命令选项指定更大的 ICMP Echo Request 报文大小来进行测试。如Linux下的`ping -s size target_ip_address` 或者 Windows 下 `ping /l size target_ip_address`. 一旦确认发生了分片事件,就可以进一步深入研究各个阶段的具体细节了。这不仅有助于理解理论概念的实际应用情况,也为后续更复杂的路由协议学习打下坚实基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值