|
-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
|