Imported upstream version 1.5
[manpages-zh.git] / src / man8 / tcpdump.8
blob8cd7152fe2bae2e2859135ce69e4d3e87b64602a
1 .\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1997
2 .\"     The Regents of the University of California.  All rights reserved.
3 .\" All rights reserved.
4 .\"
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that: (1) source code distributions
7 .\" retain the above copyright notice and this paragraph in its entirety, (2)
8 .\" distributions including binary code include the above copyright notice and
9 .\" this paragraph in its entirety in the documentation or other materials
10 .\" provided with the distribution, and (3) all advertising materials mentioning
11 .\" features or use of this software display the following acknowledgement:
12 .\" ``This product includes software developed by the University of California,
13 .\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
14 .\" the University nor the names of its contributors may be used to endorse
15 .\" or promote products derived from this software without specific prior
16 .\" written permission.
17 .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
18 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
19 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20 .\"
21 .TH TCPDUMP 8  "30 June 1997"
22 .SH NAME
23 tcpdump \- 转储网络上的数据流
24 .SH 总览 (SYNOPSIS)
25 .na
26 .B tcpdump
28 .B \-adeflnNOpqStvx
29 ] [
30 .B \-c
31 .I count
32 ] [
33 .B \-F
34 .I file
36 .br
37 .ti +8
39 .B \-i
40 .I interface
41 ] [
42 .B \-r
43 .I file
46 .B \-s
47 .I snaplen
49 .br
50 .ti +8
52 .B \-T
53 .I type
56 .B \-w
57 .I file
60 .I expression
62 .br
63 .ad
64 .SH 描述 (DESCRIPTION)
65 .LP
66 \fITcpdump\fP 显示 网络接口 上 符合 布尔表达式 \fIexpression\fP 的 报头.
67 .LP
68 .B 对于 SunOS 的 nit 或 bpf 界面:
69 要 运行
70 .I tcpdump ,
71 你 必须 有 
72 .I /dev/nit
73
74 .IR /dev/bpf* 
75 的 读访问 权限.
77 .B 对于 Solaris 的 dlpi:
78 你 必须 有 网络仿真设备 (network pseudo device), 如
79 .IR /dev/le 
80 的 读访问 权限.
82 .B 对于 HP-UX 的 dlpi:
83 你 必须 是 root, 或者 把它 安装成 root 的 setuid 程序.
84 .B 对于 IRIX 的 snoop:
85 你 必须 是 root, 或者 把它 安装成 root 的 setuid 程序.
86 .B 对于 Linux:
87 你 必须 是 root, 或者 把它 安装成 root 的 setuid 程序.
89 .B 对于 Ultrix 和 Digital UNIX:
90 一旦 超级用户 用
91 .IR pfconfig (8)
92 开放了 杂凑模式 (promiscuous-mode),
93 任何用户 都可以 运行
94 .BR tcpdump .
96 .B 对于 BSD:
97 你 必须 有 
98 .IR /dev/bpf* 
99 的 读访问 权限.
101 .SH 选项 (OPTIONS)
103 .B \-a
104 试着 把 网络和广播地址 转换成 名称.
106 .B \-c
107 当 收到 \fIcount\fP个 报文 后 退出.
109 .B \-d
110 把 编译好的 报文匹配模板 (packet-matching code) 翻译成 可读形式,
111 传往 标准输出, 然后退出.
113 .B \-dd
114 把 报文匹配模板 (packet-matching code) 以 
115 .B C
116 程序片断 的 形式 输出.
118 .B \-ddd
119 把 报文匹配模板 (packet-matching code) 以 十进制数 形式 输出 
120 (前面 加上 总数).
122 .B \-e
123 每行 都 显示 链路层报头.
125 .B \-f
126 用 数字形式 显示 '外部的' 互联网地址, 而不是 字符形式 (这个 选项 用来
127 绕开 脑壳坏掉的 SUN 黄页服务器 的 问题 \(em 一般说来, 它 翻译 外部网络
128 数字地址 的 时候 会 长期挂起).
130 .B \-F
131 指定 文件 \fIfile\fP 的 内容 为 过滤表达式. 忽略 命令行 上 的 表达式.
133 .B \-i
134 监听 \fIinterface\fP 接口.
135 如果 不指定 接口, \fItcpdump\fP 在 系统 的 接口 清单 中, 寻找 号码最小,
136 已经 配置好的 接口 (loopback 除外). 选中的时候 会 中断 连接.
138 .B \-l
139 行缓冲 标准输出. 可用于 捕捉 数据 的 同时 查看 数据. 例如,
141 ``tcpdump\ \ \-l\ \ |\ \ tee dat'' or
142 ``tcpdump\ \ \-l \ \ > dat\ \ &\ \ tail\ \ \-f\ \ dat''.
144 .B \-n
145 不把 地址 转换成 名字 (如主机地址, 端口号等)
147 .B \-N
148 不显示 主机名字 中的 域名 部分. 例如, 如果 使用 这个 选项, 
149 \fItcpdump\fP 只显示 ``nic'', 而不是 ``nic.ddn.mil''.
151 .B \-O
152 禁止运行 报文匹配模板 的 优化器. 当 怀疑 优化器 含有 bug 时, 这个选项 才有用.
154 .B \-p
155 \fI禁止\fP 把 接口 置成 promiscuous 模式. 注意, 接口 有可能 因 其他原因
156 而 处于 promiscuous 模式; 因此, '-p' 不能 作为
157 `ether host {local-hw-addr} 或 ether broadcast' 的 简写.
159 .B \-q
160 快速输出. 显示 较少的 协议信息, 输出行 将 短一点点.
162 .B \-r
163 从 \fIfile\fR 中 读入 数据报 (文件 是用 -w 选项 创建的).
164 如果 \fIfile\fR 是 ``-'', 就 读 标准输入.
166 .B \-s
167 从每个 报文 中 截取 \fIsnaplen\fP 字节的数据, 而不是 缺省的 68 (如果是
168 SunOS 的 NIT, 最小值是 96). 68 个字节 适用于 IP, ICMP, TCP 和 UDP, 
169 但是 有可能 截掉 名字服务器 和 NFS 报文 的 协议 信息 (见下面).
170 输出时 如果指定 ``[|\fIproto\fP]'',  tcpdump 可以 指出 那些 捕捉量过小
171 的 数据报, 这里的 \fIproto\fP 是 截断发生处 的 协议层 名称.
172 注意, 采用 更大的 捕捉范围 既增加了 处理 报文 的 时间, 又 相应的 减少了
173 报文的 缓冲 数量, 可能 导致 报文的丢失. 你 应该 把 \fIsnaplen\fP 设的
174 尽量小, 只要 能够 容纳 你 需要 的 协议信息 就可以了.
177 .B \-T
178 把 通过 "\fIexpression\fP" 挑选出来的 报文 解释成 指定的 \fItype\fR. 
179 目前 已知 的 类型 有:
180 \fBrpc\fR (远程过程调用 Remote Procedure Call),
181 \fBrtp\fR (实时应用协议 Real-Time Applications protocol),
182 \fBrtcp\fR (实时应用控制协议 Real-Time Applications control protocol),
183 \fBvat\fR (可视音频工具 Visual Audio Tool),
185 \fBwb\fR (分布式白板 distributed White Board).
187 .B \-S
188 显示 绝对的, 而不是 相对的 TCP 序列号.
190 .B \-t
191 \fI禁止\fP 显示 时戳标志.
193 .B \-tt
194 显示 未格式化的 时戳标志.
196 .B \-v
197 (稍微多一点) 繁琐的输出. 例如, 显示 IP 数据报 中的 生存周期 和 服务类型.
199 .B \-vv
200 更繁琐的输出. 例如, 显示 NFS 应答报文 的 附加域.
202 .B \-w
203 把 原始报文 存进 \fIfile\fR, 不分析 也 不显示. 它们 可以 以后 用 \-r 
204 选项 显示. 如果 \fIfile\fR 是 ``-'', 就 写到 标准输出.
206 .B \-x
207 以 十六进制数 形式 显示 每一个 报文 (去掉链路层报头后) .
208 可以 显示 较小的 完整 报文, 否则 只 显示
209 .I snaplen
210 个 字节 .
211 .IP "\fIexpression\fP"
213 用来 选择 要 转储 的 数据报.  如果 没有 指定 \fIexpression\fP ,
214 就 转储 网络的 全部 报文.  否则, 只转储 相对 \fIexpression\fP 为 `true' 
215 的 数据报.
217 \fIexpression\fP 由 一个或多个
218 .I 原语 (primitive) 
219 组成. 原语 通常 由 一个
220 .I 标识 
221 (id, 名称或数字), 和 标识 前面的 一个或多个 修饰子(qualifier) 组成.
222 修饰子 有 三种 不同的类型:
223 .IP \fItype\fP
224 类型修饰子 指出 标识名称 或 标识数字 代表 什么 类型的东西.
225 可以使用的 类型 有
226 .BR host ,
227 .B net
229 .BR port .
230 例如, `host foo', `net 128.3', `port 20'.  如果 不指定 类型修饰子,
231 就使用 缺省的
232 .B host .
234 .IP \fIdir\fP
235 方向修饰子 指出 相对于 
236 .B 标识
237 的 传输方向 (数据是 传入还是传出 标识).
238 可以使用的 方向 有
239 .BR src ,
240 .BR dst ,
241 .B "src or dst"
243 .B "src and"
244 .BR dst .
245 例如, `src foo', `dst net 128.3', `src or dst port ftp-data'.  
246 如果 不指定 方向修饰子, 就使用 缺省的
247 .B "src or dst" .
248 对于 `null' 链路层 (就是说 象 slip 之类的 点到点 协议), 用
249 .B inbound
251 .B outbound
252 修饰子 指定 所需的 传输方向.
253 .IP \fIproto\fP
254 协议修饰子 要求 匹配 指定的协议. 可以使用的 协议 有:
255 .BR ether ,
256 .BR fddi ,
257 .BR ip ,
258 .BR arp ,
259 .BR rarp ,
260 .BR decnet ,
261 .BR lat ,
262 .BR sca ,
263 .BR moprc ,
264 .BR mopdl ,
265 .B tcp
267 .BR udp .
268 例如, `ether src foo', `arp net 128.3', `tcp port 21'.  如果 不指定
269 协议修饰子, 就使用 所有 符合 类型 的 协议. 例如, `src foo' 指 
270 `(ip or arp or rarp) src foo' (注意后者不符合语法), `net bar' 指 `(ip or
271 arp or rarp) net bar',  `port 53' 指 `(tcp or udp) port 53'.
273 [`fddi' 实际上 是 `ether' 的 别名; 分析器 把 它们 视为
274 ``用在 指定 网络接口 上的 数据链路层.''  FDDI 报头 包含 类似于 以太协议
275 的 源目地址, 而且 通常 包含 类似于 以太协议 的 报文类型, 因此 你 可以
276 分析 FDDI 域, 就象 分析 以太协议 一样. FDDI 报头 也 包含 其他 域, 但是
277 你 不能 在 过滤器表达式 里 显式描述.]
280 作为 上述 的 补充, 有一些 特殊的 `原语' 关键字, 它们 不同于 上面的模式:
281 .BR gateway ,
282 .BR broadcast ,
283 .BR less ,
284 .B greater
285 和 数学表达式. 这些 在 后面 有 叙述.
287 更复杂的 过滤器表达式 可以 通过
288 .BR and ,
289 .B or
291 .B not
292 连接 原语 来 组建.  例如, `host foo and not port ftp and not port ftp-data'.
293 为了少敲点键, 可以忽略 相同的 修饰子.  例如,
294 `tcp dst port ftp or ftp-data or domain' 实际上 就是
295 `tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.
297 允许的 原语 有:
298 .IP "\fBdst host \fIhost\fR"
299 如果 报文中 IP 的 目的地址域 是 \fIhost\fP, 则 逻辑 为 真.
300 \fIhost\fP 既可以 是 地址, 也可以 是 主机名.
301 .IP "\fBsrc host \fIhost\fR"
302 如果 报文中 IP 的 源地址域 是 \fIhost\fP, 则 逻辑 为 真.
303 .IP "\fBhost \fIhost\fP
304 如果 报文中 IP 的 源地址域 或者 目的地址域 是 \fIhost\fP, 则 逻辑 为 真.
305 上面 所有的 host 表达式 都可以 加上
306 \fBip\fP, \fBarp\fP, 或 \fBrarp\fP 关键字 做 前缀, 就象:
307 .in +.5i
309 \fBip host \fIhost\fR
311 .in -.5i
312 它等价于:
313 .in +.5i
315 \fBether proto \fI\\ip\fB and host \fIhost\fR
317 .in -.5i
318 如果 \fIhost\fR 是 拥有 多个 IP 地址 的 主机名, 它的 每个地址 都会 被查验.
320 .IP "\fBether dst \fIehost\fP
321 如果 报文的 以太目的地址 是 \fIehost\fP, 则 逻辑 为 真. \fIEhost\fP
322 既可以是 名字 (/etc/ethers 里有), 也可以是 数字 (有关 数字格式 另见
323 .IR ethers (3N)
325 .IP "\fBether src \fIehost\fP
326 如果 报文的 以太源地址 是 \fIehost\fP, 则 逻辑 为 真.
327 .IP "\fBether host \fIehost\fP
328 如果 报文的 以太源地址 或 以太目的地址 是 \fIehost\fP, 则 逻辑 为 真.
329 .IP "\fBgateway\fP \fIhost\fP
330 如果 报文 把 \fIhost\fP 当做 网关, 则 逻辑 为 真.  也就是说, 报文的
331 以太源或目的地址 是 \fIhost\fP, 但是 IP 的 源目地址 都不是 \fIhost\fP.
332 \fIhost\fP 必须 是个 主机名, 而且 必须 存在 /etc/hosts 和 /etc/ethers 中.  
333 (一个等价的表达式是
334 .in +.5i
336 \fBether host \fIehost \fBand not host \fIhost\fR
338 .in -.5i
339 对于 \fIhost / ehost\fP, 它既可以是 名字, 也可以是 数字.)
340 .IP "\fBdst net \fInet\fR"
341 如果 报文的 IP 目的地址 属于 网络号 \fInet\fP, 则 逻辑 为 真. \fInet\fP 
342 既可以 是 名字 (存在 /etc/networks 中), 也可以是 网络号. 
343 (详见 \fInetworks(4)\fP).
344 .IP "\fBsrc net \fInet\fR"
345 如果 报文的 IP 源地址 属于 网络号 \fInet\fP, 则 逻辑 为 真.
346 .IP "\fBnet \fInet\fR"
347 如果 报文的 IP 源地址 或 目的地址 属于 网络号 \fInet\fP, 则 逻辑 为 真.
348 .IP "\fBnet \fInet\fR \fBmask \fImask\fR"
349 如果 IP 地址 匹配 指定 网络掩码(netmask) 的 \fInet\fR,  则 逻辑 为 真.
350 本原语 可以用 \fBsrc\fR 或 \fBdst\fR 修饰.
351 .IP "\fBnet \fInet\fR/\fIlen\fR"
352 如果 IP 地址 匹配 指定 网络掩码 的 \fInet\fR,  则 逻辑 为 真,
353 掩码 的 有效位宽 为 \fIlen\fR.
354 本原语 可以用 \fBsrc\fR 或 \fBdst\fR 修饰.
355 .IP "\fBdst port \fIport\fR"
356 如果 报文 是 ip/tcp 或 ip/udp, 并且 目的端口 是 \fIport\fP, 则 逻辑 为 真.
357 \fIport\fP 是一个 数字, 也可以是 /etc/services 中 说明过的 名字 (参看
358 .IR tcp (4P)
360 .IR udp (4P)).
361 如果 使用 名字, 则 检查 端口号 和 协议. 如果 使用 数字, 或者 有二义的名字,
362 则 只检查 端口号 (例如, \fBdst port 513\fR 将显示 tcp/login 的数据 和 udp/who 
363 的数据, 而 \fBport domain\fR 将显示 tcp/domain 和 udp/domain 的数据).
364 .IP "\fBsrc port \fIport\fR"
365 如果 报文 的 源端口号 是 \fIport\fP, 则 逻辑 为 真.
366 .IP "\fBport \fIport\fR"
367 如果 报文 的 源端口 或 目的端口 是 \fIport\fP, 则 逻辑 为 真.
368 上述的 任意一个 端口表达式 都可以 用 关键字
369 \fBtcp\fP 或 \fBudp\fP 做 前缀, 就象:
370 .in +.5i
372 \fBtcp src port \fIport\fR
374 .in -.5i
375 它 只匹配 源端口 是 \fIport\fP 的 TCP 报文.
376 .IP "\fBless \fIlength\fR"
377 如果 报文 的 长度 小于等于 \fIlength\fP, 则 逻辑 为 真.
378 它等同于:
379 .in +.5i
381 \fBlen <= \fIlength\fP.
383 .in -.5i
384 .IP "\fBgreater \fIlength\fR"
385 如果 报文 的 长度 大于等于 \fIlength\fP, 则 逻辑 为 真.
386 它等同于:
387 .in +.5i
389 \fBlen >= \fIlength\fP.
391 .in -.5i
392 .IP "\fBip proto \fIprotocol\fR"
393 如果 报文 是 IP 数据报(参见
394 .IR ip (4P)) ,
395 其 内容 的 协议类型 是 \fIprotocol\fP, 则 逻辑 为 真.
396 \fIProtocol\fP 可以是 数字, 也可以是 下列 名称 中的 一个:
397 \fIicmp\fP, \fIigrp\fP, \fIudp\fP, \fInd\fP, 或 \fItcp\fP.
398 注意 这些 标识符 \fItcp\fP, \fIudp\fP, 和 \fIicmp\fP 也同样是 关键字,
399 所以 必须 用 反斜杠(\\) 转义, 在 C-shell 中 应该是 \\\\ .
400 .IP "\fBether broadcast\fR"
401 如果 报文 是 以太广播报文, 则 逻辑 为 真.
402 关键字 \fIether\fP 是 可选的.
403 .IP "\fBip broadcast\fR"
404 如果 报文 是 IP广播报文, 则 逻辑 为 真. Tcpdump 检查 全0 和 全1 广播约定,
405 并且 检查 本地 的 子网掩码.
406 .IP "\fBether multicast\fR"
407 如果 报文 是 以太多目传送报文(multicast), 则 逻辑 为 真.
408 关键字 \fIether\fP 是 可选的. 这实际上 是 `\fBether[0] & 1 != 0\fP' 的简写.
409 .IP "\fBip multicast\fR"
410 如果 报文 是 IP多目传送报文, 则 逻辑 为 真.
411 .IP  "\fBether proto \fIprotocol\fR"
412 如果 报文协议 属于 以太类型 的 \fIprotocol\fR, 则 逻辑 为 真.
413 \fIProtocol\fP 可以是 数字, 也可以是 名字, 如
414 \fIip\fP, \fIarp\fP, 或 \fIrarp\fP.
415 注意 这些 标识符 也是 关键字, 所以 必须 用 反斜杠(\\) 转义.
416 [如果是 FDDI (例如, `\fBfddi protocol arp\fR'), 协议 标识 来自 802.2 
417 逻辑链路控制(LLC)报头, 它 通常 位于 FDDI 报头 的 顶层. 当 根据 协议标识
418 过滤 报文 时, \fITcpdump\fP 假设 所有的 FDDI 报文 含有 LLC 报头, 而且
419 LLC 报头 使用 SNAP 格式.]
421 .IP "\fBdecnet src \fIhost\fR"
422 如果 DECNET 的 源地址 是
423 .IR host ,
424 则 逻辑 为 真, 该 主机地址 的 形式 可能 是 ``10.123'', 或者是 DECNET 主机名.
425 [只有 配置成 运行 DECNET 的 Ultrix 系统 支持 DECNET 主机名.]
426 .IP "\fBdecnet dst \fIhost\fR"
427 如果 DECNET 的 目的地址 是
428 .IR host ,
429 则 逻辑 为 真.
430 .IP "\fBdecnet host \fIhost\fR"
431 如果 DECNET 的 源地址 或 目的地址 是
432 .IR host ,
433 则 逻辑 为 真.
434 .IP "\fBip\fR, \fBarp\fR, \fBrarp\fR, \fBdecnet\fR"
435 是:
436 .in +.5i
438 \fBether proto \fIp\fR
440 .in -.5i
441 的 简写 形式, 其中 \fIp\fR 为 上述 协议 的 一种.
442 .IP "\fBlat\fR, \fBmoprc\fR, \fBmopdl\fR"
443 是:
444 .in +.5i
446 \fBether proto \fIp\fR
448 .in -.5i
449 的 简写 形式, 其中 \fIp\fR 为 上述 协议 的 一种.
450 注意
451 \fItcpdump\fP 目前 不知道 如何 分析 这些 协议.
452 .IP  "\fBtcp\fR, \fBudp\fR, \fBicmp\fR"
453 是:
454 .in +.5i
456 \fBip proto \fIp\fR
458 .in -.5i
459 的 简写 形式, 其中 \fIp\fR 为 上述 协议 的 一种.
460 .IP  "\fIexpr relop expr\fR"
461 如果 这个 关系 成立, 则 逻辑 为 真, 其中 \fIrelop\fR 是 >, <, >=, <=, =, != 
462 之一, \fIexpr\fR 是 数学表达式, 由 常整数(标准C语法形式), 普通的 二进制运算符
463 [+, -, *, /, &, |], 一个 长度运算符, 和 指定的 报文数据访问算符 组成.
464 要 访问 报文内 的 数据, 使用 下面的 语法:
465 .in +.5i
467 \fIproto\fB [ \fIexpr\fB : \fIsize\fB ]\fR
469 .in -.5i
470 \fIProto\fR 是 \fBether, fddi,
471 ip, arp, rarp, tcp, udp, \fRor \fBicmp\fR 之一, 同时 也指出了 下标 操作 的
472 协议层. \fIexpr\fR 给出 字节单位 的 偏移量, 该 偏移量 相对于 指定的 协议层.
473 \fISize\fR 是 可选项, 指出 感兴趣的 字节数; 它可以 是 1, 2, 4, 缺省为 1 字节.
474 由 关键字 \fBlen\fP 给出的 长度运算符 指明 报文 的 长度.
476 例如, `\fBether[0] & 1 != 0\fP' 捕捉 所有的 多目传送 报文.
477 表达式 `\fBip[0] & 0xf != 5\fP' 捕捉 所有 带 可选域 的 IP 报文.
478 表达式 `\fBip[6:2] & 0x1fff = 0\fP' 只捕捉 未分片 和 片偏移为0 的 数据报.
479 这种 检查 隐含在 \fBtcp\fP 和 \fBudp\fP 下标操作 中.
480 例如, \fBtcp[0]\fP 一定是 TCP \fI报头\fP 的 第一个 字节, 而不是 其中 某个
481 IP片 的 第一个 字节.
483 原语 可以 用 下述 方法 结合使用:
485 园括弧 括起来的 原语 和 操作符 (园括弧 在 Shell 中 有 特定含义, 所以必须转义).
487 取反操作 (`\fB!\fP' or `\fBnot\fP').
489 连结操作 (`\fB&&\fP' or `\fBand\fP').
491 或操作 (`\fB||\fP' or `\fBor\fP').
493 取反操作 有 最高优先级.
494 或操作 和 连结操作 有 相同的 优先级, 运算时 从左到右 结合.
495 注意 连结操作 需要 显式的 \fBand\fR 算符, 而不是 并列放置.
497 如果 给出 标识符, 但没给 关键字, 那么 暗指 最近使用 的 关键字.
498 例如,
499 .in +.5i
501 \fBnot host vs and ace\fR
503 .in -.5i
504 作为
505 .in +.5i
507 \fBnot host vs and host ace\fR
509 .in -.5i
510 的 简写形式, 不应该 和
511 .in +.5i
513 \fBnot ( host vs or ace )\fR
515 .in -.5i
516 混淆.
518 表达式参数 可以 作为 单个 参数 传给 tcpdump, 也可以 作为 复合参数,
519 后者 更方便 一些.
520 一般说来, 如果 表达式 包含 Shell 元字符(metacharacter), 传递 单个 括起来
521 的 参数 要 容易 一些. 复合参数 在 被解析前 用 空格 联接 一起.
523 .SH 示例 (EXAMPLES)
525 显示 所有 进出 \fIsundown\fP 的 报文:
528 \fBtcpdump host sundown\fP
532 显示 \fIhelios\fR 和 主机 \fIhot\fR, \fIace\fR 之间 的 报文 传送:
535 \fBtcpdump host helios and \\( hot or ace \\)\fP
539 显示 \fIace\fR 和 除了 \fIhelios\fR 以外的 所有 主机 的 IP报文:
542 \fBtcpdump ip host ace and not helios\fP
546 显示 本地主机 和 Berkeley主机 之间 的 网络数据:
550 tcpdump net ucb-ether
554 显示 所有 通过 网关 \fIsnup\fP 的 ftp 报文
555 (注意 这个 表达式 被 单引号 括起, 防止 shell 解释 园括弧):
559 tcpdump 'gateway snup and (port ftp or ftp-data)'
563 显示 既不是 来自 本地主机, 也不是 传往 本地主机 的 网络数据
564 (if you gateway to one other net, this stuff should never make it onto your
565 local net).
569 tcpdump ip and not net \fIlocalnet\fP
573 显示 每个 TCP会话 的 起始 和 结束 报文 (SYN 和 FIN 报文), 而且 会话方 中
574 有一个 远程主机.
578 tcpdump 'tcp[13] & 3 != 0 and not src and dst net \fIlocalnet\fP'
582 显示 经过 网关 \fIsnup\fP 中 大于 576 字节的 IP 数据报:
586 tcpdump 'gateway snup and ip[2:2] > 576'
590 显示 IP 广播 或 多目传送 的 数据报, 这些 报文
591 .I 不是
592 通过 以太网 的 广播 或 多目传送 形式 传送的:
596 tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
600 显示 所有 不是 回响请求/应答 的 ICMP 报文 (也就是说, 不是 ping 报文):
604 tcpdump 'icmp[0] != 8 and icmp[0] != 0"
607 .SH 输出格式 (OUTPUT FORMAT)
609 \fItcpdump\fP 的 输出格式 取决于 协议. 下面的 描述 给出 大多数 格式 的
610 简要说明 和 范例.
611 .de HD
612 .sp 1.5
616 链路层报头 (Link Level Headers)
618 如果 给出 '-e' 选项 就 显示 链路层报头.
619 在 以太网上, 显示 报文的 源目地址, 协议 和 报文长度.
621 在 FDDI 网络上, '-e' 选项 导致 \fItcpdump\fP 显示出 `帧控制(frame control)'
622 域,  源目地址 和 报文长度. (`帧控制' 域 负责 解释 其余的 报文.
623 普通报文 (比如说 载有 IP数据报) 是 `异步' 报文, 优先级 介于 0 到 7; 
624 例如, `\fBasync4\fR'.  这些 被认为 载有 802.2 逻辑链路控制(LLC) 报文;
625 如果 它们 \fI不是\fR ISO 数据报 或者 所谓的 SNAP 报文, 就显示出 LLC 报头.
627 \fI(注意: 以下 描述中 假设 你 熟悉 RFC-1144 中说明的 SLIP 压缩算法.)\fP
629 在 SLIP 链路上, \fItcpdump\fP 显示出 方向指示 (``I'' 指 inbound, 
630 ``O'' 指 outbound), 报文类型 和 压缩信息.
631 首先显示的 是 报文类型. 有三种 类型 \fIip\fP, \fIutcp\fP 和 \fIctcp\fP.
632 对于 \fIip\fR 报文 不再 显示 更多的 链路信息.
633 对于 TCP 报文, 在 类型 后面 显示 连接标识.
634 如果 报文 是 压缩过的, 就显示出 编码的报头.
635 特殊 情形 以 \fB*S+\fIn\fR 和 \fB*SA+\fIn\fR 的 形式 显示, 这里的
636 \fIn\fR 是 顺序号 (或顺序号 及其 确认) 发生 的 改变 总和.
637 如果 不是 特殊 情形, 就显示 0 或 多少个 改变.
638 改变 由 U (urgent pointer), W (window), A (ack), S (sequence number) 
639 和 I (packet ID) 指明, 后跟 一个 变化量(+n or -n), 或 另一个 值(=n).
640 最后显示 报文中 的 数据总和, 以及 压缩报头 的 长度.
642 例如, 下面一行 显示了 一个 传出的 压缩的 TCP 报文, 有一个 隐含的 连接标识;
643 确认(ack)的 变化量是 6, 顺序号 是 49, 报文ID 是 6; 有三个字节的数据 和
644 六个字节 的 压缩报头:
647 \fBO ctcp * A+6 S+49 I+6 3 (6)\fP
651 ARP/RARP 报文
653 Arp/rarp 报文 的 输出 显示 请求类型 及其 参数. 输出格式 倾向于 能够 自我解释.
654 这里 是一个 简单的例子, 来自 主机 \fIrtsg\fP 到 主机 \fIcsam\fP 的 'rlogin' 
655 开始 部分:
658 .sp .5
659 \f(CWarp who-has csam tell rtsg
660 arp reply csam is-at CSAM\fP
661 .sp .5
664 第一行 说明 rtsg 发出 一个 arp 报文 询问 internet 主机 csam 的 以太网地址.
665 Csam 用 它的 以太地址 作应答 (这个例子中, 以太地址 是 大写的, internet 地址
666 为 小写).
668 如果 用 \fBtcpdump \-n\fP 看上去 要 清楚一些:
671 .sp .5
672 \f(CWarp who-has 128.3.254.6 tell 128.3.254.68
673 arp reply 128.3.254.6 is-at 02:07:01:00:01:c4\fP
677 如果 用 \fBtcpdump \-e\fP, 可以 看到 实际上 第一个 报文 是 广播, 第二个
678 报文 是 点到点 的:
681 .sp .5
682 \f(CWRTSG Broadcast 0806  64: arp who-has csam tell rtsg
683 CSAM RTSG 0806  64: arp reply csam is-at CSAM\fP
684 .sp .5
687 这里 第一个 报文 指出 以太网源地址是 RTSG, 目的地址 是 以太网广播地址,
688 类型域 为 16进制数 0806 (类型 ETHER_ARP), 报文全长 64 字节.
690 TCP 报文
692 \fI(注意: 以下的描述中 假设 你 熟悉 RFC-793 中 说明的 TCP 协议, 如果 你
693 不了解 这个 协议, 无论是 本文 还是 tcpdump 都对你 用处 不大)\fP
695 一般说来 tcp 协议的 输出格式是:
698 .sp .5
699 \fIsrc > dst: flags data-seqno ack window urgent options\fP
700 .sp .5
703 \fISrc\fP 和 \fIdst\fP 是 源目IP地址和端口.  \fIFlags\fP 是 S (SYN),
704 F (FIN), P (PUSH) 或 R (RST) 或 单独的 `.'(无标志), 或者是 它们的 组合.
705 \fIData-seqno\fP 说明了 本报文中的数据 在 流序号 中的 位置 (见下例).
706 \fIAck\fP 是 在这条连接上 信源机 希望 下一个 接收的 字节的 流序号
707 (sequence number).
708 \fIWindow\fP 是 在这条连接上 信源机 接收缓冲区 的 字节大小.
709 \fIUrg\fP 表明 报文内 是 `紧急(urgent)' 数据.
710 \fIOptions\fP 是 tcp 可选报头, 用 尖括号 括起 (例如, <mss 1024>).
712 \fISrc, dst\fP 和 \fIflags\fP 肯定 存在.  其他域 依据 报文的 tcp 报头 内容,
713 只输出 有必要 的 部分.
715 下面 是 从 主机 \fIrtsg\fP rlogin 到 主机 \fIcsam\fP 的 开始部分.
718 .sp .5
719 \s-2\f(CWrtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024>
720 csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024>
721 rtsg.1023 > csam.login: . ack 1 win 4096
722 rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
723 csam.login > rtsg.1023: . ack 2 win 4096
724 rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
725 csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
726 csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
727 csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1\fP\s+2
728 .sp .5
731 第一行 是说 从 rtsg 的 tcp 端口 1023 向 csam 的 \fIlogin\fP 端口 发送 报文.
732 \fBS\fP 标志 表明 设置了 \fISYN\fP 标志.
733 报文 的 流序号 是 768512, 没有 数据.
734 (这个写成 `first:last(nbytes)',  意思是 `从 流序号 \fIfirst\fP 到 \fIlast\fP,
735 不包括 \fIlast\fP, 有 \fInbytes\fP 字节的 用户数据'.)
736 此时 没有 捎带确认(piggy-backed ack), 有效的 接收窗口 是 4096 字节,
737 有一个 最大段大小(max-segment-size) 的 选项, 请求 设置 mss 为 1024 字节.
739 Csam 用类似的 形式 应答, 只是 增加了 一个 对 rtsg SYN 的 捎带确认.
740 然后 Rtsg 确认 csam 的 SYN.  `.' 意味着 没有 设置 标志.
741 这个 报文 不包含 数据, 因此 也就 没有 数据的流序号.
742 注意这个 确认流序号 是一个 小整数(1).  当 \fBtcpdump\fP 第一次 发现 一个
743 tcp 会话时, 它 显示 报文 携带的 流序号. 在 随后收到的 报文里, 它 显示 当前
744 报文 和 最初那个 报文 的 流序号 之 差.
745 这 意味着 从第一个报文 开始, 以后的 流序号 可以 理解成 数据流 中的 相对位移
746 (第一个 字节 是 `1').  
747 `-S' 选项 能够 改变 这个 特性, 直接 显示 原始的 流序号.
749 在 第六行, rtsg 传给 csam 19 个字节 的 数据 (字节 2 到 20).
750 报文中 设置了 PUSH 标志. 第七行 csam 表明 它 收到了 rtsg 的 数据, 字节序号
751 是 21, 但不包括 第21个 字节.
752 显然 大多数 数据 在 socket 的 缓冲区内, 因为 csam 的 接收窗口 收到的 数据
753 小于 19 个 字节. 同时 csam 向 rtsg 发送了 一个字节 的 数据.
754 第八和第九行 显示 csam 发送了 两个字节 的 紧急数据 到 rtsg.
756 如果 捕捉区 设置的 过小, 以至于 \fBtcpdump\fP 不能 捕捉到 完整的 TCP 报头, 
757 \fBtcpdump\fP 会 尽可能的 翻译 已捕获的 部分, 然后 显示 ``[|\fItcp\fP]'',
758 表明 无法 翻译 其余 部分. 如果 报头 包含 一个 虚假 选项 (如 长度 过短, 或者
759 超出了 报头 范围), tcpdump 显示 ``[\fIbad opt\fP]'' 并且 不再 翻译 其他 
760 选项部分 (因为 它 不可能 判断出 从 哪里 开始).  如果 报头长度 表明 存在 选项,
761 但是 IP 数据报 长度 不足以 真的 存放 选项, tcpdump 就显示 
762 ``[\fIbad hdr length\fP]''.
765 UDP 报文
767 UDP 格式 就象 这个 rwho 报文 显示的:
770 .sp .5
771 \f(CWactinide.who > broadcast.who: udp 84\fP
772 .sp .5
775 就是说 把一个 udp 数据报 从 主机 \fIactinide\fP 的 \fIwho\fP 端口 发送到
776 \fIbroadcast\fP, Internet 广播地址 的 \fIwho\fP 端口.
777 报文 包含 84字节 的 用户数据.
779 某些 UDP 服务 能够 识别出来(从 源目端口号 上), 因而 显示出 更高层的 协议信息.
780 特别是 域名服务请求(RFC-1034/1035) 和 NFS 的 RPC 调用(RFC-1050).
782 UDP 域名服务请求 (Name Server Requests)
784 \fI(注意: 以下的描述中 假设 你 熟悉 RFC-1035 说明的 域名服务协议. 
785 如果你 不熟悉 这个协议, 下面的内容 就象是 天书.)\fP
787 域名服务请求 的 格式 是
790 .sp .5
791 \fIsrc > dst: id op? flags qtype qclass name (len)\fP
792 .sp .5
793 \f(CWh2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)\fP
794 .sp .5
797 主机 \fIh2opolo\fP 访问 \fIhelios\fP 上的 域名服务, 询问
798 和 \fIucbvax.berkeley.edu.\fP 关联的 地址记录(qtype=A).
799 查询号是 `3'.  `+' 表明 设置了 \fI递归请求\fP 标志.
800 查询长度是 37 字节, 不包括 UDP 和 IP 头.  
801 查询操作 是 普通的 \fIQuery\fP 操作, 因此 op 域 可以 忽略.  
802 如果 op 设置成 其他什么东西, 它应该 显示在 `3' 和 `+' 之间.
803 类似的, qclass 是 普通的 \fIC_IN\fP 类型, 也被 忽略了.  
804 其他类型的 qclass 应该 在 `A' 后面 显示.
806 Tcpdump 会检查 一些 不规则 情况, 相应的 结果 作为 补充域 放在 方括号内: 
807 如果 某个 查询 包含 回答, 名字服务 或 管理机构部分,
808 就把
809 .IR ancount ,
810 .IR nscount ,
812 .I arcount
813 显示成 `[\fIn\fPa]', `[\fIn\fPn]' 或  `[\fIn\fPau]',  这里的 \fIn\fP
814 代表 相应的 数量.
815 如果 在 第二和第三字节 中, 任何一个 回答位(AA, RA 或 rcode) 或 任何一个
816 `必须为零' 的位 被 置位, 就显示 `[b2&3=\fIx\fP]',
817 这里的 \fIx\fP 是 报头 第二和第三字节 的 16进制数.
819 UDP 名字服务回答
821 名字服务回答的 格式 是
824 .sp .5
825 \fIsrc > dst:  id op rcode flags a/n/au type class data (len)\fP
826 .sp .5
827 \f(CWhelios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)
828 helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)\fP
829 .sp .5
832 第一个例子里, \fIhelios\fP 回答了 \fIh2opolo\fP 发出的 标识为3 的 询问,
833 一共是 3 个 回答记录, 3 个 名字服务记录 和 7 个管理结构记录.
834 第一个 回答纪录 的 类型是 A (地址), 数据是 internet 地址 128.32.137.3.  
835 回答的 全长 为 273 字节, 不包括 UDP 和 IP 报头.  作为 A 记录的 class(C_IN)
836 可以 忽略 op (询问) 和 rcode (NoError).
838 在第二个例子里, \fIhelios\fP 对 标识为2 的 询问 作出 域名不存在 (NXDomain)
839 的 回答, 没有 回答记录, 一个 名字服务记录, 而且 没有 管理结构.
840  `*' 表明 设置了 \fI权威回答(authoritative answer)\fP. 
841 由于 没有 回答记录, 这里就 不显示 type, class 和 data.
843 其他 标志 字符 可以 显示为 `\-' (\fI没有\fP设置递归有效(RA)) 和 `|' 
844 (设置 消息截短(TC)). 如果 `问题' 部分 没有 有效的 内容, 就 显示 `[\fIn\fPq]'.
846 注意 名字服务的 询问和回答 一般说来 比较长, 68 字节的 \fIsnaplen\fP 可能
847 无法 捕捉到 足够的 报文内容. 如果 你 的确 在 研究 名字服务 的 情况, 可以
848 使用 \fB\-s\fP 选项 增大 捕捉缓冲区. `\fB\-s 128\fP' 应该 效果 不错了.
851 NFS 请求和响应
853 Sun NFS (网络文件系统) 的 请求和响应 显示格式 是:
856 .sp .5
857 \fIsrc.xid > dst.nfs: len op args\fP
858 \fIsrc.nfs > dst.xid: reply stat len op results\fP
859 .sp .5
860 \f(CW
861 sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165
862 wrl.nfs > sushi.6709: reply ok 40 readlink "../var"
863 sushi.201b > wrl.nfs:
864         144 lookup fh 9,74/4096.6878 "xcolors"
865 wrl.nfs > sushi.201b:
866         reply ok 128 lookup fh 9,74/4134.3150
868 .sp .5
871 在第一行, 主机 \fIsushi\fP 向 \fIwrl\fP 发送 号码为 \fI6709\fP 的 交易会话 
872 (注意 源主机 后面的 数字 是 交易号, \fI不是\fP 端口).  
873 这项请求 长 112 字节, 不包括 UDP 和 IP 报头.  在 文件句柄 (\fUfh\fP) 
874 21,24/10.731657119 上执行 \fIreadlink\fP (读取 符号连接) 操作.
875 (如果 运气 不错, 就象 这种情况, 文件句柄 可以 依次翻译成 主次设备号,
876 i 节点号, 和 世代号(generation number). )
877 \fIWrl\fP 回答 `ok' 和 连接的 内容.
879 在第三行, \fIsushi\fP 请求 \fIwrl\fP 在 目录文件 9,74/4096.6878 中 查找
880 `\fIxcolors\fP'. 注意 数据的 打印格式 取决于 操作类型.  格式 应该是 可以
881 自我说明的.
883 给出 \-v (verbose) 选项 可以 显示 附加信息.
884 例如:
887 .sp .5
888 \f(CW
889 sushi.1372a > wrl.nfs:
890         148 read fh 21,11/12.195 8192 bytes @ 24576
891 wrl.nfs > sushi.1372a:
892         reply ok 1472 read REG 100664 ids 417/0 sz 29388
894 .sp .5
897 (\-v 同时 使它 显示 IP 报头的 TTL, ID, 和 分片域, 在 这个例子里 把它们
898 省略了.)  在第一行, \fIsushi\fP 请求 \fIwrl\fP 从 文件 21,11/12.195
899 的 偏移位置 24576 开始, 读取 8192 字节. \fIWrl\fP 回答 `ok'; 第二行 显示的 
900 报文 是 应答的 第一个 分片, 因此 只有 1472 字节 (其余数据 在 后续的 分片中
901 传过来, 但由于 这些分片里 没有 NFS 甚至 UDP 报头, 因此 根据 所使用的 
902 过滤器表达式, 有可能 不显示). \-v 选项 还会 显示 一些 文件属性 (它们 作为 
903 文件数据 的 附带部分 传回来): 文件类型 (普通文件 ``REG''), 存取模式
904 (八进制数), uid 和 gid, 以及 文件大小.
906 如果再给一个 \-v 选项 (\-vv), 还能 显示 更多的细节.
908 注意 NFS 请求 的 数据量 非常大, 除非 增加 \fIsnaplen\fP, 否则 很多细节 
909 无法显示. 试一试 `\fB\-s 192\fP' 选项.
911 NFS 应答报文 没有明确 标明 RPC 操作.  因此 \fItcpdump\fP 保留有 ``近来的'' 
912 请求 记录, 根据 交易号 匹配 应答报文. 如果 应答报文 没有 相应的 请求报文,
913 它 就 无法分析.
915 KIP Appletalk (UDP 上的 DDP)
917 Appletalk DDP 报文 封装在 UDP 数据报 中, 解包后 按 DDP 报文 转储 
918 (也就是说, 忽略 所有的 UDP 报头 信息). 文件
919 .I /etc/atalk.names
920 用来 把 appletalk 网络和节点号 翻译成 名字. 这个文件 的 行格式 是
923 .sp .5
924 \fInumber       name\fP
926 \f(CW1.254              ether
927 16.1            icsd-net
928 1.254.110       ace\fP
929 .sp .5
932 前两行 给出了 appletalk 的 网络名称. 第三行 给出 某个主机 的 名字
933 (主机和网络 依据 第三组 数字 区分 \- 网络号 \fI一定\fP 是 两组数字,
934 主机号 \fI一定\fP 是 三组 数字.)  号码 和 名字 用 空白符(空格或tab) 隔开.
935 .I /etc/atalk.names
936 文件 可以 包含 空行 或 注释行(以`#'开始的行).
938 Appletalk 地址 按 这个格式 显示
941 .sp .5
942 \fInet.host.port\fP
944 \f(CW144.1.209.2 > icsd-net.112.220
945 office.2 > icsd-net.112.220
946 jssmag.149.235 > icsd-net.2\fP
947 .sp .5
950 (如果 不存在
951 .I /etc/atalk.names ,
952 或者 里面 缺少 有效项目, 就以 数字形式 显示 地址.)
953 第一个例子里, 网络 144.1 的 209 节点的 NBP (DDP 端口 2) 向 网络 icsd 的 
954 112 节点 的 220 端口 发送数据.
955 第二行 和 上面 一样, 只是 知道了 源节点 的 全称 (`office').  
956 第三行 是从 网络 jssmag 的 149 节点 的 235 端口 向 icsd-net 的 NBP 端口
957 广播 (注意 广播地址 (255) 隐含在 无主机号的 网络名字 中 \- 所以 在
958 /etc/atalk.names 中 区分 节点名 和 网络名 是个 好主意).
960 Tcpdump 可以 翻译 NBP (名字联结协议) 和 ATP (Appletalk 交互协议) 的 报文
961 内容. 其他协议 只转储 协议名称 (或号码, 如果 还 没给 这个协议 注册 名称) 
962 和 报文大小.
964 \fBNBP 报文\fP 的 输出格式 就象 下面的 例子:
967 .sp .5
968 \s-2\f(CWicsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*"
969 jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250
970 techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186\fP\s+2
971 .sp .5
974 第一行 是 网络 icsd 的 112 主机 在 网络 jssmag 上的 广播, 对 名字 
975 laserwriter 做 名字查询请求. 名字查询请求 的 nbp 标识号 是 190.
976 第二行 显示的是 对 这个请求 的 回答 (注意 它们 有 同样的 标识号),
977 主机 jssmag.209 表示 在它的 250 端口 注册了 一个 laserwriter 的 资源,
978 名字是 "RM1140". 第三行 是 这个请求 的 其他回答, 主机 techpit 的
979 186 端口 有 laserwriter 注册的 "techpit".
981 \fBATP 报文\fP 格式 如 下例 所示:
984 .sp .5
985 \s-2\f(CWjssmag.209.165 > helios.132: atp-req  12266<0-7> 0xae030001
986 helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000
987 helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000
988 helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000
989 helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
990 helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000
991 helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
992 helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000
993 helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000
994 jssmag.209.165 > helios.132: atp-req  12266<3,5> 0xae030001
995 helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
996 helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
997 jssmag.209.165 > helios.132: atp-rel  12266<0-7> 0xae030001
998 jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002\fP\s+2
999 .sp .5
1002 Jssmag.209 向 主机 helios 发起 12266 号 交易, 请求 8 个 报文(`<0-7>'). 
1003 行尾的 十六进制数 是 请求中 `userdata' 域 的 值.
1005 Helios 用 8 个 512字节 的 报文 应答.  跟在 交易号 后面的 `:digit' 
1006 给出了 交易过程中 报文的 序列号, 括弧内的 数字 是 报文的 数据量,
1007 不包括 atp 报头.  报文 7 的 `*' 表明 设置了 EOM 位.
1009 然后 Jssmag.209 请求 重传 第 3 & 5 报文.  Helios 做了 重传后 jssmag.209 
1010 结束 这次 交易. 最后, jssmag.209 发起 下一次 交易请求.  请求中的 `*' 表明 
1011 \fI没有\fP 设置 XO (只有一次) 位.
1014 IP 分片
1016 分片的 Internet 数据报 显示为
1019 .sp .5
1020 \fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB+)\fR
1021 \fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB)\fR
1022 .sp .5
1025 (第一种 形式 表明 还有 更多的 分片. 第二种 形式 表明 这是 最后 一片.)
1027 \fIId\fP 是 分片 标识号.  \fISize\fP 是 分片 大小 (字节), 不包括 IP 报头.
1028 \fIOffset\fP 是 该分片 在 原数据报 中 的 偏移 (单位是字节).
1030 每一个 分片 的 信息 都可以 打印出来.  第一个 分片 包含了 高层 协议 报头,
1031 显示 协议信息 后 显示 分片 的 信息. 第一个 分片 以后的 分片 不再 含有
1032 高层协议 报头, 所以 在 源目地址 后面 只显示 分片 信息.
1033 例如, 下面是 从 arizona.edu 到 lbl-rtsg.arpa 的 一部分 ftp 传输, 途经的
1034 CSNET 看上去 处理不了 576 字节的 数据报:
1037 .sp .5
1038 \s-2\f(CWarizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328@0+)
1039 arizona > rtsg: (frag 595a:204@328)
1040 rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560\fP\s+2
1041 .sp .5
1044 这里 有几点 需要注意:  首先, 第二行的 地址 不包括 端口号.  这是因为 TCP
1045 协议 信息 全部 装到了 第一个 分片内, 所以 显示 后续分片的 时候 不可能 知道
1046 端口 或 流序号. 其次, 第一行的 tcp 流序号部分 看上去有 308 字节的 用户数据, 
1047 实际上 是 512 字节 (第一个 分片的 308 和 第二个 分片的 204 字节).  如果
1048 你 正在 寻找 流序号中 的 空洞, 或者 试图 匹配 报文 的 确认(ack), 那你上当了.
1050 如果 报文的 IP 标有 \fI不要分片\fP 标志, 显示时 在尾部 加上 \fB(DF)\fP.
1052 时戳
1054 缺省情况下, 所有 输出行 的 前面 都有 时戳. 时戳 就是 当前时间, 显示格式为
1057 \fIhh:mm:ss.frac\fP
1060 精度 和 内核时钟 一样. 时戳 反映了 内核 收到 报文 的 时间. 从 以太接口 
1061 收到 报文 到 内核 响应 '报文就绪' 中断 有一个 滞后, 该 滞后 不被考虑.
1063 .SH "另见 (SEE ALSO)"
1064 traffic(1C), nit(4P), bpf(4), pcap(3)
1066 .SH 作者 (AUTHORS)
1067 Van Jacobson,
1068 Craig Leres and
1069 Steven McCanne, all of the
1070 Lawrence Berkeley National Laboratory, University of California, Berkeley, CA.
1072 当前 版本 可以 从 匿名ftp 获得:
1075 .I ftp://ftp.ee.lbl.gov/tcpdump.tar.Z
1078 .SH BUGS
1079 请把 bugs 报告给 tcpdump@ee.lbl.gov.
1081 NIT 不允许 监视 你自己的 传出数据, BPF 可以. 我们 建议 你 使用 后者.
1083 应该 试着 重组 IP 分片, 至少可以 为 更高层的 协议 计算出 正确的 长度.
1085 名字服务逆向询问 转储的 不正确: 显示出 (空的)问题部分, 而实际上 询问 放在了
1086 回答部分. 有人 认为 这种 逆向询问 本身就是 bug, 应该 修改 产生问题 的 程序, 
1087 而非 tcpdump.
1089 苹果 Ethertalk DDP 的 报文 应该 象 KIP DDP 的 报文 一样 容易 转储, 事实
1090 却 不是 这样. 即使 我们 有意 作点什么 来 促销 Ethertalk (我们没有), 
1091 LBL 也不允许 Ethertalk 出现在 它的 任何网络上, 所以 我们 没办法 测试 
1092 这些代码.
1094 如果 报文的 路径上 出现 夏时制时间 变化, 可能 导致 时戳 混乱.
1095 (这个时间变化将忽略)
1097 操作 FDDI 报头的 过滤器表达式 假设 所有的 FDDI 报文 被封装在 以太报文 中.
1098 这对 IP, ARP 和 DECNET Phase IV 无疑是 正确的, 但对 某些 协议 如 ISO CLNS
1099 不正确. 因此, 过滤器 有可能会 糊里糊涂的 的 接收 一些 并不真正 匹配
1100 过滤器表达式 的 报文.
1102 .SH "[中文版维护人]"
1103 .B 徐明 <xuming@iname.com>
1104 .SH "[中文版最新更新]"
1105 .BR 2001/03/05
1106 第一版
1108 .BR 2001/11/16
1109 第一次修订
1110 .SH "《中国linux论坛man手册页翻译计划》:"
1111 .BI http://cmpp.linuxforum.net