|
-vv 更 繁
瑣 的 輸 出 |
|
. 例 如 , 顯
示 NFS 應 答 報 文 的
附 加 域 .
存 進 file,
不 做 分 析 和 顯
示 . 它 們 可 以 以
後 用 -r 選 項 顯 示 .
如 果 file 是
’’-’’, 就 寫 往
標 準 輸 出 .
以 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’. 允 許
的 原 語 有 :
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), 傳
遞 單 個 括 起 來
的 參 數 要 容 易
一 些 . 複 合 參 數
在 被 解 析 前 用
空 格 聯 接 一 起 .
顯 示 所
有 進 出 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"
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 精 度 和 內
核 時 鐘 一 樣 . 時
戳 反 映 了 內 核
收 到 報 文 的 時
間 . 從 以 太 接 口
收 到 報 文 到 內
核 響 應 ’報 文 就
緒 ’ 中 斷 有 一
個 滯 後 , 該 滯 後
不 被 考 慮 .
traffic(1C),
nit(4P), bpf(4), pcap(3)
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
請 把 臭
蟲 報 告 傳 往
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
http://cmpp.linuxforum.net
本 頁 面
中 文 版 由 中 文 man
手 冊 頁 計 劃 提
供 。 中 文 man 手 冊
頁 計 劃 :
https://github.com/man-pages-zh/manpages-zh
|