NAME
tcpdump − 轉 儲 網 路 上 的 數 據 流
總 覽 (SYNOPSIS)
tcpdump
[ −adeflnNOpqStvx ] [ −c
count ] [ −F file ]
[ −i interface ] [ −r
file ] [ −s snaplen ]
[ −T type ] [ −w
file ] [ expression ]
描 述 (DESCRIPTION)
Tcpdump 列 印 出 在 某 個 網 路 界 面 上 , 匹 配 布 爾 表 達 式 expression 的 報 文 的 報 頭 .
對 於 SunOS 的 nit 或 bpf 界 面 : 要 運 行 tcpdump , 你 必 須 有 /dev/nit 或 /dev/bpf* 的 讀 訪 問 權 限 .
對 於 Solaris 的 dlpi: 你 必 須 有 網 路 仿 真 設 備 (network pseudo device), 如 /dev/le 的 讀 訪 問 權 限 .
對 於 HP-UX 的 dlpi: 你 必 須 是 root, 或 者 把 它 安 裝 成 root 的 設 置 uid 程 式 .
對 於 IRIX 的 snoop: 你 必 須 是 root, 或 者 把 它 安 裝 成 root 的 設 置 uid 程 式 .
對 於 Linux: 你 必 須 是 root, 或 者 把 它 安 裝 成 root 的 設 置 uid 程 式 .
對 於 Ultrix 和 Digital UNIX: 一 旦 超 級 使 用 者 使 用 pfconfig(8) 開 放 了 promiscuous 操 作 模 式 (promiscuous-mode), 任 何 使 用 者 都 可 以 運 行 tcpdump.
對 於 BSD: 你 必 須 有 /dev/bpf* 的 讀 訪 問 權 限 .
選 項 (OPTIONS)
−a |
試 著 把 網 路 和 廣 播 地 址 轉 換 成 名 稱 . | ||
−c |
當 收 到 count 報 文 後 退 出 . | ||
−d |
把 編 譯 好 的 報 文 匹 配 代 碼 (packet-matching code) 翻 譯 成 可 讀 形 式 , 傳 往 標 準 輸 出 , 然 後 退 出 . | ||
−dd |
把 報 文 匹 配 代 碼 (packet-matching code) 以 C 程 式 片 斷 的 形 式 輸 出 . | ||
−ddd |
把 報 文 匹 配 代 碼 (packet-matching code) 以 十 進 制 數 形 式 輸 出 (前 面 加 上 總 數 ). | ||
−e |
顯 示 鏈 路 層 報 頭 . | ||
−f |
以 數 字 形 式 顯 示 ’外 部 的 ’ 網 際 網 路 地 址 , 而 不 是 字 符 形 式 (這 個 選 項 用 來 繞 開 腦 殼 壞 光 的 SUN 黃 頁 伺 服 器 的 問 題 — 一 般 說 來 當 它 翻 譯 外 部 網 路 的 數 字 地 址 時 會 長 期 掛 起 ). | ||
−F |
把 file 的 內 容 用 作 過 濾 表 達 式 . 忽 略 命 令 行 上 的 表 達 式 . | ||
−i |
監 聽 interface. 如 果 不 指 定 接 口 , tcpdump 在 系 統 的 接 口 清 單 中 , 尋 找 號 碼 最 小 , 已 經 配 置 好 的 接 口 (loopback 除 外 ). 選 中 的 時 候 會 中 斷 連 接 . | ||
−l |
行 緩 沖 標 準 輸 出 . 可 用 於 捕 捉 數 據 的 同 時 查 看 數 據 . 例 如 , |
’’tcpdump −l | tee dat’’ or ’’tcpdump −l > dat & tail −f dat’’.
−n |
不 要 把 地 址 轉 換 成 名 字 (指 的 是 主 機 地 址 , 端 口 號 等 ) | ||
−N |
不 顯 示 主 機 名 字 中 的 域 名 部 分 . 例 如 , 如 果 使 用 這 個 選 項 , tcpdump 只 顯 示 ’’nic’’, 而 不 是 ’’nic.ddn.mil’’. | ||
−O |
禁 止 運 行 報 文 匹 配 代 碼 的 優 化 器 . 這 個 選 項 只 有 當 你 懷 疑 優 化 器 有 bug 時 才 有 用 . | ||
−p |
禁 止 把 接 口 置 成 promiscuous(雜 湊 ) 模 式 . 注 意 , 接 口 有 可 能 因 其 他 原 因 而 處 於 promiscuous 模 式 ; 因 此 , ’-p’ 不 能 作 為 ’ether host {local-hw-addr} 或 ether broadcast’ 的 簡 寫 . | ||
−q |
快 速 輸 出 . 顯 示 較 少 的 協 議 信 息 , 輸 出 行 會 短 一 點 點 . | ||
−r |
從 file 中 讀 入 數 據 報 (檔 案 是 用 -w 選 項 創 建 的 ). 如 果 file 是 ’’-’’, 就 從 標 準 輸 入 讀 入 . | ||
−s |
從 每 個 報 文 中 截 取 snaplen 字 節 的 數 據 , 而 不 是 預 設 的 68 (如 果 是 SunOS 的 NIT, 最 小 值 是 96). 68 個 字 節 適 用 於 IP, ICMP, TCP 和 UDP, 但 是 有 可 能 截 掉 名 字 伺 服 器 和 NFS 報 文 的 協 議 信 息 (見 下 文 ). 輸 出 時 如 果 指 定 ’’[|proto]’’, tcpdump 可 以 指 出 那 些 捕 捉 量 過 小 的 數 據 報 , 這 裏 的 proto 是 截 斷 發 生 處 的 協 議 層 名 稱 . 注 意 , 採 用 更 大 的 捕 捉 范 圍 不 但 增 加 了 處 理 報 文 的 時 間 , 而 且 減 少 了 報 文 的 緩 沖 數 量 , 可 能 導 致 報 文 的 丟 失 . 你 應 該 把 snaplen 設 的 盡 量 小 , 只 要 能 夠 容 納 你 需 要 的 協 議 信 息 就 可 以 了 . | ||
−T |
把 通 過 "expression" 挑 選 出 來 的 報 文 解 釋 成 指 定 的 type. 目 前 已 知 的 類 型 有 : rpc (遠 程 過 程 調 用 Remote Procedure Call), rtp (實 時 應 用 協 議 Real-Time Applications protocol), rtcp (實 時 應 用 控 制 協 議 Real-Time Applications control protocol), vat (可 視 音 頻 工 具 Visual Audio Tool), 和 wb (分 布 式 白 板 distributed White Board). | ||
−S |
顯 示 絕 對 的 , 而 不 是 相 對 的 TCP 流 序 號 . | ||
−t |
禁 止 顯 示 時 戳 標 誌 . | ||
−tt |
顯 示 未 格 式 化 的 時 戳 標 誌 . | ||
−v |
(稍 微 多 一 點 ) 繁 瑣 的 輸 出 . 例 如 , 顯 示 IP 數 據 報 中 的 生 存 周 期 和 服 務 類 型 . | ||
−vv |
更 繁 瑣 的 輸 出 . 例 如 , 顯 示 NFS 應 答 報 文 的 附 加 域 . | ||
−w |
把 原 始 報 文 存 進 file, 不 做 分 析 和 顯 示 . 它 們 可 以 以 後 用 −r 選 項 顯 示 . 如 果 file 是 ’’-’’, 就 寫 往 標 準 輸 出 . | ||
−x |
以 16 進 制 數 形 式 顯 示 每 一 個 報 文 (去 掉 鏈 路 層 報 頭 後 ) . 可 以 顯 示 較 小 的 完 整 報 文 , 否 則 只 顯 示 snaplen 個 字 節 . |
expression
用 來 選 擇 要 轉 儲 的 數 據 報 . 如 果 沒 有 指 定 expression , 就 轉 儲 網 路 的 全 部 報 文 . 否 則 , 只 轉 儲 相 對 expression 為 ’true’ 的 數 據 報 .
expression 由 一 個 或 多 個 原 語 (primitive) 組 成 . 原 語 通 常 由 一 個 標 識 (id, 名 稱 或 數 字 ), 和 標 識 前 面 的 一 個 或 多 個 修 飾 子 (qualifier) 組 成 . 修 飾 子 有 三 種 不 同 的 類 型 :
type |
類 型 修 飾 子 指 出 標 識 名 稱 或 標 識 數 字 代 表 什 麼 類 型 的 東 西 . 可 以 使 用 的 類 型 有 host, net 和 port. 例 如 , ’host foo’, ’net 128.3’, ’port 20’. 如 果 不 指 定 類 型 修 飾 子 , 就 使 用 預 設 的 host . | ||
dir |
方 向 修 飾 子 指 出 相 對 於 標 識 的 傳 輸 方 向 (數 據 是 傳 入 還 是 傳 出 標 識 ). 可 以 使 用 的 方 向 有 src, dst, src or dst 和 src and dst. 例 如 , ’src foo’, ’dst net 128.3’, ’src or dst port ftp-data’. 如 果 不 指 定 方 向 修 飾 子 , 就 使 用 預 設 的 src or dst . 對 於 ’null’ 鏈 路 層 (就 是 說 像 slip 之 類 的 點 到 點 協 議 ), 用 inbound 和 outbound 修 飾 子 指 定 所 需 的 傳 輸 方 向 . | ||
proto |
協 議 修 飾 子 要 求 匹 配 指 定 的 協 議 . 可 以 使 用 的 協 議 有 : ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp 和 udp. 例 如 , ’ether src foo’, ’arp net 128.3’, ’tcp port 21’. 如 果 不 指 定 協 議 修 飾 子 , 就 使 用 所 有 符 合 類 型 的 協 議 . 例 如 , ’src foo’ 指 ’(ip 或 arp 或 rarp) src foo’ (注 意 後 者 不 符 合 語 法 ), ’net bar’ 指 ’(ip 或 arp 或 rarp) net bar’, ’port 53’ 指 ’(tcp 或 udp) port 53’. |
[’fddi’ 實 際 上 是 ’ether’ 的 別 名 ; 分 析 器 把 它 們 視 為 ’’用 在 指 定 網 路 接 口 上 的 數 據 鏈 路 層 .’’ FDDI 報 頭 包 含 類 似 於 以 太 協 議 的 源 目 地 址 , 而 且 通 常 包 含 類 似 於 以 太 協 議 的 報 文 類 型 , 因 此 你 可 以 過 濾 FDDI 域 , 就 像 分 析 以 太 協 議 一 樣 . FDDI 報 頭 也 包 含 其 他 域 , 但 是 你 不 能 在 過 濾 器 表 達 式 裏 顯 式 描 述 .]
作 為 上 述 的 補 充 , 有 一 些 特 殊 的 ’原 語 ’ 關 鍵 字 : gateway, broadcast, less, greater 和 數 學 表 達 式 . 它 們 不 同 於 上 面 的 模 式 , 這 些 在 後 面 有 敘 述 .
更 復 雜 的 過 濾 器 表 達 式 可 以 通 過 and, or 和 not 連 接 原 語 來 組 建 . 例 如 , ’host foo and not port ftp and not port ftp-data’. 為 了 少 敲 點 鍵 , 可 以 忽 略 相 同 的 修 飾 子 . 例 如 , ’tcp dst port ftp or ftp-data or domain’ 實 際 上 就 是 ’tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain’.
允
許 \[u7684] 原 語 有 :
dst host host
如 果 報 文 中 IP 的 目 的 地 址 域 是 host, 則 邏 輯 為 真 . host 既 可 以 是 地 址 , 也 可 以 是 主 機 名 .
src host host
如 果 報 文 中 IP 的 源 地 址 域 是 host, 則 邏 輯 為 真 .
host host
如 果 報 文 中 IP 的 源 地 址 域 或 者 目 的 地 址 域 是 host, 則 邏 輯 為 真 . 上 面 所 有 的 host 表 達 式 都 可 以 加 上 ip, arp, 或 rarp 關 鍵 字 做 前 綴 , 就 像 :
ip host host
它 等 價 於 :
ether proto \ip and host host
如 果 host 是 擁 有 多 個 IP 地 址 的 主 機 名 , 它 的 每 個 地 址 都 會 被 查 驗 .
ether dst ehost
如 果 報 文 的 以 太 目 的 地 址 是 ehost, 則 邏 輯 為 真 . Ehost 既 可 以 是 名 字 (/etc/ethers 裏 有 ), 也 可 以 是 數 字 (有 關 數 字 格 式 另 見 ethers(3N) ).
ether src ehost
如 果 報 文 的 以 太 源 地 址 是 ehost, 則 邏 輯 為 真 .
ether host ehost
如 果 報 文 的 以 太 源 地 址 或 以 太 目 的 地 址 是 ehost, 則 邏 輯 為 真 .
gateway host
如 果 報 文 把 host 當 做 網 關 , 則 邏 輯 為 真 . 也 就 是 說 , 報 文 的 以 太 源 或 目 的 地 址 是 host, 但 是 IP 的 源 目 地 址 都 不 是 host. host 必 須 是 個 主 機 名 , 而 且 必 須 存 在 /etc/hosts 和 /etc/ethers 中 . (一 個 等 價 的 表 達 式 是
ether host ehost and not host host
對 於 host / ehost, 它 既 可 以 是 名 字 , 也 可 以 是 數 字 .)
dst net net
如 果 報 文 的 IP 目 的 地 址 屬 於 網 路 號 net, 則 邏 輯 為 真 . net 既 可 以 是 名 字 (存 在 /etc/networks 中 ), 也 可 以 是 網 路 號 . (詳 見 networks(4)).
src net net
如 果 報 文 的 IP 源 地 址 屬 於 網 路 號 net, 則 邏 輯 為 真 .
net net
如 果 報 文 的 IP 源 地 址 或 目 的 地 址 屬 於 網 路 號 net, 則 邏 輯 為 真 .
net net mask mask
如 果 IP 地 址 匹 配 指 定 網 路 掩 碼 (netmask) 的 net, 則 邏 輯 為 真 . 本 原 語 可 以 用 src 或 dst 修 飾 .
net net/len
如 果 IP 地 址 匹 配 指 定 網 路 掩 碼 的 net, 則 邏 輯 為 真 , 掩 碼 的 有 效 位 寬 為 len. 本 原 語 可 以 用 src 或 dst 修 飾 .
dst port port
如 果 報 文 是 ip/tcp 或 ip/udp, 並 且 目 的 端 口 是 port, 則 邏 輯 為 真 . port 是 一 個 數 字 , 也 可 以 是 /etc/services 中 說 明 過 的 名 字 (參 看 tcp(4P) 和 udp(4P)). 如 果 使 用 名 字 , 則 檢 查 端 口 號 和 協 議 . 如 果 使 用 數 字 , 或 者 有 二 義 的 名 字 , 則 只 檢 查 端 口 號 (例 如 , dst port 513 將 顯 示 tcp/login 的 數 據 和 udp/who 的 數 據 , 而 port domain 將 顯 示 tcp/domain 和 udp/domain 的 數 據 ).
src port port
如 果 報 文 的 源 端 口 號 是 port, 則 邏 輯 為 真 .
port port
如 果 報 文 的 源 端 口 或 目 的 端 口 是 port, 則 邏 輯 為 真 . 上 述 的 任 意 一 個 端 口 表 達 式 都 可 以 用 關 鍵 字 tcp 或 udp 做 前 綴 , 就 像 :
tcp src port port
它 只 匹 配 源 端 口 是 port 的 TCP 報 文 .
less length
如 果 報 文 的 長 度 小 於 等 於 length, 則 邏 輯 為 真 . 它 等 同 於 :
len <= length.
greater length
如 果 報 文 的 長 度 大 於 等 於 length, 則 邏 輯 為 真 . 它 等 同 於 :
len >= length.
ip proto protocol
如 果 報 文 是 IP 數 據 報 (參 見 ip(4P)), 其 內 容 的 協 議 類 型 是 protocol, 則 邏 輯 為 真 . Protocol 可 以 是 數 字 , 也 可 以 是 下 列 名 稱 中 的 一 個 : icmp, igrp, udp, nd, 或 tcp. 注 意 這 些 標 識 符 tcp, udp, 和 icmp 也 是 關 鍵 字 , 所 以 必 須 用 反 斜 槓 (\) 轉 義 , 在 C-shell 中 應 該 是 \\ .
ether broadcast
如 果 報 文 是 以 太 廣 播 報 文 , 則 邏 輯 為 真 . 關 鍵 字 ether 是 可 選 的 .
ip broadcast
如 果 報 文 是 IP廣 播 報 文 , 則 邏 輯 為 真 . Tcpdump 檢 查 全 0 和 全 1 廣 播 約 定 , 並 且 檢 查 本 地 的 子 網 掩 碼 .
ether multicast
如 果 報 文 是 以 太 多 目 傳 送 報 文 (multicast), 則 邏 輯 為 真 . 關 鍵 字 ether 是 可 選 的 . 這 實 際 上 是 ’ether[0] & 1 != 0’ 的 簡 寫 .
ip multicast
如 果 報 文 是 IP多 目 傳 送 報 文 , 則 邏 輯 為 真 .
ether proto protocol
如 果 報 文 協 議 屬 於 以 太 類 型 的 protocol, 則 邏 輯 為 真 . Protocol 可 以 是 數 字 , 也 可 以 是 名 字 , 如 ip, arp, 或 rarp. 注 意 這 些 標 識 符 也 是 關 鍵 字 , 所 以 必 須 用 反 斜 槓 (\) 轉 義 . [如 果 是 FDDI (例 如 , ’fddi protocol arp’), 協 議 標 識 來 自 802.2 邏 輯 鏈 路 控 制 (LLC)報 頭 , 它 通 常 位 於 FDDI 報 頭 的 頂 層 . 當 根 據 協 議 標 識 過 濾 報 文 時 , Tcpdump 假 設 所 有 的 FDDI 報 文 含 有 LLC 報 頭 , 而 且 LLC 報 頭 用 的 是 SNAP 格 式 .]
decnet src host
如 果 DECNET 的 源 地 址 是 host, 則 邏 輯 為 真 , 該 主 機 地 址 的 形 式 可 能 是 ’’10.123’’, 或 者 是 DECNET 主 機 名 . [只 有 配 置 成 運 行 DECNET 的 Ultrix 系 統 支 持 DECNET 主 機 名 .]
decnet dst host
如 果 DECNET 的 目 的 地 址 是 host, 則 邏 輯 為 真 .
decnet host host
如 果 DECNET 的 源 地 址 或 目 的 地 址 是 host, 則 邏 輯 為 真 .
ip, arp, rarp, decnet
是 :
ether proto p
的 簡 寫 形 式 , 其 中 p 為 上 述 協 議 的 一 種 .
lat, moprc, mopdl
是 :
ether proto p
的 簡 寫 形 式 , 其 中 p 為 上 述 協 議 的 一 種 . 注 意 tcpdump 目 前 不 知 道 如 何 分 析 這 些 協 議 .
tcp, udp, icmp
是 :
ip proto p
的 簡 寫 形 式 , 其 中 p 為 上 述 協 議 的 一 種 .
expr relop expr
如 果 這 個 關 系 式 成 立 , 則 邏 輯 為 真 , 其 中 relop 是 >, <, >=, <=, =, != 之 一 , expr 是 數 學 表 達 式 , 由 常 整 數 (標 準 C語 法 形 式 ), 普 通 的 二 進 制 運 算 符 [+, -, *, /, &, |], 一 個 長 度 運 算 符 , 和 指 定 的 報 文 數 據 訪 問 算 符 組 成 . 要 訪 問 報 文 內 的 數 據 , 使 用 下 面 的 語 法 :
proto [ expr : size ]
Proto 是 ether, fddi, ip, arp, rarp, tcp, udp, or icmp 之 一 , 同 時 也 指 出 了 下 標 操 作 的 協 議 層 . expr 給 出 字 節 單 位 的 偏 移 量 , 該 偏 移 量 相 對 於 指 定 的 協 議 層 . Size 是 可 選 項 , 指 出 感 興 趣 的 字 節 數 ; 它 可 以 是 1, 2, 4, 預 設 為 1 字 節 . 由 關 鍵 字 len 給 出 的 長 度 運 算 符 指 明 報 文 的 長 度 .
例 如 , ’ether[0] & 1 != 0’ 捕 捉 所 有 的 多 目 傳 送 報 文 . 表 達 式 ’ip[0] & 0xf != 5’ 捕 捉 所 有 帶 可 選 域 的 IP 報 文 . 表 達 式 ’ip[6:2] & 0x1fff = 0’ 只 捕 捉 未 分 片 和 片 偏 移 為 0 的 數 據 報 . 這 種 檢 查 隱 含 在 tcp 和 udp 下 標 操 作 中 . 例 如 , tcp[0] 一 定 是 TCP 報 頭 的 第 一 個 字 節 , 而 不 是 其 中 某 個 IP片 的 第 一 個 字 節 .
原 語 可 以 用 下 述 方 法 結 合 使 用 :
園 括 弧 括 起 來 的 原 語 和 操 作 符 (園 括 弧 在 Shell 中 有 專 用 , 所 以 必 須 轉 義 ).
取 反 操 作 (’!’ or ’not’).
連 結 操 作 (’&&’ or ’and’).
或 操 作 (’||’ or ’or’).
取 反 操 作 有 最 高 優 先 級 . 或 操 作 和 連 結 操 作 有 相 同 的 優 先 級 , 運 算 時 從 左 到 右 結 合 . 注 意 連 結 操 作 需 要 顯 式 的 and 算 符 , 而 不 是 並 列 放 置 .
如 果 給 出 標 識 符 , 但 沒 給 關 鍵 字 , 那 麼 暗 指 最 近 使 用 的 關 鍵 字 . 例 如 ,
not host vs and ace
作 為
not host vs and host ace
的 簡 寫 形 式 , 不 應 該 和
not ( host vs or ace )
混 淆 .
表 達 式 參 數 可 以 作 為 單 個 參 數 , 也 可 以 作 為 復 合 參 數 傳 給 tcpdump, 後 者 更 方 便 一 些 . 一 般 說 來 , 如 果 表 達 式 包 含 Shell 元 字 符 (metacharacter), 傳 遞 單 個 括 起 來 的 參 數 要 容 易 一 些 . 復 合 參 數 在 被 解 析 前 用 空 格 聯 接 一 起 .
示 例 (EXAMPLES)
顯 示 所 有 進 出 sundown 的 報 文 :
tcpdump host sundown
顯 示 helios 和 主 機 hot, ace 之 間 的 報 文 傳 送 :
tcpdump host helios and \( hot or ace \)
顯 示 ace 和 除 了 helios 以 外 的 所 有 主 機 的 IP報 文 :
tcpdump ip host ace and not helios
顯 示 本 地 的 主 機 和 Berkeley的 主 機 之 間 的 網 路 數 據 :
tcpdump net ucb-ether
顯 示 所 有 通 過 網 關 snup 的 ftp 報 文 (注 意 這 個 表 達 式 被 單 引 號 括 起 , 防 止 shell 解 釋 園 括 弧 ):
tcpdump ’gateway snup and (port ftp or ftp-data)’
顯 示 既 不 是 來 自 本 地 主 機 , 也 不 是 傳 往 本 地 主 機 的 網 路 數 據 (如 果 報 文 通 過 網 關 進 入 其 他 網 路 , 那 麼 它 絕 不 可 能 到 達 你 的 本 地 網 路 ).
tcpdump ip and not net localnet
顯 示 每 個 TCP會 話 的 起 始 和 結 束 報 文 (SYN 和 FIN 報 文 ), 而 且 會 話 方 中 有 一 個 遠 程 主 機 .
tcpdump ’tcp[13] & 3 != 0 and not src and dst net localnet’
顯 示 經 過 網 關 snup 中 大 於 576 字 節 的 IP 數 據 報 :
tcpdump ’gateway snup and ip[2:2] > 576’
顯 示 IP 廣 播 或 多 目 傳 送 的 數 據 報 , 但 這 些 報 文 不 是 通 過 以 太 廣 播 或 以 太 多 目 傳 送 形 式 傳 送 的 :
tcpdump ’ether[0] & 1 = 0 and ip[16] >= 224’
顯 示 所 有 不 是 回 響 請 求 /應 答 的 ICMP 報 文 (也 就 是 說 , 不 是 ping 報 文 ):
tcpdump ’icmp[0] != 8 and icmp[0] != 0"
輸 出 格 式 (OUTPUT FORMAT)
tcpdump 的 輸 出 格 式 取 決 於 協 議 . 下 面 的 描 述 給 出 大 多 數 格 式 的 簡 要 說 明 和 範 例 .
鏈 路 層 報 頭 (Link Level Headers)
如 果 給 出 ’-e’ 選 項 就 顯 示 鏈 路 層 報 頭 .
在 以 太 網 上 , 顯 示 報 文 的 源 目 地 址 , 協 議 和 報 文 長 度 .
在 FDDI 網 路 上 , ’-e’ 選 項 導 致 tcpdump 顯 示 出 ’幀 控 制 (frame control)’ 域 , 源 目 地 址 和 報 文 長 度 . (’幀 控 制 ’ 域 負 責 解 釋 其 餘 的 報 文 . 普 通 報 文 (例 如 裝 載 IP數 據 報 的 報 文 ) 是 ’異 步 ’ 報 文 , 優 先 級 介 於 0 到 7 (例 如 , ’async4’). 那 些 被 認 為 攜 帶 了 802.2 邏 輯 鏈 路 控 制 (LLC) 報 文 ; 如 果 它 們 不 是 ISO 數 據 報 或 者 所 謂 的 SNAP 報 文 , 就 顯 示 LLC 報 頭 .
(注 意 : 以 下 描 述 中 假 設 你 熟 悉 RFC-1144 中 說 明 的 SLIP 壓 縮 算 法 .)
在 SLIP 鏈 路 上 , tcpdump 顯 示 出 方 向 指 示 (’’I’’ 指 inbound(進 入 ), ’’O’’ 指 outbound(離 開 )), 報 文 類 型 和 壓 縮 信 息 . 首 先 顯 示 的 是 報 文 類 型 . 有 三 種 類 型 ip, utcp 和 ctcp. 對 於 ip 報 文 不 再 顯 示 更 多 的 鏈 路 信 息 . 對 於 TCP 報 文 , 在 類 型 後 面 顯 示 連 接 標 識 . 如 果 報 文 是 壓 縮 過 的 , 就 顯 示 出 它 的 編 碼 報 頭 . 這 種 特 殊 情 況 以 *S+n 和 *SA+n 的 形 式 顯 示 , 這 裏 的 n 是 流 序 號 (或 者 流 序 號 和 ack) 的 變 化 總 量 . 如 果 不 是 特 殊 情 況 , 就 顯 示 出 0 或 多 個 變 化 . 變 化 由 U (urgent pointer), W (window), A (ack), S (sequence number) 和 I (packet ID) 指 明 , 後 跟 一 個 變 化 量 (+n or -n), 或 者 是 一 個 新 值 (=n). 最 後 顯 示 報 文 中 的 數 據 總 量 , 以 及 壓 縮 報 頭 的 長 度 .
例 如 , 下 面 一 行 顯 示 了 一 個 傳 出 的 壓 縮 的 TCP 報 文 , 有 一 個 隱 含 的 連 接 標 識 ; 確 認 (ack)的 變 化 量 是 6, 流 序 號 增 加 49, 報 文 ID 增 加 6; 有 三 個 字 節 的 數 據 和 六 個 字 節 的 壓 縮 報 頭 :
O ctcp * A+6 S+49 I+6 3 (6)
ARP/RARP 報 文
Arp/rarp 報 文 的 輸 出 是 請 求 類 型 及 其 參 數 . 輸 出 格 式 大 體 上 能 夠 自 我 解 釋 . 這 裏 是 一 個 簡 單 的 例 子 , 來 自 主 機 rtsg 到 主 機 csam 的 ’rlogin’ 開 始 部 分 :
arp who-has csam tell rtsg arp reply csam is-at CSAM
第 一 行 說 明 rtsg 發 出 一 個 arp 報 文 詢 問 internet 主 機 csam 的 以 太 網 地 址 . Csam 用 它 的 以 太 地 址 作 應 答 (這 個 例 子 中 , 以 太 地 址 是 大 寫 的 , internet 地 址 為 小 寫 ).
如 果 用 tcpdump −n 看 就 清 楚 一 些 :
arp who-has 128.3.254.6 tell 128.3.254.68 arp reply 128.3.254.6 is-at 02:07:01:00:01:c4
如 果 用 tcpdump −e, 可 以 看 到 實 際 上 第 一 個 報 文 是 廣 播 , 第 二 個 報 文 是 點 到 點 的 :
RTSG Broadcast 0806 64: arp who-has csam tell rtsg CSAM RTSG 0806 64: arp reply csam is-at CSAM
這 裏 第 一 個 報 文 指 出 以 太 網 源 地 址 是 RTSG, 目 的 地 址 是 以 太 網 廣 播 地 址 , 類 型 域 為 16進 制 數 0806 (類 型 ETHER_ARP), 報 文 全 長 64 字 節 .
TCP 報 文
(注 意 : 以 下 的 描 述 中 假 設 你 熟 悉 RFC-793 中 說 明 的 TCP 協 議 , 如 果 你 不 了 解 這 個 協 議 , 無 論 是 本 文 還 是 tcpdump 都 對 你 用 處 不 大 )
一 般 說 來 tcp 協 議 的 輸 出 格 式 是 :
src > dst: flags data-seqno ack window urgent options
Src 和 dst 是 源 目 IP地 址 和 端 口 . Flags 是 S (SYN), F (FIN), P (PUSH) 或 R (RST) 或 單 獨 的 ’.’(無 標 誌 ), 或 者 是 它 們 的 組 合 . Data-seqno 說 明 了 本 報 文 中 的 數 據 在 流 序 號 中 的 位 置 (見 下 例 ). Ack 是 在 這 條 連 接 上 信 源 機 希 望 下 一 個 接 收 的 字 節 的 流 序 號 (sequence number). Window 是 在 這 條 連 接 上 信 源 機 接 收 緩 沖 區 的 字 節 大 小 . Urg 表 明 報 文 內 是 ’緊 急 (urgent)’ 數 據 . Options 是 tcp 選 項 , 用 尖 括 號 括 起 (例 如 , <mss 1024>).
Src, dst 和 flags 肯 定 存 在 . 其 他 域 依 據 報 文 的 tcp 報 頭 內 容 , 只 輸 出 有 必 要 的 部 分 .
下 面 是 從 主 機 rtsg rlogin 到 主 機 csam 的 開 始 部 分 .
rtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024> csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024> rtsg.1023 > csam.login: . ack 1 win 4096 rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096 csam.login > rtsg.1023: . ack 2 win 4096 rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096 csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077 csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1 csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1
第 一 行 是 說 從 rtsg 的 tcp 端 口 1023 向 csam 的 login 端 口 發 送 報 文 . S 標 誌 表 明 設 置 了 SYN 標 誌 . 報 文 的 流 序 號 是 768512, 沒 有 數 據 . (這 個 寫 成 ’first:last(nbytes)’, 意 思 是 ’從 流 序 號 first 到 last, 不 包 括 last, 有 nbytes 字 節 的 使 用 者 數 據 ’.) 此 時 沒 有 捎 帶 確 認 (piggy-backed ack), 有 效 的 接 收 視 窗 是 4096 字 節 , 有 一 個 最 大 分 段 長 度 (max-segment-size) 的 選 項 , 請 求 設 置 mss 為 1024 字 節 .
Csam 用 類 似 的 形 式 應 答 , 只 是 增 加 了 一 個 對 rtsg SYN 的 捎 帶 確 認 . 然 後 Rtsg 確 認 csam 的 SYN. ’.’ 意 味 著 沒 有 設 置 標 誌 . 這 個 報 文 不 包 含 數 據 , 因 此 也 就 沒 有 數 據 的 流 序 號 . 注 意 這 個 確 認 流 序 號 是 一 個 小 整 數 (1). 當 tcpdump 第 一 次 發 現 一 個 tcp 會 話 時 , 它 顯 示 報 文 攜 帶 的 流 序 號 . 在 隨 後 收 到 的 報 文 裏 , 它 顯 示 當 前 報 文 和 最 初 那 個 報 文 的 流 序 號 之 差 . 這 意 味 著 從 第 一 個 報 文 開 始 , 以 後 的 流 序 號 可 以 理 解 成 數 據 流 中 的 相 對 位 移 (每 個 報 文 的 第 一 個 數 據 字 節 從 ’1’ 計 數 ). ’-S’ 選 項 能 夠 改 變 這 個 特 性 , 直 接 顯 示 原 始 的 流 序 號 .
在 第 六 行 , rtsg 傳 給 csam 19 個 字 節 的 數 據 (字 節 2 到 20). 報 文 中 設 置 了 PUSH 標 誌 . 第 七 行 csam 表 明 它 收 到 了 rtsg 的 數 據 , 字 節 序 號 是 21, 但 不 包 括 第 21個 字 節 . 顯 然 大 多 數 數 據 在 socket 的 緩 沖 區 內 , 因 為 csam 的 接 收 視 窗 收 到 的 數 據 小 於 19 個 字 節 . 同 時 csam 向 rtsg 發 送 了 一 個 字 節 的 數 據 . 第 八 和 第 九 行 顯 示 csam 發 送 了 兩 個 字 節 的 緊 急 數 據 到 rtsg.
如 果 捕 捉 區 設 置 的 過 小 , 以 至 於 tcpdump 不 能 捕 捉 到 完 整 的 TCP 報 頭 , tcpdump 會 盡 可 能 的 翻 譯 已 捕 獲 的 部 分 , 然 後 顯 示 ’’[|tcp]’’, 表 明 無 法 翻 譯 其 餘 部 分 . 如 果 報 頭 包 含 有 問 題 的 選 項 (選 項 表 長 度 太 小 或 者 超 出 報 頭 范 圍 ), tcpdump 顯 示 ’’[bad opt]’’ 並 且 不 再 翻 譯 其 他 選 項 部 分 (因 為 它 不 可 能 判 斷 出 從 哪 兒 開 始 ). 如 果 報 頭 長 度 表 明 存 在 選 項 , 但 是 IP 數 據 報 長 度 不 夠 , 不 可 能 真 的 保 存 選 項 , tcpdump 就 顯 示 ’’[bad hdr length]’’.
UDP 報 文
UDP 格 式 就 像 這 個 rwho 報 文 顯 示 的 :
actinide.who > broadcast.who: udp 84
就 是 說 把 一 個 udp 數 據 報 從 主 機 actinide 的 who 端 口 發 送 到 broadcast, Internet 廣 播 地 址 的 who 端 口 . 報 文 包 含 84字 節 的 使 用 者 數 據 .
某 些 UDP 服 務 能 夠 識 別 出 來 (從 源 目 端 口 號 上 ), 因 而 顯 示 出 更 高 層 的 協 議 信 息 . 特 別 是 域 名 服 務 請 求 (RFC-1034/1035) 和 NFS 的 RPC 調 用 (RFC-1050).
UDP 名 字 服 務 請 求 (Name Server Requests)
(注 意 : 以 下 的 描 述 中 假 設 你 熟 悉 RFC-1035 說 明 的 域 名 服 務 協 議 . 如 果 你 不 熟 悉 這 個 協 議 , 下 面 的 內 容 可 能 看 起 來 是 天 書 .)
名 字 服 務 請 求 的 格 式 是
src > dst: id op? flags qtype qclass name (len)
h2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)
主 機 h2opolo 訪 問 helios 上 的 域 名 服 務 , 詢 問 和 ucbvax.berkeley.edu. 關 聯 的 地 址 記 錄 (qtype=A). 查 詢 號 是 ’3’. ’+’ 表 明 設 置 了 遞 歸 請 求 標 誌 . 查 詢 長 度 是 37 字 節 , 不 包 括 UDP 和 IP 頭 . 查 詢 操 作 是 普 通 的 Query 操 作 , 因 此 op 域 可 以 忽 略 . 如 果 op 設 置 成 其 他 什 麼 東 西 , 它 應 該 顯 示 在 ’3’ 和 ’+’ 之 間 . 類 似 的 , qclass 是 普 通 的 C_IN 類 型 , 也 被 忽 略 了 . 其 他 類 型 的 qclass 應 該 在 ’A’ 後 面 顯 示 .
Tcpdump 會 檢 查 一 些 不 規 則 情 況 , 相 應 的 結 果 作 為 補 充 域 放 在 方 括 號 內 : 如 果 某 個 查 詢 包 含 回 答 , 名 字 服 務 或 管 理 機 構 部 分 , 就 把 ancount, nscount, 或 arcount 顯 示 成 ’[na]’, ’[nn]’ 或 ’[nau]’, 這 裏 的 n 代 表 相 應 的 數 量 . 如 果 在 第 二 和 第 三 字 節 中 , 任 何 一 個 回 答 位 (AA, RA 或 rcode) 或 任 何 一 個 ’必 須 為 零 ’ 的 位 被 置 位 , 就 顯 示 ’[b2&3=x]’, 這 裏 的 x 是 報 頭 第 二 和 第 三 字 節 的 16進 制 數 .
UDP 名 字 服 務 回 答
名 字 服 務 回 答 的 格 式 是
src > dst: id op rcode flags a/n/au type class data (len)
helios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273) helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)
第 一 個 例 子 裏 , helios 回 答 了 h2opolo 發 出 的 標 識 為 3 的 詢 問 , 一 共 是 3 個 回 答 記 錄 , 3 個 名 字 服 務 記 錄 和 7 個 管 理 結 構 記 錄 . 第 一 個 回 答 紀 錄 的 類 型 是 A (地 址 ), 數 據 是 internet 地 址 128.32.137.3. 回 答 的 全 長 為 273 字 節 , 不 包 括 UDP 和 IP 報 頭 . 作 為 A 記 錄 的 class(C_IN) 可 以 忽 略 op (詢 問 ) 和 rcode (NoError).
在
第 二 個 例 子 裏 ,
helios 對 標 識 為 2 的
詢 問 作 出 域 名
不 存 在 (NXDomain) 的 回
答 , 沒 有 回 答 記
錄 , 一 個 名 字 服
務 記 錄 , 沒 有 管
理 結 構 部 分 .
’*’ 表 明 設 置 了
權 威 回 答 (authoritative
answer). 由 於 沒 有 回
答 記 錄 , 這 裏 就
不 顯 示 type, class 和 data.
其 他 標 誌 字 符 可 以 顯 示 為 ’−’ (沒 有 設 置 遞 歸 有 效 (RA)) 和 ’|’ (設 置 消 息 截 短 (TC)). 如 果 ’問 題 ’ 部 分 沒 有 有 效 的 內 容 , 就 顯 示 ’[nq]’.
注 意 名 字 服 務 的 詢 問 和 回 答 一 般 說 來 比 較 大 , 68 字 節 的 snaplen 可 能 無 法 捕 捉 到 足 夠 的 報 文 內 容 . 如 果 你 的 確 在 研 究 名 字 服 務 的 情 況 , 可 以 使 用 −s 選 項 增 大 捕 捉 緩 沖 區 . ’−s 128’ 應 該 效 果 不 錯 了 .
NFS 請 求 和 響 應
Sun NFS (網 路 檔 案 系 統 ) 的 請 求 和 響 應 顯 示 格 式 是 :
src.xid > dst.nfs: len op
args
src.nfs > dst.xid: reply stat len op results
sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165 wrl.nfs > sushi.6709: reply ok 40 readlink "../var" sushi.201b > wrl.nfs: 144 lookup fh 9,74/4096.6878 "xcolors" wrl.nfs > sushi.201b: reply ok 128 lookup fh 9,74/4134.3150
在 第 一 行 , 主 機 sushi 向 wrl 發 送 號 碼 為 6709 的 交 互 會 話 (注 意 源 主 機 後 面 的 數 字 是 交 互 號 , 不 是 端 口 ). 這 項 請 求 長 112 字 節 , 不 包 括 UDP 和 IP 報 頭 . 在 檔 案 句 柄 (fh) 21,24/10.731657119 上 執 行 readlink (讀 取 符 號 連 接 ) 操 作 . (如 果 運 氣 不 錯 , 就 像 這 種 情 況 , 檔 案 句 柄 可 以 依 次 翻 譯 成 主 次 設 備 號 , i 節 點 號 , 和 事 件 號 (generation number). ) Wrl 回 答 ’ok’ 和 連 接 的 內 容 .
在 第 三 行 , sushi 請 求 wrl 在 目 錄 檔 案 9,74/4096.6878 中 查 找 ’xcolors’. 注 意 數 據 的 列 印 格 式 取 決 於 操 作 類 型 . 格 式 應 該 可 以 自 我 說 明 .
給 出 −v (verbose) 選 項 可 以 顯 示 附 加 信 息 . 例 如 :
sushi.1372a > wrl.nfs: 148 read fh 21,11/12.195 8192 bytes @ 24576 wrl.nfs > sushi.1372a: reply ok 1472 read REG 100664 ids 417/0 sz 29388
(−v 同 時 使 它 顯 示 IP 報 頭 的 TTL, ID, 和 分 片 域 , 在 這 個 例 子 裏 把 它 們 省 略 了 .) 在 第 一 行 , sushi 請 求 wrl 從 檔 案 21,11/12.195 的 偏 移 位 置 24576 開 始 , 讀 取 8192 字 節 . Wrl 回 答 ’ok’; 第 二 行 顯 示 的 報 文 是 應 答 的 第 一 個 分 片 , 因 此 只 有 1472 字 節 (其 餘 數 據 在 後 續 的 分 片 中 傳 過 來 , 但 由 於 這 些 分 片 裏 沒 有 NFS 甚 至 UDP 報 頭 , 因 此 根 據 所 使 用 的 過 濾 器 表 達 式 , 有 可 能 不 再 顯 示 ). −v 選 項 還 會 顯 示 一 些 檔 案 屬 性 (它 們 作 為 檔 案 數 據 的 附 帶 部 分 傳 回 來 ): 檔 案 類 型 (普 通 檔 案 ’’REG’’), 存 取 模 式 (八 進 制 數 ), uid 和 gid, 以 及 檔 案 大 小 .
如 果 再 給 一 個 −v 選 項 (−vv), 還 能 顯 示 更 多 的 細 節 .
注 意 NFS 請 求 的 數 據 量 非 常 大 , 除 非 增 加 snaplen, 否 則 很 多 細 節 無 法 顯 示 . 試 一 試 ’−s 192’ 選 項 .
NFS 應 答 報 文 沒 有 明 確 標 明 RPC 操 作 . 因 此 tcpdump 保 留 有 ’’近 來 的 ’’ 請 求 記 錄 , 根 據 交 互 號 匹 配 應 答 報 文 . 如 果 應 答 報 文 沒 有 相 應 的 請 求 報 文 , 它 就 無 法 分 析 .
KIP Appletalk (UDP 上 的 DDP)
Appletalk DDP 報 文 封 裝 在 UDP 數 據 報 中 , 解 包 後 按 DDP 報 文 轉 儲 (也 就 是 說 , 忽 略 所 有 的 UDP 報 頭 信 息 ). 檔 案 /etc/atalk.names 用 來 把 appletalk 網 路 和 節 點 號 翻 譯 成 名 字 . 這 個 檔 案 的 行 格 式 是
number name
1.254 ether 16.1 icsd-net 1.254.110 ace
前 兩 行 給 出 了 appletalk 的 網 路 名 稱 . 第 三 行 給 出 某 個 主 機 的 名 字 (主 機 和 網 路 依 據 第 三 組 數 字 區 分 − 網 路 號 一 定 是 兩 組 數 字 , 主 機 號 一 定 是 三 組 數 字 .) 號 碼 和 名 字 用 空 白 符 (空 格 或 tab) 隔 開 . /etc/atalk.names 檔 案 可 以 包 含 空 行 或 注 釋 行 (以 ’#’開 始 的 行 ).
Appletalk 地 址 按 這 個 格 式 顯 示
net.host.port
144.1.209.2 > icsd-net.112.220 office.2 > icsd-net.112.220 jssmag.149.235 > icsd-net.2
(如 果 不 存 在 /etc/atalk.names , 或 者 裏 面 缺 少 有 效 項 目 , 就 以 數 字 形 式 顯 示 地 址 .) 第 一 個 例 子 裏 , 網 路 144.1 的 209 節 點 的 NBP (DDP 端 口 2) 向 網 路 icsd 的 112 節 點 的 220 端 口 發 送 數 據 . 第 二 行 和 上 面 一 樣 , 只 是 知 道 了 源 節 點 的 全 稱 (’office’). 第 三 行 是 從 網 路 jssmag 的 149 節 點 的 235 端 口 向 icsd-net 的 NBP 端 口 廣 播 (注 意 廣 播 地 址 (255) 隱 含 在 無 主 機 號 的 網 路 名 字 中 − 所 以 在 /etc/atalk.names 中 區 分 節 點 名 和 網 路 名 是 個 好 主 意 ).
Tcpdump 可 以 翻 譯 NBP (名 字 聯 結 協 議 ) 和 ATP (Appletalk 交 互 協 議 ) 的 報 文 內 容 . 其 他 協 議 只 轉 儲 協 議 名 稱 (或 號 碼 , 如 果 還 沒 給 這 個 協 議 注 冊 名 稱 ) 和 報 文 大 小 .
NBP 報 文 的 輸 出 格 式 就 像 下 面 的 例 子 :
icsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*" jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250 techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186
第 一 行 是 網 路 icsd 的 112 主 機 在 網 路 jssmag 上 的 廣 播 , 對 名 字 laserwriter 做 名 字 查 詢 請 求 . 名 字 查 詢 請 求 的 nbp 標 識 號 是 190. 第 二 行 顯 示 的 是 對 這 個 請 求 的 回 答 (注 意 它 們 有 同 樣 的 標 識 號 ), 主 機 jssmag.209 表 示 在 它 的 250 端 口 注 冊 了 一 個 laserwriter 的 資 源 , 名 字 是 "RM1140". 第 三 行 是 這 個 請 求 的 其 他 回 答 , 主 機 techpit 的 186 端 口 有 laserwriter 注 冊 的 "techpit".
ATP 報 文 格 式 如 下 例 所 示 :
jssmag.209.165 > helios.132: atp-req 12266<0-7> 0xae030001 helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000 jssmag.209.165 > helios.132: atp-req 12266<3,5> 0xae030001 helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000 jssmag.209.165 > helios.132: atp-rel 12266<0-7> 0xae030001 jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002
Jssmag.209 向 主 機 helios 發 起 12266 號 交 互 操 作 , 請 求 8 個 報 文 (’<0-7>’). 行 尾 的 十 六 進 制 數 是 請 求 中 ’userdata’ 域 的 值 .
Helios 用 8 個 512字 節 的 報 文 應 答 . 跟 在 交 互 號 後 面 的 ’:digit’ 給 出 了 交 互 過 程 中 報 文 的 序 列 號 , 括 弧 內 的 數 字 是 報 文 的 數 據 量 , 不 包 括 atp 報 頭 . 報 文 7 的 ’*’ 表 明 設 置 了 EOM 位 .
然 後 Jssmag.209 請 求 重 傳 第 3 & 5 報 文 . Helios 做 了 重 傳 後 jssmag.209 結 束 這 次 交 互 操 作 . 最 後 , jssmag.209 發 起 下 一 次 交 互 請 求 . 請 求 中 的 ’*’ 表 明 沒 有 設 置 XO (exactly once) 位 .
IP 分 片
分 片 的 Internet 數 據 報 顯 示 為
(frag
id:size@offset+)
(frag
id:size@offset)
(第 一 種 形 式 表 明 還 有 更 多 的 分 片 . 第 二 種 形 式 表 明 這 是 最 後 一 片 .)
Id 是 分 片 標 識 號 . Size 是 分 片 大 小 (字 節 ), 不 包 括 IP 報 頭 . Offset 是 該 分 片 在 原 數 據 報 中 的 偏 移 (單 位 是 字 節 ).
每 一 個 分 片 的 信 息 都 可 以 列 印 出 來 . 第 一 個 分 片 包 含 了 高 層 協 議 報 頭 , 顯 示 協 議 信 息 後 顯 示 分 片 的 信 息 . 第 一 個 分 片 以 後 的 分 片 不 再 含 有 高 層 協 議 報 頭 , 所 以 在 源 目 地 址 後 面 只 顯 示 分 片 信 息 . 例 如 , 下 面 是 從 arizona.edu 到 lbl-rtsg.arpa 的 一 部 分 ftp 傳 輸 , 途 經 的 CSNET 看 上 去 處 理 不 了 576 字 節 的 數 據 報 :
arizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328@0+) arizona > rtsg: (frag 595a:204@328) rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560
這 裏 有 幾 點 需 要 注 意 : 首 先 , 第 二 行 的 地 址 不 包 括 端 口 號 . 這 是 因 為 TCP 協 議 信 息 全 部 裝 到 了 第 一 個 分 片 內 , 所 以 顯 示 後 續 分 片 的 時 候 不 可 能 知 道 端 口 或 流 序 號 . 其 次 , 第 一 行 的 tcp 流 序 號 部 分 看 上 去 有 308 字 節 的 使 用 者 數 據 , 實 際 上 是 512 字 節 (第 一 個 分 片 的 308 和 第 二 個 分 片 的 204 字 節 ). 如 果 你 正 在 尋 找 流 序 號 中 的 空 洞 , 或 者 試 圖 匹 配 報 文 的 確 認 (ack), 那 你 上 當 了 .
如 果 報 文 的 IP 標 有 不 要 分 片 標 誌 , 那 麼 在 尾 部 顯 示 (DF).
時 戳
預 設 情 況 下 , 所 有 輸 出 行 的 前 面 都 有 時 戳 . 時 戳 就 是 當 前 時 間 , 顯 示 格 式 為
hh:mm:ss.frac
精 度 和 核 心 時 鐘 一 樣 . 時 戳 反 映 了 核 心 收 到 報 文 的 時 間 . 從 以 太 接 口 收 到 報 文 到 核 心 響 應 ’報 文 就 緒 ’ 中 斷 有 一 個 滯 後 , 該 滯 後 不 被 考 慮 .
另 見 (SEE ALSO)
traffic(1C), nit(4P), bpf(4), pcap(3)
作 者 (AUTHORS)
Van Jacobson, Craig Leres and Steven McCanne, all of the Lawrence Berkeley National Laboratory, University of California, Berkeley, CA.
當 前 版 本 可 以 從 匿 名 ftp 獲 得 :
ftp://ftp.ee.lbl.gov/tcpdump.tar.Z
BUGS
請 把 臭 蟲 報 告 傳 往 tcpdump [AT] ee.gov.
NIT 不 允 許 監 視 你 自 己 的 傳 出 數 據 , BPF 可 以 . 我 們 建 議 你 使 用 後 者 .
應 該 試 著 重 組 IP 分 片 , 至 少 可 以 為 更 高 層 的 協 議 計 算 出 正 確 的 長 度 .
名 字 服 務 逆 向 詢 問 轉 儲 的 不 正 確 : 列 印 出 (空 的 )問 題 部 分 , 而 實 際 上 詢 問 放 在 了 回 答 部 分 . 有 人 認 為 這 種 逆 向 詢 問 本 身 就 是 bug, 應 該 修 改 產 生 問 題 的 程 式 , 而 非 tcpdump.
蘋 果 Ethertalk DDP 的 報 文 應 該 像 KIP DDP 的 報 文 一 樣 容 易 轉 儲 , 事 實 卻 不 是 這 樣 . 即 使 我 們 有 意 作 點 什 麼 來 促 銷 Ethertalk (我 們 沒 有 ), LBL 也 不 允 許 Ethertalk 出 現 在 它 的 任 何 網 路 上 , 所 以 我 們 沒 辦 法 測 試 這 些 代 碼 .
如 果 報 文 的 路 徑 上 出 現 夏 時 制 時 間 變 化 , 可 能 導 致 時 戳 混 亂 . (這 個 時 間 變 化 將 忽 略 )
操 作 FDDI 報 頭 的 過 濾 器 表 達 式 假 設 所 有 的 FDDI 報 文 被 封 裝 在 以 太 報 文 中 . 這 對 IP, ARP 和 DECNET Phase IV 無 疑 是 正 確 的 , 但 對 某 些 協 議 如 ISO CLNS 不 正 確 . 因 此 , 過 濾 器 有 可 能 會 糊 裏 糊 塗 的 的 接 收 一 些 並 不 真 正 匹 配 過 濾 器 表 達 式 的 報 文 .
[中 文 版 維 護 人 ]
徐 明 <xuming [AT] users.net>
[中 文 版 最 新 更 新 ]
2003/05/13