使用WireShark协议分析仪来分析ICMP与FTP协议

这是网络第2次试验
wireshark分析仪网站. http://www.wireshark.org/

了解ICMP协议

ICMP(Internet Control Message Protocol)网际报文控制协议,是Internet协议族的核心协议之一,它主要用在网络计算机的操作系统中发送出错信息。例如:请求服务不可用,主机不可达。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。但是ICMP不是高层协议,而是IP层协议。

ICMP在网络层中的位置:
在这里插入图片描述

ICMP本身是一个网络层协议。但是,它的报文并不是如预期的那样直接传递给数据链路层。实际上,ICMP报文首先 要封装成IP数据报,然后才被传递到下一层:
使用WireShark协议分析仪来分析ICMP与FTP协议_第1张图片

在一个IP数据报中,如果协议字段值是1,就表示IP数据是ICMP报文。
ICMP首部格式:
使用WireShark协议分析仪来分析ICMP与FTP协议_第2张图片

图中的格式的具体含义——
类型(Type): ICMP信息基于RFC规范的类型分类

代码(Code): ICMP信息基于RFC规范的子类型

检验和(CheckSum):用来保证ICMP数据的头部和数据部分的完整

数据部分:依赖于类型和代码域的部分

完整的ICMP报文类型如下图:
使用WireShark协议分析仪来分析ICMP与FTP协议_第3张图片
使用WireShark协议分析仪来分析ICMP与FTP协议_第4张图片

了解FTP协议

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

Wireshark实战

(一)配置过滤器

目的是只获取icmp协议的包,便于分析。
使用WireShark协议分析仪来分析ICMP与FTP协议_第5张图片
抓包前使用捕捉过滤器:
使用WireShark协议分析仪来分析ICMP与FTP协议_第6张图片
之后启动抓包。

(二)捕获一段PING命令的数据流

ICMP协议因为其ping功能而著名,ping用来检测一个设备主机的可连续性。
如下图,向www.baidu.com发送ping命令:
使用WireShark协议分析仪来分析ICMP与FTP协议_第7张图片
使用WireShark协议分析仪来分析ICMP与FTP协议_第8张图片
上图为包的简要纲略,每一列分别对应帧编号,发送时间,发送源ip地址,目的地ip地址,协议,长度以及该包报告信息或内容。
可以看到我们抓到了8个ICMP报文,向对方主机询问(request)四次同时接收到四次应答(reply)。

报文内容分析

①选取具体某一帧——此处选择第一帧:Echo(ping)请求包,分析其分组内容。
上面是分组首部的详细信息,下面是以十六制和ASCLL码形式展现的分组内容:
使用WireShark协议分析仪来分析ICMP与FTP协议_第9张图片
第一行:帧1(1为序号),所抓分组的字节数为74;

第二行:以太网,有限局域网技术,数据链路层,源mac地址为(54:27:1e:5d:12:dc),目标mac地址为(d0:76:e7:05:b8:b0)。

第三行:ipv4协议,是网络层协议,源ip地址为(192.168.1.104);目标ip地址为(111.13.100.91);

第四行:TCP协议,运输层协议。

②逐层分析
第一层(帧首部):
使用WireShark协议分析仪来分析ICMP与FTP协议_第10张图片
第二层(数据链路层):
在这里插入图片描述
第三层(网络层):
使用WireShark协议分析仪来分析ICMP与FTP协议_第11张图片
第四层(运输层):
使用WireShark协议分析仪来分析ICMP与FTP协议_第12张图片

③分析其他包
分析ICMP响应包---------Echo(ping)reply,也就是对应的2帧
在这里插入图片描述
使用WireShark协议分析仪来分析ICMP与FTP协议_第13张图片

(三)捕获一段Tracert命令的数据流

①Tracert:路由跟踪实用程序。用于确定IP数据包访问目标所采取的路径,其工作原理是通过向目标发送不同IP生存时间 (TTL) 值的“Internet控制消息协议(ICMP)”回应数据包,跟踪路由诊断程序确定到目标所采取的路由。实际应用中可以使用跟踪路由命令确定数据包在网络上的停止位置。TTL是有效的跃点计数,在必需路径的每个路由器转发数据包之前至少递减一,当TTL递减至0时,路由器将“ICMP超时”的消息发送回源地址。执行tracert命令后,源主机先发送TTL为1的回显数据包,并在随后的每次发送过程中将TTL递增一,直到目标响应或TTL达到最大值,从而确定路由。路由则通过检查中间路由器送回的“ICMP已超时”的信息来确定路由。

②执行Tracert命令
与ping命令类似,先在wireShark中开启抓包,然后在命令行中执行Tracert命令:
使用WireShark协议分析仪来分析ICMP与FTP协议_第14张图片
截图中输入命令后第一行显示测试包最大跳数30,防止路由回环;域名解析后ip为111.13.100.91。

③下面14跳,通过百度这些ip地址可查到ip所在地信息,分析大致过程如下:

1行:请求从本机出发(本地局域网某主机)

2-3行:江苏省苏州市 移动 这应该是江苏移动的路由器

6-8行:中国 移动 移动的总路由器

9-11行:北京市 移动位于北京的路由器

14行:北京市 百度,最终成功找到了百度的服务器

(其中4/5、12/13行请求超时,可能是因为网络路径中间件不允许应答该类型报文,但路由通畅或是网络拥堵);

报文内容分析

使用WireShark协议分析仪来分析ICMP与FTP协议_第15张图片
上图为包的简要纲略,每一列分别对应帧编号,发送时间,发送源ip地址,目的地ip地址,协议,长度以及该包报告信息或内容。

选取第1帧进行分析:
网络层:
主机发送的第一个包的TTL为1,并在随后的每次发送过程中将TTL递增1。
使用WireShark协议分析仪来分析ICMP与FTP协议_第16张图片
运输层:
使用WireShark协议分析仪来分析ICMP与FTP协议_第17张图片

(四)使用wireShark分析FTP协议工作过程

过滤条件设置为FTP协议。
使用WireShark协议分析仪来分析ICMP与FTP协议_第18张图片

在FTP工作流程中使用控制链接和数据连接两种方式来实现数据传输,下面我们来分析这两种包的详细信息。

分析控制链接的数据

FTP的控制连接用于传送用户名、密码及设置传输方式等控制信息,下面以保存的ftp.pcapng捕获文件为例,分析FTP协议控制连接数据包。
使用WireShark协议分析仪来分析ICMP与FTP协议_第19张图片

上图中显示了所有数据包的Info列,在这里可以看到ftp传输的所有信息,因为FTP是明文形式传输数据包的,所有我们在InFo列里能看到登录FTP服务器的用户名、密码和传输文件等。在上图中,登录FTP服务器的用户名为zcliang,密码为********,下载了文件index.html。这里显示的都是成功,如果传输过程中出差的话,会返回相应的应答码。

在捕获的FTP数据包中,USER,PASS,CWD,RETR和STOR等都是控制连接使用的控制命令。这些控制命令在包详细信息中,显示的格式都相同。这里以控制用户信息的命令为例,分析包的详细信息。在ftp.pcapng捕获文件中,捕获的用户信息如下:
使用WireShark协议分析仪来分析ICMP与FTP协议_第20张图片
从该界面可以看到登录FTP服务器时,使用的控制命令是USER和PASS。根据这两个命令,可以看到登录的账号为zcliang,密码为********。
这两个包的详细信息如下——
用户名包详细信息:
使用WireShark协议分析仪来分析ICMP与FTP协议_第21张图片
从上面的信息中,可以看到该包使用了FTP协议,输入的用户名为zcliang,请求的命令是USER,请求参数为zcliang。

密码包的详细信息:
使用WireShark协议分析仪来分析ICMP与FTP协议_第22张图片
从上面的信息中,可以看到输入的密码为******,请求的命令是PASS,请求参数为******。
其余的LIST,CWD等命令此处省略。

分析数据连接的数据

数据连接用于传送文件数据,也就是通过FTP服务器进行上传和下载文件。下面以捕获的文件为例,分析数据连接的数据。
使用WireShark协议分析仪来分析ICMP与FTP协议_第23张图片
我们发现前三个FTP报文出现两个关键字PORT和PASV,这是什么呢?百度百科一下:

**PORT(主动)**方式的连接过程是,服务器开放一个端口,通知客户端连接,服务端接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了一个1024+的随机端口,你过来连接我”。于是服务器从20端口向客户端的1024+随机端口发送连接请求,建立一条数据链路来传送数据。

**PASV(被动)**方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了一个1024+的随机端口,你过来连接我”。于是客户端向服务器的1024+端口发送连接请求,建立一条数据链路来传送数据。

使用WireShark协议分析仪来分析ICMP与FTP协议_第24张图片
结合TCP协议的内容来看,这一段交互就是我们像科大的站点发了一个port请求,服务器接受请求顺便告诉我们“port请求我们收到啦,不过建议你们用pasv比较好哦~”,然后我们向服务器发出RETR(retireve)请求下载index.html,于是服务器发来报文,内容就是“我(服务器)开放了一个端口,你可以来连接了”,我们反手就是一个报文回复“连接上啦哈”,于是服务器又发了一个ftp的报文作为回应“我们服务器端用二进制方式来对index.html文件进行数据传输PS.它有13bytes这么大”,并且发来ACK报文建立连接。
在这里插入图片描述这之后,index.html这个文件因为比较小,所以不需要分隔成小文件,直接以ftp-data方式传输过来了,过程中还出现了一下ACK的报文我想应该是重新确认一下连接的作用。
在这里插入图片描述

RETR命令的帧详细信息如下,响应帧在295,但不是一个FTP协议的帧。
使用WireShark协议分析仪来分析ICMP与FTP协议_第25张图片

FTP-DATA帧用来向客户端传输数据,详细信息如下:
使用WireShark协议分析仪来分析ICMP与FTP协议_第26张图片
可以看到,数据包大小为13字节等信息,还给出了文件中的文本数据:Hello World。

所有ftp-data的报文发完以后,也就是文件传输完成时候,服务器发来报文告诉我们“所有文件都传完啦”,并且直接有扔过来一个ACK报文,我们客户端也反手一个ACK报文,虚晃一枪“大哥谢谢啦,你等等别走我看看还有没需求要找你”,也就是维持会话的意思。
在这里插入图片描述

实验做完了,我们cmd键入quit断开连接,得到回应goodbye。我们看看wireshark那边,是两个ftp包互相告别。
在这里插入图片描述

至此,WireShark协议分析仪的使用告一段落。

你可能感兴趣的:(计算机网络)