eNSP-IP数据包分析
一、IP数据包 基本知识
1.包头基本格式
IP数据报是可变长度的,它由两部分组成:首部和数据
首部由两部分组成:固定部分和可变部分
固定部分20字节,可变部分由一些选项组成,最长40字节
上图中,每一行是32位,4字节,前五行就是20字节。
2.关键字段说明
-
版本 (Version - 4 bits)
-
意思: 这个包裹使用的是哪个“版本”的快递协议?现在最常用的是 IPv4 和 IPv6。
-
可能的值:
-
4
: 代表 IPv4 (目前互联网上使用最多的版本) -
6
: 代表 IPv6 (新一代的互联网协议,地址空间更大,正在逐步普及)
-
-
重要性: 告诉处理这个包裹(数据包)的路由器和电脑,应该用哪套规则来解释这个面单(包头)和里面的东西(数据)。就像快递员一看就知道是按国内件还是国际件的规则处理。
-
-
首部长度 (IHL - Internet Header Length - 4 bits)
-
意思: 这个“快递面单”(IP 包头)本身有多长?
-
可能的值: 通常为
5
(代表 5 * 4 = 20 字节)。因为选项字段很少用,所以大多数情况下 IP 包头就是 20 字节长。 -
重要性: 告诉处理数据的设备,从哪里开始是包裹里的实际“货物”(传输层数据,如 TCP/UDP 数据),而不是面单信息。就像快递员需要知道面单贴到哪里结束,包裹本身从哪里开始。
-
-
服务类型 (ToS - Type of Service - 8 bits) / 区分服务 (DS - Differentiated Services - 6 bits)
-
意思: 这个包裹的“优先级”和“特殊要求”是什么?(比如加急件、易碎品?)
-
可能的值: 这个字段比较复杂,演变过。
-
早期 (
ToS
):可以设置优先级(如最低延时
,最大吞吐量
,最高可靠性
,最小成本
)。 -
现在更常用 (
DS
):用来标记数据包的服务质量 (QoS) 类别。网络设备可以根据这个值决定优先转发哪些包(比如视频通话的包优先级高于网页浏览的包),或者在网络拥塞时先丢弃哪些包。值由网络管理员定义(如EF
- 加速转发,用于语音/视频;AF
- 确保转发,有不同丢弃优先级;BE
- 尽力而为,默认)。
-
-
重要性: 让网络知道这个包裹(数据)有多重要/紧急,以便更好地管理和调度网络资源,提供更好的服务质量。就像你在快递单上勾选“加急”或者“易碎品小心轻放”。
-
-
总长度 (Total Length - 16 bits)
-
意思: 整个包裹(IP 数据包)的总大小是多少?包括“面单”(IP 包头)和里面的“货物”(数据)。
-
可能的值: 范围是
20 字节
(最小,只有包头无数据) 到65535 字节
(最大)。 -
重要性: 告诉接收方这个包裹有多大,以便它知道需要接收多少数据。也帮助网络设备判断一个包是否完整、是否需要分片(见下)。就像快递单上写着包裹的总重量或体积。
-
-
标识 (Identification - 16 bits)
-
意思: 给这个包裹分配的一个唯一编号(在一个特定的会话或数据流中相对唯一)。
-
可能的值: 一个由发送方生成的数字(如
36754
)。 -
重要性: 主要用于分片和重组。 如果一个包裹太大(超过网络链路允许的最大大小,称为 MTU),就需要被拆分成几个小包裹(分片)。所有属于同一个原始大包裹的小分片,它们的
标识
字段值都是一样的!这样接收方才能知道哪些小包裹原来是属于同一个大包裹的,需要把它们重新拼起来。就像你把一个大箱子分成几个小箱子邮寄,每个小箱子上都写着同一个原始运单号。
-
-
标志 (Flags - 3 bits)
-
意思: 控制包裹是否可以拆开(分片),以及当前这个小包裹是不是原始大包裹的最后一块。
-
可能的值 (3个开关):
-
第一位 (Reserved): 保留位,总是
0
。 -
第二位 (DF - Don't Fragment): 禁止分片开关。
-
0
: 允许路由器在需要时把这个包裹拆小(分片)。 -
1
: 不允许拆包!如果包裹太大,路由器直接丢掉它,并给发件人发个错误消息(ICMP 错误)。用于某些不能忍受分片的应用(如一些 VPN)。
-
-
第三位 (MF - More Fragments): 还有更多分片开关。
-
0
: 这个包裹是原始大包裹的最后一个分片(或者它本身就没被分片)。 -
1
: 这个包裹后面还有属于同一个原始大包裹的其他分片(这个不是最后一个)。
-
-
-
重要性: 明确告诉路由器能不能拆包,并告诉接收方还有没有后续分片需要等待。
-
-
片偏移 (Fragment Offset - 13 bits)
-
意思: 如果包裹被拆开了(分片了),当前这个小包裹里的“货物”(数据)在原始大包裹的“货物”中,是从哪个位置开始的?
-
可能的值: 以 8 字节 为单位计数。比如:
-
0
: 表示这是第一个分片,数据从原始数据的开头开始。 -
185
: 表示这个分片的数据是从原始数据185 * 8 = 1480
字节的位置开始的。
-
-
重要性: 接收方收到所有属于同一个原始大包裹的分片后,需要按照
片偏移
的值,像拼图一样,把各个小包裹里的数据按顺序拼接起来,还原出原始数据。就像你收到几个小箱子,要根据箱子编号(偏移量)按顺序打开,把里面的东西放回原位。
-
-
生存时间 (TTL - Time to Live - 8 bits)
-
意思: 这个包裹最多还能经过多少个“驿站”(路由器)。每经过一个路由器,这个值就减 1。重点:这个不是时间(秒),是跳数!
-
可能的值: 范围是
1
到255
。常见的起始值是64
(Linux/Mac) 或128
(Windows)。 -
重要性: 防止包裹在网络里迷路(形成路由环路)永远转圈。如果某个路由器发现这个包裹的 TTL 减到
0
了,它就会把包裹丢掉,并给发件人发一个错误消息(ICMP 超时)。就像快递单上写着“最多中转5次”,每过一个中转站就划掉一次,划没了就退回。
-
-
协议 (Protocol - 8 bits)
-
意思: 包裹里面装的“货物”是什么类型的?也就是 IP 包头后面紧跟着的是哪种高层协议的数据。
-
可能的值 (常见):
-
1
: ICMP (网络控制消息,如 ping) -
6
: TCP (可靠传输,如网页、邮件) -
17
: UDP (快速传输,如视频、DNS 查询) -
89
: OSPF (路由协议) -
(还有很多其他协议号)
-
-
重要性: 告诉最终接收方(目的主机)的 IP 层,它需要把这个包裹里的“货物”(数据)交给哪个“部门”(传输层协议,如 TCP 或 UDP)去处理。就像快递单上写着“内件品名:文件”或“电子产品”,方便分拣中心把包裹送到正确的处理部门(文件部/电子部)。
-
-
首部校验和 (Header Checksum - 16 bits)
-
意思: 用来检查“快递面单”(IP 包头)本身在传输过程中有没有被意外损坏(比如电磁干扰导致的比特翻转)。
-
计算方式: 发送方根据包头内容计算出一个数值填在这里。每个路由器或接收方收到包后,会用同样的方法再计算一遍包头校验和,如果和自己算出来的不一样,就说明包头在传输中出错了。
-
可能的值: 计算得出的数值(如
0x4A5B
)。 -
重要性: 保证面单信息的准确性。如果面单错了(比如目的IP错了),包裹就送错地方了。所以需要校验。注意: 这个只校验包头,不校验包裹里的“货物”(数据),数据的校验由高层协议(如TCP)负责。
-
-
源IP地址 (Source Address - 32 bits for IPv4, 128 bits for IPv6)
-
意思: 发件人的地址! 发送这个包裹的电脑/设备的唯一网络地址。
-
可能的值: 一个合法的 IP 地址 (如
192.168.1.100
对于 IPv4,2001:0db8:85a3::8a2e:0370:7334
对于 IPv6)。 -
重要性: 这是包裹的起点。接收方需要知道是谁发来的,才能回复。路由器(快递中转站)主要根据目的地址转发,但有时也会看源地址(比如做安全策略)。就像快递单上的发件人地址和电话。
-
-
目的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和掩码