A.4 tcpdump的输出
t c p d u m p的输出是“原始的”。在本书中包含它的输出时,我们对它进行了修改以便阅读。首先,它总是输出它正在监听的网络接口的名字。我们把这一行给删去了。
其次,t c p d u m p输出的时间戳在一个微秒精度的系统中采用如同 0 9 : 11 : 2 2 . 6 4 2 0 0 8的格式,在一个1 0 m s时钟精度的系统中则如同 0 9 : 11 : 2 2 . 6 4一样(在附录 B中,我们更多地讨论了计算机时钟的精度)。在任何一种情况下, H H : M M : S S的格式都不是我们想要的。我们感兴趣的是每个分组与开始监听的相对时间以及与下面分组的时间差。我们修改了输出以显示这两个时间差。第1个差值在微秒精度的系统中打印到十进制小数点后面 6位(对于只有10 ms精度的系统打印到小数点后面2位),第2个差值打印到十进制小数点后面 4位或2位(依赖于时钟精度)。
本书中大多数t c p d u m p的输出都是在s u n主机上收集的,它提供了微秒精度。一些输出来自于运行0 . 9 . 4版B S D / 3 8 6操作系统的主机b s d i,它只提供了10 ms的精度(如图5 -1所示)。一些输出收集于当b s d i主机运行1 . 0版B S D / 3 8 6时,后者提供了微秒级的精度。
t c p d u m p总是打印发送主机的名字,接着一个大于号,然后是目的主机的名字。这样显示很难追踪两个主机之间的分组流。尽管t c p d u m p输出仍然显示了数据流的方向,但我们经常把这条输出删掉,代替以产生一条时间线(在本书中的第一次出现是在图 6 - 11)。在我们的时间线上,一个主机在左边,另一个在右边。这样很容易看出哪一边发送分组,哪一边接收分组。
我们给t c p d u m p的每条输出增加了行号,使得我们可以在书中引用特定的行。还在某些行之间增加了额外的空白,以区别一些不同的分组交换。
最后,t c p d u m p的输出可能会超出一页的宽度。我们在太长行的适当地方进行了换行。作为一个例子,相应于图 4 - 4的t c p d u m p的原始输出显示在图 A - 3中。这里假设了一个 8 0列的终端窗口。
没有显示我们键入的中断键(用于中止 t c p d u m p),也没有显示接收到的和漏掉的分组的个数(漏掉的分组是那些到达得太快, t c p d u m p来不及处理的分组。因为本文中的例子经常运行在另外一个空闲网络上,所以漏掉的分组个数总是 0)。