在 Fuchsia 上擷取封包

封包擷取是開發、偵錯及測試網路的基本工具。

Fuchsia 提供目標端封包擷取功能,可透過 net CLI 工具 (net-cli 的一部分) 擷取封包。

在主機上執行 ffx net capture 外掛程式

ffx net capture 主機外掛程式可讓您直接從開發主機管理滾動擷取作業。

開始循環擷取

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

您可以選擇使用標準 pcap-filter 語法指定封包篩選器,就像 tcpdumptshark 一樣。如要查看 start 指令可採用的其他引數,請參閱說明字串或 README,瞭解更多範例。

預設、最小和最大緩衝區空間是在 FIDL 中定義,而產生的封包擷取作業會包含符合協商緩衝區空間的最新擷取封包。您也可以使用 --snap-len 引數,只擷取每個封包的前 N 個位元組,而非整個封包,這有助於在擷取中容納更多封包,因為酬載內容通常不相關。

停止並下載滾動式擷取畫面

[host] $ ffx net capture stop-rolling

這會停止擷取作業、將累積的封包擷取資料直接下載至開發主機,並在主機上列印 pcapng 檔案的儲存路徑。

直接在目標上執行 net 二進位檔

如要直接在目標上執行 net 工具,請確保建構作業包含 //src/connectivity/network/net-cli

除此之外,使用方式與 ffx 外掛程式幾乎相同。

[target] $ net capture start-rolling name:lo
[target] $ net capture stop-rolling

直接在目標上執行 tcpdump

確認建構作業包含 //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
記錄器 通訊埠 33337 NETBOOT_DEBUGLOG_PORT_SERVER
記錄器 通訊埠 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
目標網路堆疊位址 fe80::xxxx:xxxx:xxxx:xxxx%XX fx get-device-addr