Wireshark是什么?
Wireshark是最流行的网络嗅探器之一,能在多种平台上抓取和分析网络包,比如Windows、Linux和Mac等。它的图形界面非常友好,但如果你觉得鼠标操作不够有范,也可以使用它的命令行形式——TShark。
学习Wireshark有何意义?
很显然,Wireshark并不能帮我们变成网络新贵,但它对技术上有所追求的攻城狮来说,有着金钱难以衡量的价值。用它来辅助学习,可以更深入地理解网络协议;用它来排查故障,可以更快地发现问题。假如你是团队中唯一掌握Wireshark的网络攻城狮,这个看家本领非常有助于你保持大牛地位。在同事们手足无措时,你可以用最快的速度摆平,然后平静地说一句:“问题解决了,我先去泡杯咖啡。”接下来就可以离开座位,让他们一脸崇拜地研究你满是Tshak命令的屏幕了。
Wireshark图形窗口介绍
WireShark 主要分为这几个界面:
1. Display Filter(显示过滤器), 用于过滤
2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。颜色不同,代表
3. Packet Details Pane(封包详细信息), 显示封包中的字段
4. Dissector Pane(16进制数据)
5. Miscellanous(地址栏,杂项)
显示过滤器
显示过滤器是在原来或者现在抓包的基础上,过滤掉其他的包,找到自己需要的数据报包。如图所示:
过滤表达式的规则
表达式规则
- 协议过滤 比如TCP,只显示TCP协议。
- IP 过滤 比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102, ip.dst==192.168.1.102, 目标地址为192.168.1.102
- 端口过滤 tcp.port ==80, 端口为80的 tcp.srcport == 80, 只显示TCP协议的愿端口为80的。
- Http模式过滤 http.request.method=="GET", 只显示HTTP GET方法的。
- 逻辑运算符为 AND/ OR 常用的过滤表达式
过滤表达式 用途http 只查看HTTP协议的记录ip.src ==192.168.1.102 or ip.dst==192.168.1.102 源地址或者目标地址是192.168.1.102
封包列表
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。你可以看到不同的协议用了不同的颜色显示。
你也可以修改这些显示颜色的规则, View ->Coloring Rules.
封包详细信息
这个面板是我们最重要的,用来查看协议中的每一个字段。
各行信息分别为:
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
我们用wireshark实际分析下三次握手的过程。打开wireshark, 打开浏览器输入 http://www.cr173.com 在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream", 这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图
图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。
第一次握手数据包
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。如下图
第二次握手的数据包
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图
第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1,如下图:
就这样通过了TCP三次握手,建立了连接
Wireshark命令窗口介绍
Wireshark网络分析软件用命令窗口处理数据包的情况很少,在处理大包时,为节约资源同时也是有效地利用PC机硬件,不得不用wireshark的命令行来处理数据包,以达到预期目的。
命令行方式与wireshark图形界面等效的命令是:tshark.exe
不管是用安装版的还是绿色版的wireshark软件,只要找到安装目录,即可进行操作。
在命令窗口(DOS)输入dir *.exe,就会列出所有可执行文件。Tshark.exe就是wireshark的命令行文件,与窗口方式具有同等的功效(有点卖“野药”的感觉)。Tshark.exe有很多参数,可以通过命令后加-h查看帮助。
多的参数
命令行工具功能很强大,参数多且可组合使用。如果我们在CDN机房或核心设备上做镜像抓包时,因数据量太大,图形界面抓包,几十秒或几秒钟的时间,电脑有可能就会蓝屏,造成电脑死机,达不到我们抓包的效果,所以,这时候我们就会用到命令行进行抓包。命令行捕获最大的优点就是资源占用少,可控性强。缺点是参数繁多,不易记忆和操作。
Tshark默认情况下选择的是电脑中的第一张网卡,我们可以利用参数-D(注意大小写,参数中大小写的定义会不同)来查看。
举例:如下图
其他的一些命令的参数和用法,请参考-h帮助或相关资料研究学习。