您的位置  > 互联网

第2关:帧分析(以太网帧)

以太网帧有多种类型。 不同类型的帧具有不同的格式和MTU值。 但它们可以同时存在于相同的物理介质上。

(1) 以太网版本 2,即 II 帧、DIX 帧,是最常见的帧类型。 通常由IP协议直接使用;

(2) 非标准 IEEE 802.3 帧变体;

(3) IEEE 802.3帧(后面是逻辑链路控制(LLC)帧);

(4) 子网访问协议(SNAP)帧。

1.II帧格式

以太网中大多数数据帧采用II格式:

Type II 以太网帧的最小长度为 64 字节(6+6+2+46+4),最大长度为 1518 字节(6+6+2+1500+4)。 在:

(1)前12字节分别标识发送数据帧的源节点的MAC地址和接收数据帧的目的节点的MAC地址。 (2) 接下来的2个字节标识以太网帧携带的上层数据类型,如十六进制数表示IP协议数据、十六进制数表示IPv6协议数据、十六进制数表示协议数据、十六进制数表示类型协议数据等。 ;

(3)在变长数据字段(Data)中:其长度为46至1500字节;

(4)4字节帧校验序列(Frame.Check,FCS),采用32位CRC循环冗余校验来验证从“目标MAC地址”字段到“数据”字段的数据。

2、IEEE 802.3帧格式:

各个字段的说明如下: (1)D-MAC && S-MAC:分别表示目的地址和源地址。 它们都是 6 字节长。 如果传输的目标地址第一位为0,则表示是普通地址; 如果为1,则表示是组地址。 (2)/Type:通常该字段用于指定消息头后连接的数据类型。 常用的值包括:IPv4()、IPv6()、ARP()。 该值表示 Q 帧 (802.1q)。 通常,基本以太网帧的长度为 1518 字节,但较新的标准将此值扩展到 2000 字节。 (3) MAC Data:数据主体,由LLC和Data组成。 最小长度为48字节(加上12字节帧头,CRC4字节正好是64字节)。 当数据体小于48字节时,将添加填充字段。 选择最小长度是出于冲突检测原因 (CSMA/CD)。 数据字段的最大长度为1502字节。

IEEE 802.2 LLC 的标头包括:

(A) DSAP目的服务访问字段,1字节长,指示该帧的目的上层协议类型; (B) ASAP源服务访问字段,1字节长,表示该帧的源上层协议类型; (C) 控制 1 个字部分或 2 个字节,长度取决于所封装的 LLC 数据的类型,对于 LLC 数据报(类型 1)为 1 个字节,对于 LLC 会话部分(类型 2)为 2 个字节。 类型1表示无连接、不可靠的LLC数据报,控制字段用0x03表示; 类型 2 表示面向连接的可靠 LLC 会话。 (4)FCS(Frame Check):也称为CRC(Check),CRC是一种检错码,用于判断接收到的帧比特是否正确。

3.IEEE 802.3 SNAP

尽管IEEE 802.3是一个标准,但尚未被业界采用。 以太网 II 已成为事实上的标准。 于是IEEE 802.3扩展产生了IEEE 802.3 SNAP来兼容以太网网络报头协议,并将SNAP报头插入到IEEE 802.2 LLC报头之后。 SNAP 标头字段包含:

(1)组织码长3个字节,表示维持接下来2个字节含义的组织。 对于 IP 和 ARP,该字段设置为 0x00-00-00。

(2) 以太网类型 如果组织码为0x00-00-00,则接下来的2个字节是以太网类型IP() ARP()。 由于在 LLC 标头中添加了 3 个字节,在 SNAP 标头中添加了 5 个字节,因此有效负载比以太网 II 少了 8 个字节。

【实验任务】

1.切换到终端窗口

2、检查虚拟机eth0网卡的MAC地址、IP地址、子网掩码,并记录在实验报告中。 使用命令:

3、查看虚拟机网关IP地址使用命令:route对应行

4. 检查虚拟机网关的MAC地址。 使用命令:arp。 根据网关IP地址,查ARP表,获取对应的MAC地址,记录在实验报告中。

5、打开,开始抓网络接口eth0上的数据包,并最小化窗口; (双击)

6、打开浏览器,访问,等待网页打开;

7、切换到窗口,停止抢组;

8、使用群组过滤功能,过滤掉http群组; 单击以选择消息摘要窗口中的第一条 http 消息;

9、分析当前报文采用哪种以太网帧格式,并记录实验报告中的典型字段值。

10. 确保当前报文的目的MAC地址指向目标(可选:平台虚拟机的网关MAC地址/主机MAC地址),并填写到代码文件窗口第一行末尾(不要破坏“冒号”之前的提示内容)。 注:填写的内容仅限于范围(平台虚拟机、平台虚拟机网关、百度服务器,无法确定)

11、在捕获的报文中找到广播帧,记录广播MAC地址值(采用标准书写,十六进制,冒号分隔),填入到代码文件窗口第二行末尾(不要破坏“提示内容之前的冒号”)。

使用II帧格式。

第3级:IP报文分析 1. MAC帧和数据负载

在TCP/IP网络中,MAC帧的数据部分只有一个字段,其长度在46到1500字节之间。 所包含的信息是从网络层传输来的数据。 网络层常见的协议有IP、ARP、ICMP协议。 因此,MAC帧的数据字段通常是IP数据包或ARP消息。

2.IP数据报格式:

IP数据报(IP)是一种独立于硬件的虚拟数据包,由报头和数据组成。 其格式如下图所示。 报头的第一部分是 20 字节的固定长度,这是所有 IP 数据报所必需的。 标头的固定部分后面是长度可变的可选字段。 报头中的源地址和目的地址都是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. Flag:该字段与ip分片相关。 共有三个,但只有两个有效,即 MF、DF 和 MF。 MF识别后面是否有碎片。 当为1时,表示后面有碎片。 DF标识是否可以分片。 如果为0,则表示可以分片。

7、Slice :该字段是ip分片后对应ip slice在总ip slice中的位置。 该字段的单位是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 路由器。 防止这种循环。 系统默认为128。

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

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

11、源地址和目的地址。标识发送IP切片的源和目的IP,32位

12.可选的,一般会在本节中添加一些特殊要求。

3. ICMP报文格式

网络本身并不可靠。 在网络传输过程中,可能会发生许多意外事件,导致数据传输失败。 网络层的IP协议是无连接的协议。 它不会处理网络层传输中的故障。 然而网络层的ICMP协议正好弥补了IP的缺点。 它使用IP协议来传输信息,以数据包的形式传输数据。 网络中的源节点提供网络层发生的错误信息反馈。 ICMP 可以看作是IP 协议的配套协议。 ICMP 消息封装在 IP 数据报中并发送。

 Type:标识生成的错误消息,为ICMP消息中的第一个字段;

 代码:进一步限制ICMP报文的生成。 该字段用于查找错误原因;

 :存储ICMP 使用的校验和值。

 :保留字段供将来使用,起始值设置为0

 数据:包含所有接收到的数据报的IP 标头。 还包含IP数据报中的前8个字节的数据;

4.Ping命令

其主要功能是进行网络连通性测试。 通信协议是ICMP。 系统下Ping命令的格式如下:

ping [-t] [-a] [-n 计数] [-l 大小] [-f] [-i TTL] [-v TOS] [-r 计数] [-s 计数]

[[-j 主机列表] | [-k host-list]] [-w ] 实验中可能用到的参数解释如下:

-t:用户主机继续向目标主机发送echo请求消息,直到用户中断;

-n count:指定 ping 的次数。 具体次数由count指定。 默认值为4;

-l size:指定发送到目标主机的数据包的大小。 默认为32字节,最大值为65,527;

-w:指定超时间隔,以毫秒为单位;

:指定要 ping 的远程计算机。

Unix/Linux系统下Ping命令的格式如下:

ping [-c 计数] [-s 大小]

-c count:指定ping多少次,具体次数由后面的count指定。

-s size:指定发送到目标主机的数据包大小,默认为32字节

:指定要 ping 的远程计算机。

五、命令及工作原理

它的主要功能是跟踪沿途的路线(消息传输)。 通信协议为ICMP,用于unix和linux系统环境。 在系统环境下,对应的命令是。 命令格式:目标主机名或IP。 该程序设计为使用 ICMP 和 IP 的 TTL(生存时间)字段。 首先发送一个TTL为1的IP(实际上每次发送3个40字节的数据包,包括发送数据包的源地址、目的地址和时间戳)到目的地。 当路径上的第一个路由器 () 收到此消息时,它会将 TTL 减 1。此时 TTL 变为 0,因此路由器会丢弃此消息,并发回一条“ICMP 时间”消息(包括源地址) IP 数据包的内容、IP 数据包的所有内容和路由器的 IP 地址)。 收到这条消息后,你就会知道这条路径上存在这个路由器,然后再发送一个 2 的 TTL 来寻找第二个路由器...每次在发送的 TTL 上加 1 来寻找另一个路由器,这个重复运动持续进行,直到到达某个目的地。 当到达目的地时,主机不会发回ICMP时间消息,因为它已经是目的地。 那么如何知道目的地已经到达呢? 当向目的地发送UDP时,它选择传递的端口是一般应用程序不使用的数字(30000以上),因此当UDP到达目的地时,主机会发回一条“ICMP端口”消息,当收到此消息,您就知道已到达目的地。 提取发送ICMP TTL过期报文的设备IP地址并进行域名解析。 每次都会打印出一系列数据,包括所经过的路由设备的域名和IP地址,以及三个数据包各自来回所花费的时间。

【实验任务】

1.切换到终端窗口

2、已知目标机器的IP地址为119.38.215.130。 测试IP数据包从平台虚拟机发送到目标机器。 一路上经过哪些路由器? 执行命令:119.38.215.130。 将获得的数据整理并保存在实验报告中。 课后分析沿途经过哪些路由器。

3、分析沿途经过的路由器数量,填写到代码文件窗口第一行末尾(不要破坏“冒号”之前的提示内容)。 注意:有两种可能的答案,系统只会识别其中一种(如果系统无法识别您的答案,您可以减 1 或加 1,然后重试)。

4.打开它,开始抓取网络接口eth0上的数据包,并将窗口最小化;

5、在终端窗口中执行以下命令: ping -c 3 -s 0 解释实验报告中命令行各参数的含义; 将获得的数据进行整理,保存在实验报告中,并在课后完成数据分析。

6、切换到窗口,停止抢组;

7、使用包过滤功能,过滤掉icmp包; 单击以选择消息摘要窗口中的第一个 icmp 数据包;

8. 调整数据包头详细信息窗口的大小,展开IP头和ICMP头的所有字段,然后截取窗口的屏幕截图并将其粘贴到实验报告中。 课后对主要领域进行分析和解读。

9、分析第一条icmp响应(回复)报文,并在代码文件窗口第二、三行末尾填写其类型值和代码(不要破坏“冒号”之前的提示内容)。

调整数据包头详细信息窗口的大小,展开IP头和ICMP头的所有字段,然后截取窗口的屏幕截图并将其粘贴到实验报告中。 课后对主要领域进行分析和解读。

图21 IP

这是一个IPv4数据包,其中包含源IP地址和目的IP地址,以及一些其他信息。 具体分析如下:

-版本号为4,表示这是IPv4协议。

- 标头长度为 20 个字节,即 5 个 32 位字。

- 区分服务字段为 0x14,其中 DSCP 为,ECN 为 Not-ECT。

- 总长度为 28 字节。

- 标识符是,即15127。

- 标志为 ,表示没有碎片。

- 生存时间为55。

- 该协议是 ICMP,即控制消息协议。

- 标头校验和是。

- 源IP地址是122.225.212.158。

- 目标 IP 地址是 172.16.49.192。

图22 icmp

这是一条ICMP协议回复报文,包含以下信息:

- Type:0,表示这是一条回复消息,而不是一条请求消息。

- 代码:0,表明这是一个 Echo (ping) 回复。

- : ,表示校验和正确。

- (BE): 552(),表示标识符为552。

- (LE): 10242 (),表示该标识符的-字节顺序为10242。

- (BE): 0 (),表示序列号为0。

- (LE): 0(),表示序列号的-字节序为0。

根据这些信息,我们可以确定这是一条回复消息,而不是一条请求消息,而且是一条 Echo(ping)回复。 标识符为552,序列号为0。校验和正确。