1.实验目的

  熟悉并掌握 Wireshark 的基本使用;了解网络协议实体间进行交互以及报文交换的情况;学会使用 Wireshark 分析 IP、ICMP 以及 TCP 协议。

2.预备知识

  要深入理解网络协议,需要观察它们的工作过程并使用它们,即观察两个协议实体之间交换的报文序列,探究协议操作的细节,使协议实体执行某些动作,观察这些动作及其影响。这种观察可以在仿真环境下或在因特网这样的真实网络环境中完成。观察正在运行的协议实体间交换报文的基本工具被称为分组嗅探器(packet sniffer),又称分组捕获器。顾名思义,分组嗅探器捕获(嗅探)你的计算机发送和接收的报文。图 1 显示了一个分组嗅探器的结构。
图 1 分组嗅探器结构

图 1 分组嗅探器结构

  图 1 右边是计算机上正常运行的协议和应用程序(如:Web 浏览器和 FTP 客户端)。分组嗅探器(虚线框中的部分)主要有两部分组成:第一是分组捕获器,其功能是捕获计算机发送和接收的每一个链路层帧的拷贝;第二个组成部分是分组分析器,其作用是分析并显示协议报文所有字段的内容(它能识别目前使用的各种网络协议)。
  运行 Wireshark 程序时,其图形用户界面如图 2 所示。最初,各窗口中并无数据显示。Wireshark 的界面主要有五个组成部分:
在这里插入图片描述

图 2 Wireshark 的界面
  • 命令菜单(command menus):命令菜单位于窗口的最顶部,是标准的下拉式菜单。
  • 协议筛选框(display filter specification ):在该处填写某种协议的名称,Wireshark 据此对分组列表窗口中的分组进行过滤,只显示你需要的分组。
  • 捕获分组列表(listing of captured packets):按行显示已被捕获的分组内容,其中包括:分组序号、捕获时间、源地址和目的地址、协议类型、协议信息说明。单击某一列的列名,可以使分组列表按指定列排序。其中,协议类型是发送或接收分组的最高层协议的类型。
  • 分组首部明细(details of selected packet header ):显示捕获分组列表窗口中被选中分组的首部详细信息。包括该分组的各个层次的首部信息,需要查看哪层信息,双击对应层次或单击该层最前面的“>”即可。
  • 分组内容窗口(packet content ):分别以十六进制(左)和 ASCII 码(右)两种格式显示被捕获帧的完整内容。

3.实验内容

3.1 任务一:分析以太网帧

  IP 地址用于标识因特网上每台主机,而端口号则用于区别在同一台主机上运行的不同网络应用程序。在链路层,有介质访问控制(Media Access Control,MAC)地址。在局域网中,每个网络设备必须有唯一的 MAC 地址。设备监听共享通信介质以获取目标 MAC 地址与自己相匹配的分组。
Wireshark 能把 MAC 地址的组织标识转化为代表生产商的字符串,例如,00:06:5b:e3:4d:1a 也能以 Dell:e3:4d:1a 显示,因为组织唯一标识符 00:06:5b 属于Dell。地址 ff:ff:ff:ff:ff:ff 是一个特殊的 MAC 地址,意味着数据应该广播到局域网的
所有设备。
  发送分组到本地网外的主机,需要跨越一组独立的本地网,这些本地网通过称为网关或路由器的中间机器连接。网关有多个网络接口卡,用它们同时连接多个本地网。最初的发送者或源主机直接通过本地网发送数据到本地网关,网关转发数据报到其它网关,直到最后到达目的主机所在的本地网的网关。
俘获和分析以太网帧:
1)启动Wireshark 分组嗅探器,在过滤显示窗口(filter display window)中输入http,开始Wireshark 分组俘获。
2)在浏览器地址栏中输入要访问的网址,如www.sysu.edu.cn
3)停止分组俘获。在俘获分组列表中(listing of captured packets )中找到 HTTP GET 信息和响应信息,如图 3 所示(替换成你的截图)。
在这里插入图片描述

图 3 HTTP GET信息和响应信息

  HTTP GET 信息被封装在 TCP 分组中,TCP 分组又被封装在 IP 数据报中,IP 数据报又被封装在以太网帧中)。在分组明细窗口中展开 Ethernet II 信息(packet details window)。
回答下面的问题:
a)你所在的主机 48-bit Ethernet 地址是多少?
答:

b)Ethernet 帧中目的地址是多少?这个目的地址是www.sysu.edu.cn 的Ethernet 地址吗?
在这里插入图片描述
这个目的地址是www.sysu.edu.cn的目的地址。

3.2 任务二:分析 ICMP 协议

  Ping 和 traceroute 命令都依赖于 ICMP。ICMP 可以看作是 IP 协议的伴随协议。
  ICMP 报文被封装在 IP 数据报发送。
(1)ping 和 ICMP
  利用 Ping 程序产生 ICMP 分组。Ping 向因特网中的某个特定主机发送特殊的探测报文并等待表明主机在线的回复。具体做法:
1)打开 Windows 命令提示符窗口(Windows Command Prompt)。
2)启动Wireshark 分组嗅探器,在过滤显示窗口(filter display window)中输入icmp,开始Wireshark 分组俘获。
3)输入“ping –n 10 -4 ise.sysu.edu.cn” 。其中“-n 10”指明应返回10条ping信息。
4)当ping程序终止时,停止Wireshark 分组俘获。实验结束后会出现如图 4所示的命令窗口:
在这里插入图片描述

图 4 命令窗口

  停止分组俘获后,会出现如图 5所示的界面:
在这里插入图片描述

图 5 停止分组俘获后Wireshark的界面

  图 6是在分组内容窗口中显示了ICMP协议的详细信息。观察这个ICMP分组, 可以看出,此ICMP分组的Type 8 and Code 0 即所谓的ICMP “echo request” 分组。
在这里插入图片描述

图 6 ICMP协议详细信息(已替换成自己的截图)

在实验报告中回答下面问题:
a)你所在主机的IP地址是多少?目的主机的IP地址是多少?
  我所在的主机的IP地址是:172.18.53.146
  目的主机的IP地址是:202.116.64.201
在这里插入图片描述

b)查看ping请求分组,ICMP的type 和code是多少?
  Type为8,Code为0:
在这里插入图片描述
c)查看相应得ICMP响应信息,ICMP的type 和code又是多少?
  Type为0,Code为0:
在这里插入图片描述
(2)ICMP和Traceroute在Wireshark 下,用Traceroute程序俘获ICMP分组。
  Traceroute能够映射出通往特定的因特网主机途径的所有中间主机。
  源端发送一串ICMP分组到目的端。发送的第一个分组时,TTL=1;发送第二个分组时,TTL=2,依次类推。路由器把经过它的每一个分组TTL字段值减1。当一个 分组到达了路由器时的TTL字段为1时,路由器会发送一个ICMP错误分组(ICMP error packet)给源端。
1)启动Window 命令提示符窗口
2)启动Wireshark分组嗅探器,开始分组俘获。
3)Tracert命令在c:\windows\system32 下,所以在MS-DOS 命令提示行或者输入“tracert -4 ise.sysu.edu.cn ” or “c:\windows\system32\tracert hostname ” (注意在Windows 下, 命令是 “tracert ” 而不是“traceroute”。)如图 7所示:
4)当Traceroute 程序终止时,停止分组俘获。
在这里插入图片描述

图 7 命令提示窗口显示Traceroute程序结果

图 8显示的是一个路由器返回的ICMP错误分组(ICMP error packet)。
在这里插入图片描述

图 8 一个扩展ICMP错误分组信息的Wireshark窗口

在实验报告中回答下面问题:
a)查看ICMP echo分组,是否这个分组和前面使用 ping命令的ICMP echo一样?
  不一样。这个echo分组的data是64 bytes,前面使用ping命令的echo分组的data是32 bytes。
在这里插入图片描述

b)查看ICMP错误分组,它比ICMP echo 分组包括的信息多。ICMP错误分组比ICMP echo 分组多包含的信息有哪些?
  错误的分组包含多的信息如下图所示。多了IP数据报的首部以及TCP或UDP协议的端口号。
在这里插入图片描述

3.3 任务三:分析 TCP 协议

  访问学校主页服务器,通过 Wireshark 捕获通信内容,分析 TCP 连接建立的三次握手过程。TCP 报文首部格式如图 10 所示:
在这里插入图片描述

图 10 TCP报文首部格式

  抓取数据包如图 11所示(请将自己的截图替换图 11):
在这里插入图片描述

图 11 TCP报文

1)若只显示第一次握手的数据包,则显示过滤器的规则为 tcp.flags.syn == 1 and tcp.flags.ack == 0 (显示包含 TCP SYN 并且不包含 ACK 标志的数据包)。找
出第一次握手的数据包并截取对该数据包的展开图,根据截图填写下面字段的内容。
  通过在cmd中ipconfig/all 查看本机ip地址:172.28.32.163:
在这里插入图片描述

  在cmd中通过ping -4 www.sysu.edu.cn来查看学校主页服务器的ip地址:202.116.64.8:
在这里插入图片描述

  然后通过过滤器输入tcp.flags.syn == 1 and tcp.flags.ack == 0,在筛选出的数据中找出符合source为172.28.32.163,destination为202.116.64.8,并且在NO靠前的即为第一次握手的数据包,NO靠后且符合过滤条件的也是握手的数据包,但不是第一次。
  得到截图如下图所示,对应的填写表格。
在这里插入图片描述

表 1 第一次握手
源地址172.28.32.163
目的地址202.116.64.8
序号0
确认号0
数据偏移32
URG0
ACK0
PSH0
RST0
SYN1
FIN0
窗口64240

2)若只显示第二次握手的数据包,则显示过滤器的规则为 tcp.flags.syn == 1 and tcp.flags.ack == 1 ,找出第二次握手的数据包并截取对该数据包的展开图, 根据截图填写下面字段的内容。
  在过滤器中输入tcp.flags.syn == 1 and tcp.flags.ack == 1,找到符合要求的数据,并且序号NO为上述序号612+1,得到如下截图,对应的填写表格。
在这里插入图片描述

表 2 第二次握手
源地址202.116.64.8
目的地址172.28.32.163
序号0
确认号1
数据偏移28
URG0
ACK1
PSH0
RST0
SYN1
FIN0
窗口14600

3)若只显示第三次握手的数据包,则显示过滤器的规则为 tcp.flags.syn == 0 and tcp.flags.ack == 1,找出第三次握手的数据包并截取对该数据包的展开图,根据截图填写下面字段的内容。
  在过滤器中输入tcp.flags.syn == 0 and tcp.flags.ack == 1,找到符合要求的数据,并且序号NO为上述序号613+1,得到如下截图,对应的填写表格。
在这里插入图片描述

表 3 第三次握手
源地址172.28.32.163
目的地址202.116.64.8
序号1
确认号1
数据偏移20
URG0
ACK1
PSH0
RST0
SYN0
FIN0
窗口64240

4)三次握手之后,客户端要请求服务器传送数据。找出第一次请求的数据包
并截取对该数据包的展开图粘贴在下方,并根据截图填写表 4。
在这里插入图片描述

表 4 第一次请求数据
源地址172.28.32.163
目的地址202.116.64.8
序号1
确认号1
数据偏移20
URG0
ACK1
PSH1
RST0
SYN0
FIN0
窗口64240

问题:你是如何确定是第一次的请求的数据包?
  两个方法:
1.第一次请求数据包,应该是http协议,并且push=1,输入过滤规则:tcp and ip.addr==202.116.64.8,然后按照NO的顺序排序,可以看到如下图的结果,第一条http协议即为第一次请求的数据包,其push=1。
在这里插入图片描述
2.通过过滤条件:tcp.flags.push == 1 and tcp.flags.ack ==1查找结果如下图所示,第一个http即为第一次请求数据包,第二个http为服务器数据包发送成功的响应。
在这里插入图片描述
5)服务器要传送数据给客户端。找出第一次回复的数据包并截取对该数据包
的展开图粘贴在下方,并根据截图填写表 5。
  找到ack=1,push=0,且报文为[TCP segment of a reassembled PDU]的第一个数据包即为服务器第一次回复的数据包,截图如下图所示,并填写表格。
在这里插入图片描述

表 5 第一次回复数据
源地址202.116.64.8
目的地址172.28.32.163
序号0
确认号1
数据偏移28
URG0
ACK1
PSH0
RST0
SYN1
FIN0
窗口14600

3.4 任务四:分析IP数据报

  自己设计实验,抓取 IP 数据报,解释 IP 数据报首部各字段的含义并写在下方。
  IP数据报的格式如下图所示:
在这里插入图片描述
实验步骤:
(1)打开 Windows 命令提示符窗口(cmd)。
(2)打开Wireshark,选择监听的接口WLAN。
(3)在cmd中使用ping命令,输入“ping –n 10 -4 ise.sysu.edu.cn”,同时使用Wireshark监听数据。输入ping的结果下图所示:
在这里插入图片描述

(4)监听若干秒后,停止监听。停止监听后,可得到下图:
在这里插入图片描述

(5)找到source为192.168.2.128,destination为202.116.64.201的数据包,查看其数据内容。数据包截图如下:
在这里插入图片描述

(6)解释 IP 数据报首部各字段的含义:

字段含义上图中对应部分
IP协议版本号IPv4Version:4
首部长度20 bytesHeader Length:20 bytes
服务类型0x00(DSCP:CS0,ECN:Not-ECT)Differentiated Services Field
总长度60Total Length:60
标识0x6ea5(28325)Identfication
标志0x00Flags:0x00
片偏移0Fragment offset:0
生存时间64Time to Live:64
协议ICMPProtocol:ICMP
首部校验和0x0000Header Checksum
源地址192.168.2.128Source Address
目的地址202.116.64.201Destination Address
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐