OSS问题排除之抓包

Windows

Wireshark是网络包分析工具,主要作用是尝试捕获网络包,显示包的尽可能详细的数据。Wireshark是开源软件项目,GPL协议发行。您可以免费在任意数量的机器上使用,无授权和付费问题。

安装

Wireshark下载地址:https://www.wireshark.org/#download。下载完成后,点击安装,使用默认配置即可完成安装。
注意:安装过程组件WinPcap是必选的,不安装WinPcap无法抓包

抓包

打开Wireshark后,在菜单捕获中选择选项,打开捕获接口窗口。在捕获接口输入选项卡,选择正确的连接;所选择接口的捕获过滤器中填写OSS网络数据过滤器,格式是host <bucket>.<endpoint>,如host bucket-name.oss-cn-hangzhou.aliyuncs.com。填写完成后点开始按钮,即开始抓包。
Wireshark抓包启动后,启动应用程序,Wireshark即可抓到应用程序发往OSS的网络包。注意: endpoint请使用http协议,不要使用https协议;因为https协议加密通信,无法抓到网络包的数据。
抓包完成后,停止抓包。可以通过菜单栏捕获中的停止停止抓包,也可以通过主工具栏中的停止捕获分组停止抓包。
使用菜单栏文件保存另存为,存抓包数据到文件。您可以把文件发给相关人员分析问题。

分析

用Wireshark打开抓包文件,界面如下:

Package capture各列的含义见下表:

列名 含义 说明
No. 网络包序列 从1开始编号
Time 包发送/接收时间点 相对时间,精确到微秒
Source 源地址 IP格式
Destination 目地地址 IP格式
Protocol 使用协议 TCP或HTTP
Length 包长度 bytes
Info 网络包信息 包括类型、状态、数据等

常用的分析方法:找到关注的通信包后,选择该行右键选择追踪流TCP流,界面弹出追踪TCP流窗口,显示数据包的详细内容。
如果只关心某一类网络包,可以使用过滤器筛选。比如只关注GET类的包,可以在应用显示过滤器中http.request.method==GET并回车。

Linux

Linux上一般使用tcpdump命令抓包,把网络包数据写到文件中,然后在Windows下用Wireshark分析。

抓包

使用tcpdump命令抓包,运行tcpdump要求当前用户是root用户,或者拥有sudo权限。执行如下的命令抓包:

sudo tcpdump tcp -i <eth> -t -s 0 -c <2000> and host <bucket>.<endpoint> -w x.pcap

命令中参数含义如下:

  • tcp:抓取特定协议的包,可选值tcp/udp/ip;
  • -i:抓取特定网卡上的包,网卡标准可以通过ifconfig命令查看;
  • -t:输出时间;
  • -s:数据包长度,默认68bytes,0表示不限制长度,可以抓取完整的数据包;
  • -c:只抓取数据包的个数;
  • - host:抓取与该主机的网络包;
  • -w:包数据写入指定文件;

更多详细及更详细说明,请使用命令man tcpdump查看。例如:

sudo tcpdump tcp -i enp3s0 -t -s 0 -c 20000 and host bucket-name.oss-cn-hangzhou.aliyuncs.com -w x.cap

应用程序运行完成,tcpdump还没有抓到指定数量的包,tcpdump不会自动退出,此时请使用ctrl+c退出抓包。然后把包数据文件x.cap下载到Windows机器上用Wireshark分析,或者发给相关人员分析。
注意:抓包的时请使用http协议,不要使用https协议

上一篇:C#核心语法复习——封装


下一篇:OssImport系列之一——架构