trpt コマンド

目的

TCP ソケットについてのプロトコル・トレースを実行します。

構文

Trpt-a 値 ] [  「-f」 ] [  -j (J) ] [  P-住所 ]... [  -s ] [  ]

説明

trpt コマンドは、伝送制御プロトコル (TCP) トレース・レコードのバッファーを照会します。 このバッファーは、ソケットが setsockopt サブルーチンによりデバッグのためにマーク付けされるときに作成されます。 次に、trpt コマンドは、これらのトレース・レコードの記述を表示します。

注: traceson コマンドを使用して、デーモンのソケット・レベルのデバッグをオンにすることができます。

オプションを指定しなければ、trpt コマンドはシステム内で見付かったトレース・レコードをすべて表示し、 それぞれの TCP/IP 接続プロトコル制御ブロック (PCB) に従ってグループ化します。

trpt コマンドを使用する前に、以下の操作を実行しなければなりません。

  1. 問題を切り分けて、接続に関係するソケット (複数の場合もある) をデバッグするためのマークを付けます。
  2. netstat-aAコマンドを使って、これらのソケットに関連するプロトコル制御ブロックのアドレスを見つける。
  3. その後、 -p フラグを使用して trpt コマンドを実行し、関連するプロトコル制御ブロック・アドレスを指定することができます。 1つのtrptコマンドで複数の- -pフラグを指定できる。

-f フラグを使用すると、一度突き止めたトレース・ログをたどれます。 -j フラグを使用すると、問題のソケットに関してトレース・レコードが存在するかどうかを検査できます。

システム・イメージに正しい記号が入っていないためにトレース・バッファーが見付からなければ、 trpt コマンドは失敗に終わります。

出力フィールド

trpt コマンドが表示する情報は、どのフラグを使用するかによって異なります。 各種の出力に入っているフィールドの定義を以下に示します。

項目 説明
プロトコル制御ブロック ID 以下の例に示すように、トレースの対象となるプロトコル・ブロックを識別します。
4c500c:
タイム・スタンプ 以下の例に示すように、接続が試行される時刻を指定します。
500
接続状態 プロトコル制御ブロックとの接続状態を指定します。
クローズ
接続がクローズされています。
LISTEN
接続を listen しています。
送信 (SYN_SENT)
アクティブ。SYN を送信しました。 接続要求を送信した後で、一致する接続要求を待機中であることを表します。
同期 RCVD
SYN を送信し、受信しました。 接続要求を受信し、送信した後で、接続要求の肯定応答の確認を待機中であることを表します。
ESTABLISHED
接続が確立されています。
CLOSE_WAIT (CLOSE_WAIT)
FIN を受信しました。CLOSE の受信を待機中です。
LAST_ACK
FIN と CLOSE を受信しました。FIN ACK を待機中です。
FIN_WAIT_1
クローズしています。FIN を送信しました。
CLOSING
クローズしました。FIN を交換しました。
FIN_WAIT_2
クローズしています。FIN が受信確認されました。
TIME_WAIT (TIME_WAIT)
クローズ後 2MSL (最大セグメント長の 2 倍) だけ静止します。
Action パケット・トレース接続の現在の状況を指定します。 コマンドの出力はアクションに応じて変化します。
INPUT
入力パケットを受信中です。 出力の構文は次のとおりです。
input (SourceAddress, Port, DestinationAddress,
Port) <Sequence Number of the First Data Octet> @
AcknowledgementNumber

実際には次の例のようになります。

input (src=129.353173176,23, dst=129.35.17.140, 1795) fb9f5461@fb9e4c68
出力
パケットを転送中です。 出力の構文は次のとおりです。
output (SourceAddress, Port, DestinationAddress,
Port) <Sequence Number Of The First Data Octet>..
<Sequence Number of the Last Data Octet>@
AcknowledgementNumber)

実際には次の例のようになります。

output (src=129.35.17.140,1795, dst=129.35.17.176, 23) fb9e4c68@fb9f5462
ウィンドウ・サイズ
以下の例に示すように、パケットを送信または受信するウィンドウのサイズを指定します。
(win=1000)
 
User
ユーザー要求を指定します。 以下はユーザー要求の例を示したものです。
SLOWTIMO<KEEP>

ユーザー要求のタイプと定義は以下のとおりです。

PRU_ATTACH
プロトコルを上に接続します。
PRU-切り離し
プロトコルを上から切り離します。
PRU_BIND
ソケットをアドレスにバインドします。
PRU_LISTEN
接続を listen します。
PRU_CONNECT
ピア接続を確立します。
PRU_ACCEPT
ピア接続を受け入れます。
PRU_DISCONNECT
ピアから切断します。
PRU_SHUTDOWN
それ以上データを送信しません。
PRU_RCVD (PRU_RCVD)
データを取り出しました。余地が増えました。
PRU_SEND (PRU_SEND)
このデータを送信します。
PRU_ABORT (PRU_ABORT)
異常終了します (高速 DISCONNECT、DETACH)。
PRU_CONTROL (PRU_CONTROL)
プロトコルに関する操作を制御します。
PRU_SENSE (PRU_SENSE)
状況 m に戻します。
PRU_RCVOOB (PRU_RCVOOB)
帯域データ以外を検索します。
PRU_SENDOB (PRU_SENDOB)
帯域データ以外を送信します。
「PRU_SOCKADDR」
ソケットのアドレスを取り出します。
「PRU_PEERADDR」
ピアのアドレスを取り出します。
PRU_CONNECT2
2 つのソケットを接続します。
PRU_FASTTIMO (PRU_FASTTIMO)
200 ミリ秒のタイムアウト。
PRU_SLOTIMO (PRU_SLOTIMO)
500 ミリ秒のタイムアウト。
PRU_PROTORCV (PRU_PROTORCV)
下から受信します。
PRU_PROTOSEND (PRU_PROTOSEND)
下から送信します。
ドロップ データは前のセグメント内に入っていることを指定します。データは削除されます。
ウィンドウ変数およびシーケンス変数 ウィンドウ変数とシーケンス変数のタイプは、以下のとおりです。
rcv_nxt (rcv_nxt)
受信セグメント上で予期される次のシーケンス番号。
rcv_WND (rcv_wnd)
受信ウィンドウのサイズ。
snd_una (snd_una)
肯定応答されていない最も古いシーケンス番号。
snd_nxt (snd_nxt)
次に送信すべきシーケンス番号。
snd_max (snd_max)
送信済みの最も大きいシーケンス番号。
snd_sl1
ウィンドウ更新セグメントのシーケンス番号。
snd_wl1
ウィンドウ更新セグメントの肯定応答番号。
snd_wnd (snd_wnd)
送信ウィンドウ。

フラグ

項目 説明
-a 通常の出力の他に、記録済みの各パケットの送信元アドレスと宛先アドレスの値を表示します。
-f トレースの発生時にそれをたどり、ログの終わりに達するたびに追加レコードを待機します。
-j トレース・レコードが存在するプロトコル制御ブロックのアドレスのみをリストします。
-pアドレス Address 変数に 16 進数で指定されたプロトコル制御ブロックに関連するトレース・レコードのみを表示します。 指定されている各 Address 変数に対して -p フラグを繰り返す必要があります。
-s 通常の出力の他に、パケット・シーケンス情報の詳細記述を表示します。
-t 通常の出力の他に、トレース内のポイントごとに、すべてのタイマーの値を表示します。

  1. トレース情報、および記録された各パケットの送信元アドレスと宛先アドレスを表示するには、次のように入力します。
    $ trpt -a
    これにより、以下のような出力が表示されます。
    124b0c:
    900 ESTABLISHED:input (src=192.9.201.3,4257, dst=192.9.201.2,102
    5)2326e6e5@ad938c02(win=200)<ACK,FIN,PUSH> -> CLOSE_WAIT
    900 CLOSE_WAIT:output (src=192.9.201.2,1025, dst=192.9.201.3,425
    7)ad938c02@2326e6e6(win=4000)<ACK> -> CLOSE_WAIT
    900 LAST_ACK:output (src=192.9.201.2,1025, dst=192.9.201.3,4257)
    ad938c02@2326e6e6(win=4000)<ACK,FIN> -> LAST_ACK
    900 CLOSE_WAIT:user DISCONNECT -> LAST_ACK
    900 LAST_ACK:user DETACH -> LAST_ACK 12500c:
    800 ESTABLISHED:output (src=192.9.201.2,1024, dst=192.9.201.3,51
    2)ad8eaa13@2326e6e5(win=4000)<ACK> -> ESTABLISHED
    800 ESTABLISHED:input (src=192.9.201.3,512, \
    dst=192.9.201.2,1024)
    [2326e6e5..2326e727)@ad8eaa13(win=1ef)<ACK,PUSH> -> ESTABLISHED
    800 ESTABLISHED:user RCVD -> ESTABLISHED
    900 ESTABLISHED:output (src=192.9.201.2,1024, dst=192.9.201.3,51
    2)ad8eaa13@2326e727(win=4000)<ACK> -> ESTABLISHED
    900 ESTABLISHED:input (src=192.9.201.3,512, \
    dst=192.9.201.2,1024)
    [2326e727..2326e82f)@ad8eaa13(win=1ef)<ACK,PUSH> -> ESTABLISHED
    900 ESTABLISHED:user RCVD -> ESTABLISHED
    900 ESTABLISHED:output (src=192.9.201.2,1024, dst=192.9.201.3,51
    2)ad8eaa13@2326e82f(win=4000)<ACK> -> ESTABLISHED
    900 ESTABLISHED:input (src=192.9.201.3,512, \
    dst=192.9.201.2,1024)
    2326e82f@ad8eaa13(win=1ef)<ACK,FIN,PUSH> -> CLOSE_WAIT
    900 CLOSE_WAIT:output (src=192.9.201.2,1024, \
    dst=192.9.201.3,512)
    ad8eaa13@2326e830(win=4000)<ACK> -> CLOSE_WAIT
    900 LAST_ACK:output (src=192.9.201.2,1024, dst=192.9.201.3,512)a
    d8eaa13@2326e830(win=4000)<ACK,FIN> -> LAST_ACK
    900 CLOSE_WAIT:user DISCONNECT -> LAST_ACK
    900 LAST_ACK:user DETACH -> LAST_ACK
    $ _
  2. トレース・レコードを持つプロトコル制御ブロックをリストするには、次のように入力します。
    trpt -j
    これにより、以下のような出力が表示されます。
    124b0c, 12500c
  3. 単一のプロトコル制御ブロックに関連したトレース・レコードを印刷するには、次のように入力します。
    trpt -p 12500c
    これにより、以下のような出力が表示されます。
    800 ESTABLISHED:output ad8eaa13@2326e6e5(win=4000)<ACK> -> 
    ESTABLISHED
    800 ESTABLISHED:input [2326e6e5..2326e727)@ad8eaa13(win=1ef) 
    <ACK,PUSH> -> ESTABLISHED
    800 ESTABLISHED:user RCVD -> ESTABLISHED
    900 ESTABLISHED:output ad8eaa13@2326e727(win=4000)<ACK> -> ESTABLISHED
    900 ESTABLISHED:input [2326e727..2326e82f)@ad8eaa13(win=1ef) <ACK,PUSH> -> ESTABLISHED
    900 ESTABLISHED:user RCVD -> ESTABLISHED
    900 ESTABLISHED:output ad8eaa13@2326e82f(win=4000)<ACK> -> ESTABLISHED
    900 ESTABLISHED:input 2326e82f@ad8eaa13(win=1ef)<ACK,FIN,PUSH> -> CLOSE_WAIT
    900 CLOSE_WAIT:output ad8eaa13@2326e830(win=4000)<ACK> -> CLOSE_WAIT
    900 LAST_ACK:output ad8eaa13@2326e830(win=4000)<ACK,FIN> -> LAST_ACK
    900 CLOSE_WAIT:user DISCONNECT -> LAST_ACK
    900 LAST_ACK:user DETACH -> LAST_ACK
    $ _