
免责声明: 本文档可能包含第三方产品信息,仅供参考. 阿里云对第三方产品的性能,可靠性和潜在影响不做任何暗示或其他形式的承诺.
网络是移动应用程序的命脉. 网络级别的各种问题将给移动应用程序带来许多令人困惑的行为和症状. 通过捕获网络数据包数据,您可以分析由网络级问题引起的各种症状,包括错误如链接断开,TLS握手失败和DNS解析失败.
Charles and Fiddler可以帮助捕获和分析HTTP级别的问题. 如果在TCP / IP级别出现问题,则需要使用TCP数据包捕获和分析工具. Wireshark(支持Mac / Windows平台),Network Monitor(Windows平台)和TCPDUMP是三种常用的网络层数据包捕获工具. 更常见的网络层问题包括SSL握手失败,TCP链接中断,重传等.
本节介绍Wireshark和TCPDUMP的基本用法.
从Wireshark的官方网站下载安装包,安装和启动后,主要界面如下(Mac和Windows版本之间的界面略有不同):

在Wireshark的主界面上,您可以看到本机的网络接口:

以本机为例,双击Wi-Fi: en0接口开始在网卡接口上捕获网络数据包.


Tcpdump是一个紧凑且紧凑的命令行网络数据包捕获和分析工具. 尽管在易用性方面比Wireshark稍差一些,但优点是它可以在更多平台和环境上运行,并且可以直接在客户端或服务器上捕获数据包.
Tcpdump在不同的环境中支持不同的参数. 建议通过man tcpdump命令确认当前支持的参数类型和使用方法.
常见的基本命令组合如下:
// 抓取完整报文并报错到文件中tcpdump -s 0 -w myCapture.pcap
单击此处以获取更多命令.
如文档顶部的图所示,可以在两个位置执行客户端TCP捕获:
本节介绍如何在A点(即客户端出口)处捕获数据包.
iOS客户端的导出数据包捕获要求将iOS移动设备通过USB连接到MacBook,并在Mac上将该设备的网卡进行虚拟映射. Wireshark使用此虚拟网卡在iOS移动设备上捕获网络数据包.

获取iPhone的UDID.
通过USB接口将iOS移动设备连接到Mac,然后在终端上使用以下命令获取iOS设备的UDID(序列号):
$ system_profiler SPUSBDataType
或Xcode>窗口>设备和模拟器以检查UDID(标识符).
创建虚拟网卡映射.
$ rvictl -s < Your Device UUID >Starting device < Your Device UUID > [SUCCEEDED] with interface rvi0
其中rvi0是虚拟网卡名称. 开始捕获数据包(以Wireshark为例).
打开Wireshark反复出现您当前的网络存在链路层劫持,rvi0出现在接口列表界面中. 插图如下:


双击rvi0进入数据包捕获界面,然后输入默认值以自动捕获数据包.
停止捕获数据包.
问题再次发生后,当您需要停止捕获数据包时,请单击菜单栏上的结束按钮(CMD + E快捷键)以停止捕获数据包,然后单击保存按钮(CMD + S快捷键)以保存消息

Android客户端需要事先获取设备的root权限才能捕获数据包. 在设备上调用tcpdump命令以捕获数据包.
下载Android版TCPDump. 安装TCPDump. 使用以下命令在设备上安装TCPDump并赋予其执行权限:
启动TCPDUMP并开始捕获数据包.
adb push tcpdump /data/local/tcpdumpadb shell chmod 6755 /data/local/tcpdump
单击此处以查看TCPDUMP参数的详细配置. 停止捕获数据包并获取数据.
cd /data/local./tcpdump -i any -p -s 0 -w /sdcard/myCapture.pcap
问题再次发生后,当您需要停止捕获数据包时,请按照提示停止捕获数据包(快捷键Ctrl + C). 通过以下命令复制消息数据:
adb pull /sdcard/myCapture.pcap

如文档顶部的图所示,可以在两个位置执行客户端TCP捕获:
本节介绍了B点(即访问设备的入口)的数据包捕获方法.
捕获网络拓扑配置. 此数据包捕获模式的常见网络链路配置如下:
使用Mac或PC作为数据包捕获设备,需要预先为机器配置双网卡反复出现您当前的网络存在链路层劫持,并且其中一个网卡必须能够传输无线热点. 客户端通过Wi-Fi连接到已配置的无线热点,而Mac或PC的另一个网卡已连接到正常网络.
开始捕获数据包(以Wireshark为例).
打开Wireshark,找到手机连接的无线热点网卡(上图中的网卡1),双击网卡ID开始捕获数据包. 停止捕获数据包.
问题重现后,当您需要停止捕获数据包时,请单击菜单栏上的结束按钮(CMD + E快捷方式)以停止捕获数据包,然后单击保存按钮(CMD + S快捷方式)进行保存消息.
注意: “中间设备”可能有很多类型,本节仅介绍其中一种. 实际上,可以使用不同的工具在不同设备上捕获相同类型的数据包. 需要注意的是,请尝试抓住第一台访问设备,以免在中间过程中产生干扰.
如文档顶部的图所示,某些问题需要在服务器上启动数据包捕获. 本节以TCPDUMP为例.
安装TCPDUMP. 开始抓包.
TCPDUMP本身具有许多可配置的参数,可以根据特定的场景进行配置,例如:
有关详细信息,请参见更多参数. 停止捕获数据包.
tcpdump -s 0 -w myCapture.pcap
问题再次发生后,当您需要停止捕获数据包时,请按Ctrl + C组合键以停止捕获数据包并将捕获的数据包保存到合适的位置.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-160291-1.html
真正打海战是不行的