目录
第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报文保存到某个自定义的文件中,并下载到本地主机中。
对当前报文的头部明细窗口进行截图,保存到实验报告中,课后分析该报文,从外到内分别使用了什么协议,对应网络体系结构的哪一层?
分析:
- Frame 3958: 数据包的编号。
- 399 bytes on wire (3192 bits), 399 bytes captured (3192 bits) on interface 0: 数据包的大小,以字节和比特表示。
- Ethernet II, Src: 32: bd:db:e7:64:4b (32: bd:db:e7:64:4b), Dst: 5e:ae:36:ab:cd:e6 (5e:ae:36:ab:cd:e6): 数据包的以太网协议头部信息,包括源MAC地址和目的MAC地址。
- Internet Protocol Version 4,Src: 172.16.160.16, Dst: 34.107.221.82: 数据包的IP协议头部信息,包括源IP地址和目的IP地址,使用的是IPv4协议。
- Transmission Control Protocol, Src Port: 39328, Dst Port: 80,Seq: 1, Ack: 1, Len: 333: 数据包的TCP协议头部信息,包括源端口号和目的端口号,序列号和确认号,以及数据长度。
- Hypertext Transfer Protocol: 数据包的应用层协议头部信息,使用的是HTTP协议。
该报文从外到内分别使用了以下协议:
1.以太网协议(Ethernet II)
2.网络层协议(IPv4)
3.传输层协议(TCP)
4.应用层协议(HTTP)
对应网络体系结构的哪一层:
1.以太网协议(Ethernet II):数据链路层
2.网络层协议(IPv4):网络层
3.传输层协议(TCP):传输层
4.应用层协议(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进制、冒号分隔),并填写到代码文件窗口第二行末尾(不要破坏“冒号”之前提示内容)。
采用的是Ethernet II帧格式,5a 48 29 f6 bf 25
第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)报文,把其类型值、代码,分别填写到代码文件窗口的第二、三行末尾(不要破坏“冒号”之前提示内容)。
调节分组头部细节窗口大小,将其中IP报头和ICMP报头全部字段都展开,然后对该窗口进行截图,并粘贴到实验报告中,课后对其中主要字段进行分析解读。
图 21 IP
这是一个IPv4的数据包,其中包含了源IP地址和目标IP地址,以及其他一些信息。具体分析如下:
- 版本号为4,表示这是IPv4协议。
- 头部长度为20字节,即5个32位字长。
- 差分服务字段为0x14,其中DSCP为Unknown,ECN为Not-ECT。
- 总长度为28字节。
- 标识符为0x3b17,即15127。
- 标志位为0x4000,表示不分片。
- 存活时间为55。
- 协议为ICMP,即Internet控制报文协议。
- 头部校验和为0xdb65。
- 源IP地址为122.225.212.158。
- 目标IP地址为172.16.49.192。
图 22 icmp
这是一个ICMP协议的回复报文,其中包含了以下信息:
- Type: 0,表示这是一个回复报文,而不是请求报文。
- Code: 0,表示这是一个Echo (ping) reply。
- Checksum: 0xfdd7,表示校验和正确。
- Identifier (BE): 552 (0x0228),表示标识符为552。
- Identifier (LE): 10242 (0x2802),表示标识符的小端字节序为10242。
- Sequence number (BE): 0 (0x0000),表示序列号为0。
- Sequence number (LE): 0 (0x0000),表示序列号的小端字节序为0。
根据这些信息,我们可以确定这是一个回复报文,而不是请求报文,并且是一个Echo (ping) reply。标识符为552,序列号为0。校验和正确。