目录

第1关:Wireshark基本使用入门

【实验目的】

【实验环境】

【本地主机、平台虚拟机之间数据传递】

wireshark基本用法】

1、wireshark主界面

2、抓取分组操作

3、Wireshark窗口功能

4、筛选分组操作

【实验操作】

​编辑

第2关:Ethernet帧分析

【以太网帧格式】

1、Ethernet II帧格式

2、IEEE 802.3 帧格式:

IEEE 802.2 LLC的头构成:

3、IEEE 802.3 SNAP

【实验任务】

第3关:IP报文分析

1、MAC帧与数据负载

2、IP数据报格式:

3、ICMP报文格式

4、Ping 命令

5、traceroute命令与工作原理

【实验任务】


第1关:Wireshark基本使用入门

【实验目的】

1、掌握wireshark工具的基本使用方法

【实验环境】

1、头歌基于Linux的虚拟机桌面系统

2、网络报文分析工具wireshark

3、浏览器firefox

【本地主机、平台虚拟机之间数据传递】

1、文本的复制与粘贴 操作入口:点击虚拟机桌面右上角“工具栏”,选择“复制粘贴”菜单项。 特点:可双向复制与粘贴。

2、文件传输 操作入口:点击虚拟机桌面右上角“工具栏”,选择“上传文件”或“下载文件”菜单项。

3、截图 可以使用本地机的截图工具,对虚拟机桌面应用进行截图。

wireshark基本用法】

Wireshark是一种开源的网络协议分析工具,主要功能有捕捉报文、解码分析、报文统计。官方下载地址:Wireshark · Download

1、wireshark主界面

双击桌面上的图标 ,可启动Wireshark。启动后的用户界面如下图所示,中间列表部分列出了所有网络接口。

2、抓取分组操作

A.单击中间网络接口列表中,某一网络接口如eth0,选中网络接口,通过菜单“捕获”-“开始”或工具栏中的

按钮,开始捕获选定接口中的网络分组;

B.也可以双击中间网络接口列表中,某一网络接口如eth0,可以开始抓取分组;

C.通过菜单“捕获”-“停止”或工具栏中的按钮

停止抓取分组。

D.通过菜单“捕获”-“重新开始”或工具栏中的按钮

重新开始抓取。

3、Wireshark窗口功能

(1)命令菜单和工具栏 命令菜单位于窗口的最顶部,是标准的下拉式菜单。最常用菜单命令有两个: 文件、 捕获。 文件 菜单允许你保存捕获的分组数据,或打开一个已被保存的捕获分组数据文件,或退出 WireShark 程序。 捕获 菜单允许你开始捕获分组。 工具栏位于命令菜单的下方,提供常用功能的快捷方式。如

:开始捕获、

:停止捕获、

:重新抓取分组。

(2)显示过滤规则 在该字段中,可以填写协议的名称或其他信息,根据此内容可以对分组列表窗口中的分组进行过滤。

(3)捕获分组列表(报文摘要窗口) 按行显示已被捕获的分组内容,其中包括: WireShark 赋予的分组序号、捕获时间、分组的源地址和目的地址、协议类型、分组中所包含的协议说明信息。单击某一列的列名,可以使分组按指定列进行排序。 在该列表中,所显示的协议类型是发送或接收分组的最高层协议的类型。

(4)分组头部明细(报文解码窗口) 显示捕获分组列表窗口中被选中分组的头部详细信息。包括:与以太网帧有关的信息,与包含在该分组中的 IP 数据报有关的信息。 单击以太网帧或 IP 数据报所在行左边的向右或向下的箭头可以展开或最小化相关信息。如果利用 TCP 或 UDP 承载分组, WireShark 也会显示 TCP 或 UDP 协议头部信息。分组最高层协议的头部字段也会显示在此窗口中。

(5)分组内容窗口(报文内容窗口) 以 ASCII 码和十六进制两种格式显示被捕获帧的完整内容。

4、筛选分组操作

通常,分组列表窗口中会显示许多类型的分组。即使仅仅是下载了一个网页,但是还有许多其他协议在您的计算机上运行,只是用户所看不见。可以在中间过滤窗口中输入过滤的分组协议如http, 选择应用按钮,就可以只让HTTP分组消息显示在分组列表窗口。

【实验操作】

1、打开wireshark ,开始抓取网络接口eth0上的分组,将窗口最小化;

双击eth0开始抓取分组

2、打开浏览器,访问http://www.baidu.com, 等待网页打开完毕;

3、切换到Wireshark窗口,并停止抓取分组;

红色按钮停止

4、利用分组过滤功能,过滤出http分组;在报文摘要窗口中点击选取第1个http报文;

5、对当前报文的头部明细窗口进行截图,保存到实验报告中,课后分析该报文,从外到内分别使用了什么协议,对应网络体系结构的哪一层?

6、将分组列表中出现的协议名称,顺序填入代码文件窗口首行末尾,不可修改原有的提示内容(相同协议只填写一次,用符号,分隔)。

7、使用Wireshark文件菜单,将所捕获的所有http报文保存到某个自定义的文件中,并下载到本地主机中。

第2关:Ethernet帧分析

【以太网帧格式】

以太帧有很多种类型。不同类型的帧具有不同的格式和 MTU 值。但在同种物理媒体上都可同时存在。

(1)以太网第二版或者称之为 Ethernet II 帧,DIX 帧,是最常见的帧类型。并通常直接被 IP 协议使用;

(2)Novell 的非标准 IEEE 802.3 帧变种;

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

(4)子网接入协议(SNAP)帧。

1、Ethernet II帧格式

以太网中大多数的数据帧使用的是 Ethernet II 格式:

Ethernet II 类型以太网帧的最小长度为 64 字节(6+6+2+46+4),最大长度为 1518 字节(6+6+2+1500+4)。其中:

(1)前 12 字节分别标识出发送数据帧的源节点 MAC 地址和接收数据帧的目标节点 MAC 地址(2)接下来的 2 个字节标识出以太网帧所携带的上层数据类型,如 16 进制数0x0800代表 IP 协议数据,16 进制数0x86dd代表 IPv6 协议数据,16 进制数0x809B代表 AppleTalk 协议数据,16 进制数0x8138代表 Novell 类型协议数据等;

(3)在不定长的数据字段(Data):其长度是 46 至 1500 字节;

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

2、IEEE 802.3 帧格式:

各字段说明如下: (1)D-MAC && S-MAC:分别表示标识目标地址和源地址。它们均为 6 个字节长。如果传输出去的目标地址第一位是 0,则表示这是一个普通地址;如果是 1, 则表示这是一个组地址。 (2)Length / Type :通常这个字段用于指定报文头后所接的数据类型。通常使用的值包括:IPv4(0x0800), IPv6(0x86DD), ARP(0x0806)。 而值0x8100代表一个 Q-tagged 帧(802.1q)。通常一个基础的以太网帧长为 1518 字节,但是更多的新标准把这个值扩展为 2000 字节。 (3)MAC Client Data: 数据主体,由 LLC及 Data 构成。最小长度为 48 字节(加上帧头 12 字节,CRC4 字节刚好 64 字节), 当数据主体小于 48 字节时,会添加 pad 字段。选取最小长度是出于冲突检测的考虑(CSMA/CD)。而数据字段最大长度为 1502 字节。

IEEE 802.2 LLC的头构成:

(A)DSAP 目的服务访问字段,1 字节长,指明帧的目的上层协议类型; (B)ASAP 源服务访问字段,1 字节长,指明帧的源上层协议类型; (C)control 控制 1 字节或者 2 字节,长度要看被封装的 LLC 数据类型,是 LLC 数据报(类型1)1 字节,LLC 对话的一部分(类型2)2 字节。类型1 表明是无连接的,不可靠的 LLC 数据报,控制字段用0x03指明;类型 2 表明是面向连接可靠的 LLC 会话。 (4)FCS(Frame Check Sequence):也叫 CRC(Cyclic Redundancy Check),CRC 是差错检测码,用来确定接收到的帧比特是否正确。

3、IEEE 802.3 SNAP

虽然 IEEE 802.3 是标准,但没有被业界采用。以太网 II 已成事实标准。于是 IEEE 802.3 扩展产生 IEEE 802.3 SNAP 来兼容以太网网头部协议,在 IEEE 802.2 LLC 头部后插入了 SNAP 头部。 SNAP 头部字段构成:

(1)组织代码 3 字节长,指明维护接下来 2 字节意义的组织,对 IP 和 ARP,该字段被设置为0x00-00-00。

(2)以太网类型 如果组织代码为0x00-00-00,接下来 2 字节就是以太网类型 IP (0x0800)ARP(0x0806)。 因为增加了 LLC 头部的 3 字节和 SNAP 头部的 5 字节所以有效载荷比以太网 II 少 8 个字节。

【实验任务】

1、切换到终端窗口

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

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

4、查看虚拟机网关MAC地址 使用命令:arp 根据网关IP地址,查ARP表得到对应的MAC地址,记录到实验报告中。

5、打开wireshark ,开始抓取网络接口eth0上的分组,将窗口最小化;(双击)

6、打开浏览器,访问http://www.baidu.com, 等待网页打开完毕;

7、切换到Wireshark窗口,并停止抓取分组;

8、利用分组过滤功能,过滤出http分组;在报文摘要窗口中点击选取第1个http报文;

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

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

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

第3关:IP报文分析

1、MAC帧与数据负载

在TCP/IP网络内,MAC帧的数据部分只有一个字段,其长度在46到1500字节之间,包含的信息是网络层传下来的数据,网络层常见协议有IP、ARP、ICMP协议,所以MAC帧的数据字段通常是一个IP分组、ARP报文。

2、IP数据报格式:

IP数据报(IP Datagram)是一个与硬件无关的虚拟包, 由首部和数据两部分组成,其格式如下图所示。首部的前一部分是固定长度,共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.标志:该字段是与ip分片有关的。其中有三位,但只有两位是有效的,分别为MF,DF,MF。MF标识后面是否还有分片,为1时,表示后面还有分片。DF标识是否能分片,为0表示可以分片

7.片偏移:该字段是与ip分片后,相应的ip片在总的ip片的位置。该字段的单位是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路由器。防止这种循环。window系统默认为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 数据报发送。

 类型:标识生成的错误报文,它是ICMP报文中的第一个字段;

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

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

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

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

4、Ping 命令

其主要功能是用于网络连通测试,通信协议是ICMP,Windows系统下Ping命令格式如下:

ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count]

[[-j host-list] | [-k host-list]] [-w timeout] target_name 这里对实验中可能用到的参数解释如下:

-t :用户所在主机不断向目标主机发送回送请求报文 ,直到用户中断;

-n count: 指定要 Ping 多少次,具体次数由后面的 count 来指定 ,缺省值为 4;

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

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

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

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

ping [-c count] [-s size] target_name

-c count: 指定要 Ping 多少次,具体次数由后面的 count 来指定

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

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

5、traceroute命令与工作原理

其主要功能是跟踪(报文传输)沿途所经过的路由,通信协议是ICMP,用于unix、linux系统环境,在Windows系统环境内,对应的命令是tracert。命令格式:Traceroute 目标主机名或IP. Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由器…… traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢?Traceroute在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。 Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。

【实验任务】

1、切换到终端窗口

2、已知某目标机IP地址是119.38.215.130,测试IP报文由平台虚拟机发送至目标机,沿途经过哪些路由器? 执行命令:traceroute 119.38.215.130 把得到的数据整理后,保存到实验报告中,课后分析沿途经过哪些路由器。

3、分析沿途所经过的路由器的数目,并填写到代码文件窗口第一行末尾(不要破坏“冒号”之前提示内容)。 注:有两种可能的答案,系统只认其中一种(如果你的答案系统不认,可以将其减1或加1再试)。

4、打开wireshark ,开始抓取网络接口eth0上的分组,将窗口最小化;

5、在终端窗口内,执行如下命令: ping -c 3 -s 0 www.educoder.net 在实验报告中解释该命令行各参数的含义; 把得到的数据整理后,保存到实验报告中,课后完成数据分析。

6、切换到Wireshark窗口,并停止抓取分组;

7、利用分组过滤功能,过滤出icmp分组;在报文摘要窗口中点击选取第1个icmp报文;

8、调节分组头部细节窗口大小,将其中IP报头和ICMP报头全部字段都展开,然后对该窗口进行截图,并粘贴到实验报告中,课后对其中主要字段进行分析解读。

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

【思考题】

1、为什么wireshark捕获的以太网帧,看不到MAC帧最末尾的FCS字段?

2、为什么wireshark捕获的以太网帧,有的帧长度小于理论上最低值64字节?

3、ARP表的作用什么?