数据包捕获是开发、调试和测试网络的基本工具。
Fuchsia 通过 net
CLI 工具(属于 net-cli)提供目标端数据包捕获功能。
在主机上运行 ffx net capture 插件
借助 ffx net capture 主机插件,您可以直接从开发主机管理滚动捕获。
启动滚动捕获
[host] $ ffx net capture start-rolling name:lo
您可以选择使用标准
pcap-filter 语法指定数据包过滤器,
就像 tcpdump 或 tshark 一样。如需了解启动命令接受的其他参数
,请参阅帮助字符串,如需了解更多示例,请参阅 README。
默认、最小和最大缓冲区空间在 FIDL 中定义,生成的滚动数据包捕获将包含尽可能多的符合协商缓冲区空间的最新捕获的数据包。您还可以使用 --snap-len 参数,以便仅捕获每个数据包的前 N 个字节,而不是整个数据包,这有助于在捕获中容纳更多数据包,因为有效负载的内容通常不相关。
停止并下载滚动捕获
[host] $ ffx net capture stop-rolling
这会停止捕获,将累积的数据包捕获直接下载到您的开发主机,并在主机上输出保存 pcapng 文件的路径。
直接在目标上运行 net 二进制文件
如需直接在目标上运行 net 工具,请确保
//src/connectivity/network/net-cli 包含在您的 build 中。
否则,用法与 ffx 插件几乎相同。
[target] $ net capture start-rolling name:lo
[target] $ net capture stop-rolling
直接在目标上运行 tcpdump
确保您的 build 中包含 //third_party/tcpdump,以便可以直接在目标上运行 tcpdump
。
参考文档:fx 工作流数据包签名
Fuchsia 开发主机和目标之间运行着许多不同类型的服务。这些服务通常由 fx 命令调用。
大多数情况下,您对 fx 工作流生成的数据包不感兴趣。下表列出了值得注意的签名。
| 使用 | 签名 | 参考文档 |
|---|---|---|
| fx shell | 端口 22 | devshell/shell |
| SSDP | 端口 1900 | UPnP 发现流量 |
| zxdb(旧版) | 端口 2345 | 旧版原始 TCP 调试代理连接 |
| mDNS | 端口 5353 | 动态目标发现 |
| 软件包服务器 | 端口 8083 | docs/packages.md |
| Logger | 端口 33337 | NETBOOT_DEBUGLOG_PORT_SERVER |
| Logger | 端口 33338 | NETBOOT_DEBUGLOG_PORT_ACK |
| Bootserver | 端口 33330 | NETBOOT_PORT_SERVER |
| Bootserver | 端口 33331 | NETBOOT_PORT_ADVERT |
| Bootserver | 端口 33332 | NETBOOT_PORT_CMD_START |
| Bootserver | 端口 33339 | NETBOOT_PORT_CMD_END |
| Bootserver | 端口 33340 | NETBOOT_PORT_TFTP_OUTGOING |
| Bootserver | 端口 33341 | NETBOOT_PORT_TFTP_INCOMING |
| 目标 netsvc 地址 | fe80::xxxx:xxff:fexx:xxxx%XX | fx device-finder list --netboot |
| 主机本地链接地址 | fe80::xxxx:xxxx:xxxx:xxxx%XX | fx device-finder list --ipv4=false --local |
| 目标 netstack 地址 | fe80::xxxx:xxxx:xxxx:xxxx%XX | fx get-device-addr |