网络报文分析工具的使用 - 跟小智一起学网络(4)

前言

哈喽,小伙伴们,大家好,我是小智。

在后面的网络知识学习中,都离不开对数据报文的分析。俗话说,工欲善其事,必先利其器。掌握网络分析工具的基本使用,对我们后面的学习会起到事半功倍的效果。

网络世界中的数据报文(我们也叫它数据包)看不见摸不着,但是通过 Wireshark 这款软件,我们不仅可以抓取到报文,而且还可以详细分析报文的每个字段。

这个章节包含的内容如下:

网络报文分析工具的使用 - 跟小智一起学网络(4)_第1张图片

tcpdump的安装

由于前面安装的 CentOS 没有图形化界面,所以在 CentOS 里面不能直接使用 Wireshark 抓包,我们要先通过 Linux 系统的 tcpdump 工具抓取并保存报文,然后将报文的 pcap 文件拖到 Windows 系统上用Wireshark 进行分析。

我们在 CentOS 上使用 yum 工具安装 tcpdump:
网络报文分析工具的使用 - 跟小智一起学网络(4)_第2张图片


tcpdump的使用

tcpdump 提供了各种抓包选项和过滤表达式,在这个章节,我们掌握最基本的最常用的就好,后面如果有需要,我们可以在虚拟机上通过 man tcpdump 查询相关选项的含义。

现在我们开始抓包,首先打开两个连接虚拟机的终端窗口,在第一个窗口,执行 tcpdump 的抓包命令:

tcpdump -i ens33 tcp -n -v -w http.pcap

在第二个窗口,我们用 curl 工具访问http://info.cern.ch/网站的首页,触发 Linux 操作系统发出网络报文:

网络报文分析工具的使用 - 跟小智一起学网络(4)_第3张图片

再回到第一个窗口,ctrl+c 停止抓包,可以看到当前目录上已经生成了一个 http.pcap 的文件,然后使用 sz http.pcap 将文件拖到 Windows 系统上面。到这里,tcpdump 抓包就结束了,等后面Wireshark 安装好了之后,我们把 http.pcap 文件打开就可以看到报文了。

网络报文分析工具的使用 - 跟小智一起学网络(4)_第4张图片

有没有小伙伴觉得很奇怪,为什么小智要选 http://info.cern.ch/ 这个网站作为例子呢?其实很多人可能不知道,它是世界上第一个网站,从 1991 年 8 月 6 日首次开放至今,至今已经快 30 年了。

关于 tcpdump 常用的抓包和过滤选项,小智这里整理了一下:

抓包选项

-i:   指定网络接口,也就是要抓包的网卡名称,小智这里用的是 ens33,是通过ifconfig 命令查看到的;

-w: 指定抓包文件名称,将报文保存到文件,以便后续使用 Wireshark 进行分析,注意文件后缀名是pcap。不加-w时,报文信息会在终端上显示出来;

-n:  指定将每个监听到数据包中的域名转换成 IP 地址后显示,不把网络地址转换成名字;

-nn:  指定将每个监听到的数据包中的域名转换成 IP 、端口从应用名称转换成端口号后显示;

-v:  解析和打印时,产生详细的输出,如果使用了 -w 选项写入文件时,每秒报告一次捕获的数据包数量;

-c:  限制要抓取报文的个数,抓到指定报文数后,抓包自动停止;

过滤选项

主机过滤:  host、src host(源主机)、dst host(目的主机),例如 tcpdump -i enss33 host 192.168.1.2,表示只抓取IP地址为192.168.1.2的报文;

协议过滤:  ip、tcp、udp、icmp、arp、ipv6;

端口过滤:  port、src port(源端口)、dst port(目的端口);

逻辑表达式: and(且)、or(或)、not(非);例如 tcpdump -i enss33 host 192.168.1.2 and tcp,表示抓取IP地址为192.168.1.2同时是tcp协议的报文;


Wireshark的安装

Wireshark 是一款免费开源的抓包和分析工具,我们可以从官网上下载相应的版本,地址为:
https://www.wireshark.org/#download。

网络报文分析工具的使用 - 跟小智一起学网络(4)_第5张图片

小智的电脑是64位Win10系统,所以选择下载的是 Windows Installer(64-bit)。Wireshark 的安装很简单,下载完成后,按照软件提示一路点击 Next 安装就可以了。


Wireshark的使用

使用Wireshark抓包

打开 Wireshark 3.4.0,主界面如下:

网络报文分析工具的使用 - 跟小智一起学网络(4)_第6张图片

在主界面上可以看到电脑网卡的列表,双击选择要抓包的网卡,就可以开始抓包:

网络报文分析工具的使用 - 跟小智一起学网络(4)_第7张图片

或者在菜单栏点击捕获—》选项,也可以看到电脑网卡的列表,选中要抓包的网卡,点击开始按钮:

网络报文分析工具的使用 - 跟小智一起学网络(4)_第8张图片

点击开始抓包,如果看到报文显示区在滚动,同时,在右下角也显示有抓取报文的计数,说明 Wireshark 在正常工作抓取报文了。

执行相应的网络访问操作后,我们点击 Wireshark 左上角的停止按钮,停止抓包。

停止抓包

如果我们想把报文保存成文件存在电脑上,方便以后查看,点击文件—>保存,输入文件名,点击保存就行。


使用Wireshark查看包

点击 Wireshark 的文件菜单,打开刚刚 tcpdump 抓包产生的 http.pcap 文件,我们就可以查看到报文的详细信息了。在查看报文之前,我们先看看 Wireshark 的整个界面:

网络报文分析工具的使用 - 跟小智一起学网络(4)_第9张图片

Wireshark界面分为以下几个功能区:

  • 主菜单栏: 提供用户操作 Wireshark 的功能菜单,包括启动停止抓包、保存抓包文件等等;

  • 主工具栏: 提供菜单栏中用户经常使用的功能;

  • 过滤器工具栏: 用户可以在此输入各种过滤条件,过滤选择自己想看的报文;

  • 报文列表区: 根据过滤工具栏的过滤条件,展示报文列表,默认展示所有报文;

  • 报文详细信息区: 按照网络层次,展示选中报文的报文头部和数据;

  • 报文二进制字节区: 展示选中报文的二进制字节数;

  • 状态栏: 显示用户选中信息的状态,以及报文会话数和报文数的统计;

数据包列表区展示了报文编号、时间戳、源 IP 地址、目的 IP 地址、协议、报文长度和报文信息:

网络报文分析工具的使用 - 跟小智一起学网络(4)_第10张图片

报文详细信息区,可以很清晰的看到网络五层模型中各个层次的信息:

报文详细信息

  • Frame:   物理层信息

  • Ethernet II:   数据链路层以太网头部信息

  • Internet Protocol Version 4:   网络层 IP 包头部信息

  • Transmission Control Protocol:   传输层 TCP 头部信息

  • Hypertext Transfer Protocol:   应用层 HTTP 协议

之前讲的 MAC 地址、IP 地址和端口,这些各个层次关键的通信标识是不是看起来就一目了然了呢?


使用Wireshark过滤包

现在有一个问题,报文列表区那么多报文,如果我们现在只想查看访问 cern 网站首页的报文,该怎么办呢?

这个时候就该使用 Wireshark 的报文过滤功能了。Wireshark 的报文过滤功能非常强大,支持按报文中的各个字段以及字段组合进行过滤。最常见的比如按照 MAC 地址过滤、按照 IP 地址过滤、按照端口过滤等等。

这里我们选择根据IP地址过滤,按住 win+R 键,输入 cmd 后选择确定,ping info.cern.ch,可以查看到它的IP地址是 188.184.100.82。

网络报文分析工具的使用 - 跟小智一起学网络(4)_第11张图片

在过滤工具栏里输入 ip.addr == 188.184.100.82,选择过滤栏右侧箭头,应用过滤条件:

网络报文分析工具的使用 - 跟小智一起学网络(4)_第12张图片

关于Wireshark常用的过滤条件,小智也总结了一下:

  • IP地址过滤: ip.addr、ip.src、ip.dst,例如:ip.addr == 192.168.1.2;

  • 协议过滤: tcp、udp、dns、ftp、http;

  • 端口过滤: tcp.port、tcp.srcport、tcp.dstport,例如:tcp.port == 80;

  • 逻辑表达式: &&、||、!,例如:ip.src== 192.168.1.200 && tcp;

  • 运算符:>、>=、<、<=,例如tcp.len == 20;


HTTP报文简单分析

访问 info.cern.ch 网站,应用层使用的是 HTTP 协议。现在我们通过抓取的报文,来简单看一下 HTTP是如何工作的。

网络报文分析工具的使用 - 跟小智一起学网络(4)_第13张图片

1)由于 HTTP 下层使用传输层的 TCP 协议,所以前面三个报文是 TCP 的三次握手报文(编号81-83的报文,后面讲 TCP 协议的时候会讲到),还可以看到目的端口使用的是 80。
2)编号 84 的报文,看到的是浏览器发起了一个GET请求"GET / HTTP1.1",请求的网站资源路径是"/",也就是根路径,使用的 HTTP 版本是 1.1。
3)编号 96 的报文,网站服务器响应应了该请求 “HTTP/1.1 200 OK”,即把网站首页的内容返回给了浏览器客户端。

就这样,浏览器通过 GET 请求,获取到了 cern 网站服务器返回的内容。如果想详细查看 HTTP 请求和响应的字段,可以选中相应的报文后,在数据包详细信息区点开 HTTP 头部信息。

网络报文分析工具的使用 - 跟小智一起学网络(4)_第14张图片


总结

好了,到这里,网络报文分析工具的使用,小智就讲完了。让我们一起再回顾一下吧:

首先,我们在 CentOS 上安装了 tcpdump,安装使用的是在线安装工具 yum。

接着,我们使用 tcpdump 抓取 curl 访问 cern 网站首页的 http 报文,保存成了 pcap 文件。

然后,我们在 Windows 上下载安装了 Wireshark 软件。

再接着,我们学习了 Wireshark 的使用,包括如何抓包、查看包和过滤包。

最后,我们简单分析了一下 HTTP 报文的交互过程,为后面深入学习 HTTP 协议做好准备。


絮叨

现在,小伙伴们,你们是不是感到既兴奋又困惑呢?兴奋的是原来网络还可以这样学,困惑的是还有这么多不明白的地方。不过不要紧,这一路上,小智我都会一直陪着你,给你指明方向,为你答疑解惑,和你一起探索奇妙的网络世界。


你可能感兴趣的:(跟小智一起学网络,wireshark,tcpdump,计算机网络,网络,linux)