Fuchsia 上的数据包捕获

数据包捕获是开发、调试和测试网络的基本工具。

Fuchsia 通过 net CLI 工具(属于 net-cli)提供目标端数据包捕获功能。

在主机上运行 ffx net capture 插件

借助 ffx net capture 主机插件,您可以直接从开发主机管理滚动捕获。

启动滚动捕获

[host] $ ffx net capture start-rolling name:lo

您可以选择使用标准 pcap-filter 语法指定数据包过滤器, 就像 tcpdumptshark 一样。如需了解启动命令接受的其他参数 ,请参阅帮助字符串,如需了解更多示例,请参阅 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