tcpdump(8)

Please send me a comment.

名称

       tcpdump - ネットワーク上のトラフィックデータをダンプします

書式

       tcpdump [ -deflnNOpqStvx ] [ -c count ] [ -F file ]
               [ -i interface ] [ -r file ] [ -s snaplen ]
               [ -w file ] expression

解説

       tcpdumpは、オプションで指定されたネットワークインタフェ ー
       ス上で取得可能なパケットのヘッダを出力します。 SunOS: tcp-
       dump は、スーパユーザの権限で実行 す る か、root  権 限 の
       setuid ビットを立てて実行して下さい。 Ultrix: スーパユーザ
       が、 pfconfig(8) を用いることでpromiscuous-modeオ ペ レ ー
       ショ ンを許可した場合、どのユーザもtcpdumpの起動を行なえま
       す。 BSD: /dev/bpf0 その他の属性を用いることで、アクセスを
       制御します。

オプション

       -c     countで指定した数のパケットを受信した後に、プログラ
              ム終了します。

       -d     解釈されたパケットマッチングコードを標準出力にダ ン
              プして、停止します。

       -e     各 ダ ン プ行ごとに、リンクレベルのヘッダを出力しま
              す。

       -f     外部ホストのIPアドレスについては、シンボルでなく 数
              値で表示します。 (本オプションは、Sun の ypサーバに
              重大な障害が発生するのを回避することを意図 し て ま
              す。--  通常は、Sun の ypサーバは、ローカルに存在し
              ない IPアドレスを永久に変換しつづけてハ ン グ し ま
              す。)

       -F     フィ ルタの表現として、fileに記述してある内容を用い
              ます。コマンドラインで指定された追加表現は、無視 さ
              れます。

       -i     interfaceで指定されたインタフェースをLISTENします。
              指定されない場合には、tcpdumpはシステムインタフェー
              ス リストの中で最も小さい番号のものを検索し、監視す
              るインタフェースとして設定します(この場合、ル ー プ
              バッ クインタフェースは検索されるインタフェースには
              入りません)。この動作は、最初にインタフェースが選択
              された時点で終了します。

       -l     標 準 出 力行をバッファリングします。データをキャプ
              チャリング(捕捉)しつつ、そのデータを見たい 場 合 に
              は、本オプションは有効です。例えば
              ``tcpdump  -l  |  tee  dat''  や  ``tcpdump  -l   >
              dat  &  tail  -f  dat'' のように使用します。

       -n     アドレス(IPアドレスやポート番号など)のシンボルへ の
              変換をしません。

       -N     ホ ス ト 名のうち、ドメイン名の表示をしません。例え
              ば、本オプションを指定して``nic.ddn.mil''との間の情
              報 をやりとりする場合には、``nic.ddn.mil'' とは表示
              されず、かわりに``nic''とだけ表示します。

       -O     パケットマッチングコードのオプティマイザを走行さ せ
              ま せん。本オプションは、オプティマイザ中のバグを疑
              う場合にのみ有効なものです。

       -p     ネットワークインタフェースを、promiscuous-modeに 設
              定 しません。注意しなければならない点は、ネットワー
              クインタ フェ ー ス は、 何 ら か の 理 由 に よ り
              promiscuous-modeに 設定されることもあり得るというこ
              とです。ゆえに、`-p'  オ プ ショ ン は、ether  host
              {localhost}もしくは broadcastのために、短縮して使う
              ことが出来ません。

       -q     高速に(省略した)出力を行ないます。出力する行を短 く
              す る た めに、通常出力されるプロトコルインフォメー
              ションの一部は出力されません。

       -r     パケットを、fileで指定したファイル(-wオプションで作
              成 されます)から読み込みます。fileとして``-''が指定
              された場合は標準入力からのデータが用いられます。

       -s     各パケットから、snaplenだけのデータを取得します。無
              指 定時の取得データ長は、68バイトです。68バイトとい
              うデータ長は、IP,ICMP,TCP,UDPのパケットを取得する分
              には十分ですが、ネームサーバやNFSのパケットについて
              はプロトコル情報を切り詰めなければなりません(これに
              つ い て は、 以後の説明を参照して下さい)。スナップ
              ショットが限られた量しかとれずに切り詰めら れ た パ
              ケッ トは、出力に``[|proto]''という文字列がいっしょ
              に表示されます。protoの部分には、切り詰められたプロ
              ト コルレベルの名前が入ります。注意しなければならな
              いのは、大きなスナップショットを使う場合には、そ れ
              だ けパケット処理の時間がかかるということと、パケッ
              トバッファリング用のバッファの量が減るということ で
              す。 このことは、パケットの消失が発生しうることを意
              味します。snaplenの大きさを、必要なパケットの情報を
              取 得するための必要最小限の大きさにとどめるようにし
              てください。

       -S     TCPシーケンス番号を相対番号ではなく、絶対番号で出力
              します。

       -t     各ダンプ行のタイムスタンプを出力しません。

       -tt    ア ンフォーマット状態のタイムスタンプを各行ごとに出
              力します。

       -v     (すこしではありますが)出力情報を増やしま す。 例 え
              ば、IPパ ケット中の TTLや、サービス型の情報を出力し
              ます。

       -w     受信した生パケットを、fileで指定したファイルに出 力
              し ま す。 本 オ プ ショ ンを用いて取得したパケット
              は、-rオプションを用いることで情報を見ることがで き
              ま す。file  で 指定するファイル名が ``-'' の場合に
              は、標準出力を用います。

       -x     リンクレベルヘッダを除いた各パケットの内容を16進 出
              力します。パケットサイズが snaplen バイトより小さい
              場合にはパケットの全部の内容を、それ以外の 場 合 に
              は、 snaplen バイト分のデータをパケットごとに出力し
              ます。

        expression
              ダンプするパケットを選択します。expressionが指定 さ
              れ ない場合には、ネットワーク上のすべてのパケットが
              ダンプ対象 に な り ま す。 そ れ 以 外 の 場 合 に
              は、expressionの 条件が真になるパケットのみダンプし
              ます。

              expressionは、1つ以上の プリミティブから成り立ち ま
              す。 プ リミティブは通常、1つ以上のクオリファイアに
              よって宣言される id (名前もしくは番号)から成り立 ち
              ます。クオリファイアには、3つの種類があります。

              type   クオリファイアは、id名や番号が参照するものの
                     種類を指します。type には hostnet そし て
                     port  が あ ります。例えば、`host foo', `net
                     128.3', `port 20'のように用います。 typeクオ
                     リファイアが指定されない場合には、 host が指
                     定されたものとみなされます。

              dir    クオリファイアは、パケットが id へ出ていく方
                     向か、 id から来る方向か、もしくはその両方か
                     という、特定の転送方向を指定します。指定可能
                     な 方 向は、 src dst src or dst そして
                     src and dst の4つです。例え ば、`src  foo'、
                     `dst   net   128.3'、   `src   or  dst  port
                     ftp-data'のように指定します。もしdirク オ リ
                     ファ イアが指定されない場合には、 src or dst
                     が指定されたものとみなします。

              proto  クオリファイアは、特定のプロトコルに一致する
                     パケットのみに制限します。 protoに指定可能な
                     ものは、 ether ip arp rarp tcpそし
                     て  udp  で す。例えば`ether src foo'、 `arp
                     net 128.3'、 `tcp port 21'のように使用されま
                     す。 もしprotoクオリファイアが指定されない場
                     合には、上記のプロトコルのうち、適用可能なも
                     の す べてが指定されたものとみなします。例え
                     ば`src foo'は、 `(ip or  arp  or  rarp)  src
                     foo'と、  `net  bar'は  `(ip or arp or rarp)
                     net bar' と同義であり、また`port 53' は
                      `(tcp or udp) port 53'と同義です。

              上記に追加して、特別なプリミティブキーワードがあ り
              ます。そのキーワードは gateway broadcast less
              greaterそして、算術演算表現です。これらのす べ て
              は、以下のように記述されます。

              よ り 複 雑なフィルタの表現は、プリミティブの結合に
              and orそして not を用いることで実現されます。例
              え ば、`host foo and not port ftp and not port ftp-
              data' は、「foo が送受信するパケットのうち、ftp  ポ
              ー トおよび 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での指定は、ホ
                     スト名もしくはIPアドレスのどちらかで指定しま
                     す。

              src host host
                     IPパケットの送信元フィールドがhostで指定した
                     ものの場合に真となります。

              host host
                     IPパケットの送信元フィールドもしくは宛先フィ
                     ールドがhostで指定したものの場合に真となりま
                     す。上記のhostプリミティブの表 現 に は、ip,
                     arp, or 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は、/etc/hosts ファイルや /etc/ethers の
                     中で定義されている名前を指定する必要がありま
                     す(等価な表現は、
                          ether host ehost and not host host
                     で す。 この表現を用いることで、host / ehost
                     の両方の表記を用いることが可能になります)。

              dst net net
                     パケットの宛先IPアドレスが、netで指定され た
                     ネットワークに属するものである場合に真となり
                     ます。netは、アドレス値もしくはネットワー ク
                     名のいずれかを指定可能です。

              src net net
                     パ ケットの送信元IPアドレスが、netで指定され
                     たネットワークに属するものである場合に真とな
                     ります。

              net net
                     送 信 元IPア ド レ ス もしくは宛先IPアドレス
                     がnetで指定されたネットワークに属するもの で
                     ある場合に真となります。

              dst port port
                     パ  ケッ  ト がip/tcp(TCPパ ケッ ト)も し く
                     はip/udp(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
                     と指定した場合には、tcpパケットのみが条件 一
                     致の評価対象となります。

              less length
                     パケットがlengthで指定した長さ以下の場合、真
                     となります。これは、
                          len <= length
                     の指定と等価です。

              greater length
                     パケットがlengthで指定した長さ以上の場合、真
                     となります。これは、
                          len >= length
                     と等価です。

              ip proto protocol
                     パ ケッ トが protocol で指定したプロトコル型
                     のIPパケット( 詳細は ip(4P) を参照して 下 さ
                     い)の場合に真となります。 protocolは、数字も
                     しくはicmp, udp, nd, or tcp のいずれかの名前
                     が 指 定 可能です。注意することは、tcp, udp,
                     icmp の各識別子はもキーワードの1つで あ り、
                     バックスラッシュ(\)(C-shellでは\\)を用いてエ
                     スケープしなければならない点です。

              ether broadcast
                     パケットがイーサネットブロードキャストパケッ
                     トの場合に真となります。ether キーワードは、
                     オプショナルなものです。

              ip broadcast
                     パケットがIPブロードキャストパケットの場合に
                     真 となります。このチェックでは、オール1とオ
                     ール0の新旧のブロードキャストアドレスの両 者
                     を、 そ してローカルサブネットマスクを含めて
                     チェックします。

              ether multicast
                     パケットがイーサネットマルチキャストパケット
                     の場合に真となります。ether キーワードは、オ
                     プショナルなもの で す。 な お、 こ の 指 定
                     は、`ether[0] & 1 != 0'の短縮系です。
              ip multicast
                     パケットがIPマルチキャストパケットの場合に真
                     となります。

              ether proto protocol
                     パケットがprotocolで指定した ether 型を持 つ
                     場 合に真になります。 protocolは、数字もしく
                     はip, arp, rarpのような名前を指定可能で す。
                     注意しなければならないのは、これらの識別子は
                     キーワードでもあり、バックスラッシュ (\)でエ
                     スケープされなければならない点です。

              ip, arp, rarp
                          ether proto p
                     の 短縮形です。pの部分には、上記のいずれかの
                     プロトコル名が入ります。

              tcp, udp, icmp
                          ip proto p
                     の短縮形です。pの部分には、上記のいずれか の
                     プロトコル名が入ります。

              expr relop expr
                     >,  <, >=, <=, =, != のいずれかがrelopに当て
                     はまり、exprの部分に定数や通常のビット 演 算
                     子[+, -, *, /, &, |]、データ長の演算子、そし
                     て特殊なパケットデータの演算子などからなる算
                     術表現が入って、その関係が真の場合に真となり
                     ます(表現の解釈は、標準のC言語の文法に準じま
                     す)。 パケット内部のデータにアクセスするため
                     には、以下の表現を用います。
                          proto [ expr : size ]
                     protoは、ether, ip, arp, rarp, tcp, udp, ,そ
                     し て icmpのいずれかであり、またインデクス操
                     作にてプロトコル層であることを示せるものが入
                     ります。プロトコル層からの相対バイトオフセッ
                     トは、exprで指定可能です。 sizeはオプショ ナ
                     ルであり、取得するフィールドのデータ長を表し
                     ます。このデータ長としては、1,2,4のいずれ か
                     を 指 定することが可能であり、デフォルトでは
                     1が指定されたものとみなされます。キ ー ワ ー
                     ドlenで 示されるデータ長の演算では、パケット
                     長が与えられます。

                     例えば、`ether[0] & 1 != 0'は、全てのマル チ
                     キャ ストパケットを捕捉します。 `ip[0] & 0xf
                     != 5'という表現は、すべての オ プ ショ ン 付
                     きIPパ ケッ ト を 捕 捉 す る ことを意味しま
                     す。`ip[2:2] & 0x1fff = 0'という表現は、フラ
                     グメントのないデータグラムパケットもしくはフ
                     ラグメントデータグラムのうち、フラグ0のも の
                     を選んで捕捉します。本チェックは、tcp および
                     udpのインデクス操作においては、暗黙のうち に
                     適 用されます。例えば、tcp[0]は常にTCPヘッダ
                     の先頭バイトを指し、決してフラグメントの間の
                     パ ケッ トの先頭バイトを指すものではありませ
                     ん。

              プリミティブは、組み合わせて使用することが 可 能 で
              す。

                     挿 入されるプリミティブや演算子のグループ(挿
                     入は、シェルから見ると特殊な操作であり、その
                     部分はエスケープされる必要があります)

                     否定 (`!' or `not').

                     論理積 (`and').

                     論理和 (`or').

              否 定は、最も高い演算優先度を持ちます。論理話と論理
              積は、同じ演算優先度を持ち、左から右へ評価 さ れ ま
              す。 注意しなけれvばならないのは、予約語andを明示す
              ることが、論理積の演算の場合には要求されていると い
              うことです。

              キ ーワードなしで識別子が与えられている場合には、最
              も最近用いられたキーワードが付加されているものと 仮
              定されます。例えば、
                   not host vs and ace
              は、
                   not host vs and host ace
              の短縮形ですが、
                   not ( host vs or ace )
              と混同してしまいがちなので気をつけましょう。

              変 数を表現する引数は、単一の引数もしくは複数の引数
              として、tcpdumpはチェックを通しますl。この機能 は、
              非 常に便利なものです。一般的に、引数がシェルのメタ
              キャラクタを含む場合、その引数をクオートされた単 一
              の 引数としてプログラムに引き渡すことが容易だからで
              す。複数の引数は、分解される前にスペースで連結さ れ
              ます。

使用例

       yabuuchiに到達するパケットと、yabuuchiから送信されるパケッ
       トのすべてを表示する場合には、以下のように実行します。
              tcpdump host yabuuchi

       yuko と、hiroshiyukotakachanの間のトラフィックを 表
       示する場合には、以下のように実行します。
              tcpdump host yuko and \( hiroshi or takachan \)

       takachanと、yuko以外のホストとの間でやりとりされたIPパケッ
       トを表示する場合には、以下のように実行します。
              tcpdump ip host takachan and not yuko
       ネットワークaquaageの中に存在するすべてのホスト間 の ト ラ
       フィックを表示する場合には、以下のように実行します。
              tcpdump net aquaage

       ゲートウェイikawaを通過するすべての ftp トラフィックを表示
       します。 (シェルが括弧を誤って解釈しないよう、イクスプレッ
       ションがクオートされていることに注意して下さい)
              tcpdump 'gateway snup and (port ftp or ftp-data)'

       送信元アドレスと宛先アドレスの両方がローカルネットワーク内
       のホストのものでないトラフィックについて表示します。 (他の
       ネットワークに対するゲートウェイであり、なおかつそのゲート
       ウェイが中継するパケットが、ローカルネットワーク内のホスト
       に到達しない場合です)
              tcpdump ip and not net localnet

       ロ ーカルネットワーク外のホストとの通信において、TCPによる
       各通信単位のスタートパケットとエンドパケットを表示す る に
       は、以下のように実行します。
              tcpdump 'tcp[13] & 3 != 0 and not src and dst net localnet'

       ゲートウェイikawaを中継されるIPパケットのうち、576バイト以
       上のものを表示します。
              tcpdump 'gateway snup and ip[2:2] > 576'

       イーサネット上でブロードキャストもしくはマルチキャストを経
       由 し て送られるもの以外のIPブロードキャストもしくはマルチ
       キャストパケットを表示するには以下のように実行します。
              tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

       echo リクエスト/リプライ以外の(ping パケット以外 の)全 て
       のICMPパケットを表示します。
              tcpdump 'icmp[0] != 8 and icmp[0] != 0"

出力形式

       tcpdumpの 出力は、プロトコル依存です。以下の説明では、簡単
       なパラメータの記述と、おおよそのフォーマットの説明を行ない
       ます。

       リンクレベルヘッダ

       もし'-e'オプションが指定されると、リンクレベルヘッダが出力
       されます。イーサネットにおいては、送信元と宛先のアドレス、
       プロトコル、そしてパケット長が出力されます。

       (N.B.: 以下の記述は、利用者がRFC1144に記述されているSLIP圧
       縮アルゴリズムについての知識がある前提で書いてます。)

       SLIPによるリンクにおいては、ディレクションイ ン ディ ケ ー
       タ``I''が入力方向、``O'' が出力方向)、パケット型、そして圧
       縮情報が出力されます。パケット型は、最初に出力されます。パ
       ケッ ト型にはiputcp、そして ctcpの3つがあります。 ip型パ
       ケットの場合、多くの情報は表示されません。 TCPパケットの場
       合 に は、コネクション識別子がパケット型に続いて出力されま
       す。パケットが圧縮されている場合、符号化されたヘッダが出力
       されます。特殊な場合は*S+n*SA+nのように出力されます。n
       の箇所には、シーケンス番号(もしくはシーケン ス 番 号 お よ
       びack)が 変 更された回数が入ります。特殊な場合でない場合に
       は、0回以上の変更について出力され ま す。 変 更 は、U  (緊
       急(urgent)ポインタ)、W(ウィンドウ)、A(ack)、S(シーケンス番
       号)、そしてI(パケットID)を示し、変動量(+n or -n)もしくは新
       しい値が付加されます。最後に、パケット内のデータの総量はお
       よび圧縮ヘッダ長が出力されます。

       例えば、以下の行は、出力方向の圧縮TCPパケットを、暗黙の コ
       ネクション識別子とともに表示しています。ackは6変わり、シー
       ケンス番号は49変わり、パケット IDは6変わって ま す。 そ し
       て、3バイトのデータと6バイトの圧縮ヘッダが本パケットの構成
       要素として存在します。
              O ctcp * A+6 S+49 I+6 3 (6)

       ARP/RARP パケット

       arp/rarp パケットの出力からは、要求型とそのアーギュメン ト
       を見ることが出来ます。出力形式は、その出力のみで理解可能な
       ように作られています。以下に、ホストkarenからホストedoへの
       `rlogin'開始時のパケットのサンプルを示します。
              arp who-has edo tell karen
              arp reply edo is-at EDO
       1行目は、ホストkaren が、ホストedoのイーサネットアドレスを
       問い合わせる目的でarpパケットを送信していることを意味し ま
       す。 ホストedoは、自分自身のイーサネットアドレスを返答して
       います(この例では、イーサネットアドレスは大文字で、イン タ
       ネットアドレス部は小文字で表記してます)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として起動した場合には、最初のパケットはブロード
       キャストパケットであり、次のパケットはポイントツーポイント
       のパケットであることがわかります。
              KAREN Broadcast 0806  64: arp who-has edo tell karen
              EDO KAREN 0806  64: arp reply edo is-at EDO
           ケットについては、送信元のイーサネットアドレス
       KARENであり、宛先はブロードキャストアドレス、型フィー 
       ドには16進数の値0806(ETHER_ARP を意味します)が格納されてお
       り、総パケット長は64バイトであると表示してます。

       TCPパケット

       (N.B.:以下の記述は、RFC793に記述されているTCPプロトコル に
       ついての知識があることを前提に記述されてます。この知識がな
       い場合、本記述とtcpdumpのいずれもあなたには役に立たない で
       しょう。)

       TCPプロトコル行の一般的な形式は、以下の通りです。
              src > dst: flags data-seqno ack window urgent options
       srcdstは、それぞれ送信元と宛先のIPアドレスとポート番号
       です。flagsの部分には、S (SYN),F (FIN), P (PUSH) ,R  (RST)
       の 組 合 せ、 も しくは単なる `.' (フラグなし)が入ります。
       data-seqnoは、パケット内のデータに含まれるシーケンス番号の
       部分が入ります(以下の例を参照して下さい)。 ackは、本コネク
       ションの逆方向の次に来るデータパケットに期待されるシーケン
       ス 番 号 が入ります。 windowは、本コネクションの逆方向のパ
       ケットを格納するバッファサイズが入ります。 urgは、パケット
       中 に`urgent'(緊 急)データが格納されていることを示します。
       optionsは、例えば<mss 1024>のように、アングルブラケット(大
       小記号)でくくられたtcpオプションが入ります。

       srcdst、 そしてflagsは、常に表示されます。他のフィールド
       は、パケットのTCPヘッダに依存し、表示できる場合だけ表示 さ
       れます。

       以 下の例は、ホストkarenからホストedoへのrlogin のセッショ
       ン開設時のシーケンスの一部です。
              karen.1023 > edo.login: S 768512:768512(0) win 4096 <mss 1024>
              edo.login > karen.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024>
              karen.1023 > edo.login: . ack 1 win 4096
              karen.1023 > edo.login: P 1:2(1) ack 1 win 4096
              edo.login > karen.1023: . ack 2 win 4096
              karen.1023 > edo.login: P 2:21(19) ack 1 win 4096
              edo.login > karen.1023: P 1:2(1) ack 21 win 4077
              edo.login > karen.1023: P 2:3(1) ack 21 win 4077 urg 1
              edo.login > karen.1023: P 3:4(1) ack 21 win 4077 urg 1
       最初の行 は、 ホ ス トkarenTCPポ ー ト1023番 か ら ホ ス
       トedologin  ポートに対してパケットを送信していることを意
       味します。Sは、パケットのSYNフラグが有効になっていることを
       意味します。パケットのシーケンス番号は768512番であり、デー
       タは含みません。 (これは、`first:last(nbytes)'の表記から判
       断できます。この表記は、シーケンス番号firstからlastまで(た
       だしlastは含みません)、そしてnbytesのユーザデータを含む と
       い うことです。このパケット中のACKは有効でなく、取得可能な
       受信ウィンドウサイズは4096バイトであり、1024バイトの最大セ
       グメントサイズ要求を行なうオプションが付加されています。

       edoは、karenから送られたパケットと類似したパケットを送り返
       しますが、 karenの送ったパケット中のSYNに対応したackが含ま
       れるところが異なります。karenは、それからkarenはedoのSYNに
       対応したACKパケットを返します。 `.'は、S (SYN),F (FIN),  P
       (PUSH)  ,R (RST)のいずれのフラグも立っていないことを意味し
       ます。パケットはデータを含まないため、データシーケンス番号
       は 入りません。注意しなければならないのは、ackシーケンス番
       号は、小さい整数(1)であることです。tcpdumpは、最初 はTCPの
       通信を監視し、パケットから取得したシーケンス番号を表示しま
       す。通信のサブシーケントパケットについては、現在のパケット
       シーケンス番号とサブシーケントパケットの最初のシーケンス番
       号の間の差を表示します。このことは、最初に取得した以降のシ
       ーケンス番号は、通信データストリームの相対位置として解釈さ
       れます(最初の各方向のデータバイトは1です)。`-S'は、本機 能
       を無効にし、オリジナルのシーケンス番号を表示します。
       6行 目 で は、karenはedoに19バ イ ト の データを送信してま
       す(karen -> edoの方向の通信における、2バイト目から20バイト
       目 までのデータ)。PUSHフラグが本パケットでは有効になってま
       す。 7行目では、edoは、karenから21バイトまでのデータを受け
       とっ た旨のレスポンスをkarenに返してます。これらのデータの
       ほとんどは、edoの受信ウィンドウを19バイト小さく し て、 ソ
       ケットバッファの中に存在します。 edoは、karenに1バイトのデ
       ータを送信してます。 8行めと9行めでは、edoは2バイ ト の 緊
       急(urgent)デ ータ送信を行なってます。ここでは、両方ともPフ
       ラグが有効になってます。


       UDP パケット

       UDP フォーマットは、以下のrwhoパケットで例示します。
              stacklay.who > broadcast.who: udp 84
       これは、ホストstacklaywhoポートがUDPデータグラムを ホ ス
       トbroadcast(イ ン タ ー ネッ トブロードキャストアドレス)の
       whoポートに対して送信していることを意味します。本パケッ ト
       は、 84バイトのユーザデータを含みます。

       UDPサ ービスのうち、送信元もしくは宛先のポート番号からサー
       ビス種類の判断が可能なものがあります。この場合、さらに上位
       レベルのプロトコル情報が出力されます。ドメインネームサービ
       ス要求(RFC1034/1035)、そして、Sun RPC呼びだし(RFC1050)を用
       いたNFSサービスなどがこの条件に該当します。

       UDP ネームサーバーリクエスト

       (N.B.:以 下の記述は、RFC1035に記述されているドメインサービ
       スプロトコルの知識があることを前提に書かれてます。もしこれ
       らの知識がない場合には、以下の記述は未知の言語で書かれてい
       るかのように見えるでしょう)

       ネームサーバリクエストは、以下のような表示になります。
              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) を問い 合 わ せ て ま す。  Query-ID`3'で あ
       り、`+'recursion desiredフラグが設定されていることを意味
       します。Query の長さは37バイトであり、この中 にUDPお よ び
       IPの プロトコルヘッダの長さは含みません。Query操作は普通の
       操作(uery) であり、opフィールドは無視されます。opが他の い
       ずれかであった場合、そのop`3'`+'の間に表示されます。こ
       れと同様に、qclassは普通のもの(C_IN)であり、無視されます。
       他のqclassが入った場合、`A'の後ろに表示されます。

       少数の変則的なパケットはチェックの結果、カギカッコで囲まれ
       たエクストラフィールドにその結果が表示されます。Queryが 返
       答を含む場合、ネームサーバもしくはオーソリティセクション、
       ancount, nscount, もしくは arcount が、`[na]'、 `[nn]'  、
       も しくは `[nau]'のような形式で表示されます。nは、もっとも
       適当なカウント数です。レスポンスビットのいずれかが設定され
       ている(AA, RA もしくは rcode)場合、もしくは0でなければなら
       ないビットが2バイト目と3バイト目に設定されてい る 場 合 に
       は、`[b2&3=x]'が 出 力されます。xは、ヘッダの2バイト目およ
       び3バイト目の値を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)
       最初の例は、h2opoloからのquery-ID 3 のリ ク エ ス ト に 対
       し、helios3つのアンサーレコード、3つのネームサーバレコ
       ード、そして7つのオーソリティレコードを持っているパケッ ト
       で返答しているというものです。最初のアンサーレコードは、タ
       イ プA(ア ド レ ス)で あ り、 そ の デ ー タ はIPア ド  レ
       ス128.32.137.3で す。 総サイズは、273バイトです。UDPIPの
       ヘッダは表示には含まれません。クラス(C_IN)は、Aレコード で
       あ るため、op (Query)およびレスポンスコード(NoError)は、無
       視されます。

       2つめの例は、heliosがquery-ID 2 のリクエストに対し、存在し
       な い ド メ イ ン(NXDomain)の ため返答がないというのととも
       に、、1つのネームサーバレコード、そして0個のオーソリティレ
       コ ードを含んだレスポンスを返しています。`*'は、authorita-
       tive answerビットが設定されていることを示します。返答が な
       いため、クラスもしくはデータが出力されます。

       他 の フラグキャラクタが現れた場合は、`-'(recursion avail-
       able,RA, not set)および`|' (truncated message, TC,  set)が
       表示されます。 `question'セクションが1つのエントリも含んで
       いない場合には、`[nq]' が出力されます。

       ネームサーバリクエストおよびレスポンスは、大きくなる傾向に
       あり、デフォルトの snaplenの値である96バイトの長さでは、パ
       ケットを捕捉してその内容を表示するには少なくなりつつありま
       す。もしネームサーバトラフィックの調査を行なおうとするなら
       ば、-sオプションを用いて、snaplenを増やして下さい。自分 の
       経験上、`-s 128'で十分使い物になります。


       NFS リクエスト

       Sun NFS (Network File System) リクエストおよびリプライは、
       以下のように表示されます。
              src.xid > dst.nfs: len op args
              src.nfs > dst.xid: reply stat len
              vs.e2766 > helios.nfs: 136 readdir fh 6.5197 8192 bytes @ 0
              helios.nfs > vs.e2766: reply ok 384
              vs.e2767 > helios.nfs: 136 lookup fh 6.5197 `RCS'
       最初の行では、ホストvsIDe2766のトランザクションを送信 し
       ます。 heliosに送信してます(送信元ホスト(アドレス)に続く数
       字はトランザクション IDであり、ポート番号でないことに注 意
       して下さい)。リクエストサイズは136バイトです。ただし、この
       サイズには、UDPヘッダおよびIPヘッダのサイズは含みませ ん。
       要 求 さ れ て い るオペレーションは、ファイルハンドル(fh)
       6.5197を用いた readdir(ディレクトリ読み込み)であり、8192バ
       イトが読まれてます。オフセット値は0です。 helios`ok'とと
       もに、384バイトのデータを送信してます。 (Sun RPC プロト コ
       ルのデザインでは、リプライを解釈するのが難しいので、考えな
       いことにしてます)

       3行めでは、vsheliosに対し、ファイルハンドル6.5197の ディ
       レ クトリ中のファイル`RCS'の検索を要求してます。出力された
       データは、オペレーションタイプに依存することに注意して下さ
       い。 本形式は、NFSのプロトコルスペックとともに読めば、それ
       自身を見れば分かるように意図して作成されています。

       NFSリクエストは非常に大きなデータになるため、snaplenを大き
       く しないと上記のような出力は得られません。NFSトラフィック
       を監視するには、経験的に`-s 192'以上のsnaplenを指定して 下
       さい。


       KIP Appletalk (DDP in UDP)

       UDPデータグラムでカプセル化されたAppletalk DDPパケットは、
       カプセル化を解かれ、DDPパケットとしてダンプされま す(全 て
       のUDPヘッダ情報は破棄されます)。ファイル /etc/atalk.names

       が、Appletalkネッ トワークおよびノード番号をシンボル変換す
       るのに用いられます。本ファイルの内容は、以下のように記述さ
       れます。
              number    name

              1.254          ether
              16.1      icsd-net
              1.254.110 ace
       最 初の2行は、Appletalkネットワーク名を付与してます。3行め
       の内容は、特定のホストの名前を付与してます(ホストは、3オク
       テッド目の有無でネットワークと区別されます。ネットワーク番
       号は、2オクテッドの数字から、ホスト番号は3オクテッドの数字
       か ら構成される必要があります)。数字と名前は、空白文字もし
       くはタブ文字で区切られます。 /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 がないか、ホスト番号及びネットワー
       ク 番 号のエントリが /etc/atalk.names 中に存在しない場合に
       は、アドレスは数字で表示されます。) 最初の例は、ネットワー
       ク番号 144.1 のネットワーク中の209番のノードのNBP(DDP port