封包擷取是開發、偵錯及測試網路的基本工具。
Fuchsia 提供目標端封包擷取功能,可透過 net CLI 工具 (net-cli 的一部分) 擷取封包。
在主機上執行 ffx net capture 外掛程式
ffx net capture 主機外掛程式可讓您直接從開發主機管理滾動擷取作業。
開始循環擷取
[host] $ ffx net capture start-rolling name:lo
您可以選擇使用標準 pcap-filter 語法指定封包篩選器,就像 tcpdump 或 tshark 一樣。如要查看 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 |