ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1M: システム管理コマンド Oracle Solaris 11.1 Information Library (日本語) |
- ネットワークパケットの取得および検査
snoop [-aqrCDINPSvV] [-t [r | a | d]] [-c maxcount] [-d device] [-I IP_interface] [-i filename] [-n filename] [-o filename] [-p first [, last]] [-s snaplen] [-x offset [, length]] [expression]
snoop は、データリンクまたは IP インタフェースからパケットを取得し、その内容を表示します。データリンクまたは IP インタフェースが指定されていない場合、snoop は、使用するデータリンクを選択することで、IP トラフィックのために plumb されたデータリンクに優先順位を割り当てます。snoop は、ネットワークからパケットを効率的に取得するために、pfmod(7M) と bufmod(7M) の STREAMS モジュールを使用します。取得したパケットは、受信した順に表示することも、あとで検査するためのファイル (RFC 1761 準拠) に保存することもできます。
snoop は、パケットを単一行のサマリー形式または詳細な複数行形式で表示できます。サマリー形式では、特定の VLAN パケットを除いて、もっとも高いレベルのプロトコルに関連したデータのみが表示されます。パケットに VLAN ヘッダーがあり、その VLAN ID がゼロ以外の場合、snoop では、そのパケットは VLAN タグ付きとして表示されます。たとえば、NFS パケットでは NFS 情報だけが表示されます。直前に説明した条件下の VLAN 情報を除いて、基になる RPC、UDP、IP、および Ethernet のフレーム情報は抑制されますが、いずれかの詳細オプションを選択した場合は表示できます。
LDAP や NIS などのネームサービスがない場合、snoop はホスト名を数値の IP アドレスとして表示します。
snoop には、対話型のインタフェースが必要です。
注 - snoop コマンドは「廃止」です。代わりに Wireshark か、またはその非 GUI バージョンである Tshark を使用することをお勧めします。これらのプログラムは、次のパッケージで使用できます。
pkg://solaris/diagnostic/wireshark
pkg://solaris/diagnostic/wireshark/tshark
これらのパッケージは、Solaris パッケージリポジトリで入手できます。
カーネルのパケットフィルタまたは snoop 独自のフィルタのいずれかに対するフィルタ式から生成されたコードを一覧表示します。
サマリー行の取得中にドロップしたパケットの数を表示します。
取得ファイルから IP アドレスと名前の対照ファイルを作成します。これは、取得ファイルに名前を付ける -i filename オプションとともに設定する必要があります。アドレスと名前の対照ファイル名は、取得ファイル名に .names を付加したものと同じです。このファイルは、取得するサイトで IP アドレスからホスト名へのマッピングを記録し、取得ファイルの可搬性を高めます。取得ファイルを別の場所で分析する場合は、.names ファイルを生成します。このフラグを使用すると、パケットは表示されません。
IP_interface で指定された IP インタフェース (たとえば、lo0) を使用して、ネットワークから IP パケットを取得します。ipadm(1M) コマンドを使用すると、使用可能な IP インタフェースを一覧表示できます。-I オプションと -d オプションを同時に指定することはできません。
プロミスキュアスでないモードでパケットを取得します。ブロードキャスト、マルチキャスト、またはホストマシン宛に送られたパケットだけが表示されます。
サマリー行のリンクレイヤーフレーム全体のサイズをバイト単位で表示します。
詳細サマリーモードです。詳細度は、サマリーモードと詳細モードの中間です。パケット内のもっとも高いレベルのプロトコルのサマリー行だけを表示するのではなく、パケット内のプロトコルレイヤーごとにサマリー行を表示します。たとえば、NFS パケットでは、ETHER、IP、UDP、RPC、および NFS レイヤーごとに 1 行ずつ表示します。詳細サマリーモードの出力は、grep でパイプすることで、目的のパケットを簡単に抽出できます。たとえば、RPC のサマリー行だけを表示するには、次のように入力します。example# snoop -i rpc.cap -V | grep RPC
パケットを /dev/audio で音声で聴きます (警告: うるさくなる可能性があります)。
maxcount パケットを取得したあとで終了します。そうしない場合、残りのディスク容量がなくなるまで、または Control + C で中断するまで取得し続けます。
datalink で指定された DLPI データリンク (たとえば、bge0 または net0) を使用して、ネットワークからリンクレイヤーパケットを取得します。dladm(1M)show-link サブコマンドを使用すると、使用可能なデータリンクを一覧表示できます。-d オプションと -I オプションを同時に指定することはできません。
前に filename で取得したパケットを表示します。このオプションを指定しない場合、snoop は最初のネットワークインタフェースからパケットを読み取ります。filename.names ファイルが存在する場合、そのファイルは自動的に snoop IP アドレスと名前のマッピングテーブル (-N フラグを参照) にロードされます。
filename を IP アドレスと名前のマッピングテーブルとして使用します。このファイルは、/etc/hosts ファイル (IP アドレスの次にホスト名) と同じ形式である必要があります。
取得したパケットを、取得したとおりに filename に保存します。(この filename を「取得ファイル」と呼びます。)取得ファイルの形式は RFC 1761 に準拠しています。パケットの取得中、ファイルに保存されたパケット数のカウントが表示されます。ファイルに保存せずにパケットのカウントだけを行う場合は、ファイル名を /dev/null とします。
表示するパケットを取得ファイルから 1 つ以上選択します。ファイルの first パケットはパケット番号 1 です。
ネットワークパケットをファイルに取得するときに、パケットカウントを表示しません。これにより、パケット取得のパフォーマンスが向上する場合があります。
IP アドレスを記号名に解決しません。これにより、snoop がパケットを取得および表示している間に、ネットワークトラフィックが生じなくなります。ただし、-n オプションを使用していて、アドレスがマッピングファイルに存在する場合は、それに対応する名前が使用されます。
各パケットの snaplen バイトより後ろを切り捨てます。通常は、パケット全体が取得されます。このオプションは、特定のパケットヘッダー情報だけが必要な場合に便利です。パケットの切リ捨てはカーネル内で行われるため、ストリームパケットバッファーを効率的に利用できます。これにより、トラフィックが多い期間中のバッファーオーバーフローによってパケットがドロップされる可能性が減少します。また、大量のトレースを取得ファイルに取得するときにディスク容量を節約できます。IP ヘッダーのみ (オプションなし) を取得するには、34 の snaplen を使用します。UDP では 42 を、TCP では 54 を使用します。RPC ヘッダーは 80 バイトの snaplen で取得できます。NFS ヘッダーは 120 バイトで取得できます。
タイムスタンプの表示。タイムスタンプの精度は 4 マイクロ秒以内です。デフォルトでは、d (デルタ) 形式 (前のパケットを受信してからの時間) で時間が表示されます。オプション a (絶対的) では、時計時間になります。オプション r (相対的) では、最初にパケットを表示してからの相対的な時間になります。これを -p オプションとともに使用すると、選択した任意のパケットに対する相対的な時間を表示できます。
冗長モード。パケットヘッダーを数多くの詳細情報とともに出力します。この表示方式では 1 つのパケットについて多数の行を消費するため、選択したパケットに対してのみ使用してください。
パケットデータを 16 進数および ASCII 形式で表示します。offset 値および length 値によって、パケットの表示部分を選択します。パケット全体を表示するには、offset として 0 を使用します。length 値を指定しない場合、パケットの残りの部分が表示されます。
パケットをネットワークまたは取得ファイルから選択します。式が真となるパケットのみ選択されます。式が指定されない場合は、真とみなされます。
フィルタ式を指定した場合、snoop は、カーネルパケットフィルタ用または独自の内部フィルタ用のコードを生成します。ネットワークインタフェースでパケットを取得する場合、カーネルパケットフィルタ用のコードが生成されます。このフィルタは、バッファーモジュールのアップストリームであるストリームモジュールとして実装されます。バッファーモジュールは、いっぱいになるまでパケットを蓄積して snoop に渡します。カーネルパケットフィルタは、カーネル内の不要なパケットをパケットバッファーまたは snoop に到達する前に拒否するため、非常に効率的です。カーネルパケットフィルタにはその実装にいくつかの制限があり、フィルタが処理できないフィルタ式を作成することも可能です。この場合、snoop はフィルタの分割を試み、カーネルで可能な限りのフィルタ処理を行います。残りのフィルタ処理は、snoop 用のパケットフィルタによって行われます。-C フラグを使用すると、カーネルのパケットフィルタ用または snoop のパケットフィルタ用に生成されたコードを表示できます。パケットが -i filename オプションを使用して取得ファイルから読み取られた場合は、snoop 用のパケットフィルタのみが使用されます。
フィルタの expression は、1 つまたは複数のブール型プリミティブで構成されます。これらのプリミティブは、ブール型演算子 (AND、OR、および NOT) と組み合わせることができます。ブール型演算子の通常の優先順位規則が適用されます。これらの演算子の評価の順序は、括弧で制御できます。括弧およびその他のフィルタ式の文字はシェルによって認識されるため、多くの場合フィルタ式を引用符で囲む必要があります。より効率的なフィルタの設定については、例 2 を参照してください。
次にプリミティブを示します。
発信元アドレスまたは着信先アドレスが hostname のアドレスであれば真。hostname 引数は、アドレス表記でもかまいません。名前がほかの式のプリミティブの名前と競合しない場合は、キーワード host を省略できます。たとえば、「pinky」では、ホスト pinky との間で送受信されるパケットが選択され、「pinky and dinky」では、ホスト pinky とホスト dinky との間で交換されるパケットが選択されます。
使用されるアドレスのタイプは、host プリミティブに先行するプリミティブに依存します。使用可能な修飾子は、inet、inet6、ether、または修飾子なしです。以降では、これら 3 つのプリミティブについて説明します。プリミティブが 1 つもない場合は、「inet host hostname or inet6 host hostname」と同等です。言い換えると、snoop はホスト名と関連付けられた IP アドレスをすべてフィルタ処理しようとします。
後続の host プリミティブを変更する修飾子。inet の場合、snoop は名前の検索によって返された IPv4 アドレスをすべてフィルタ処理しようとします。inet6 の場合、snoop は名前の検索によって返された IPv6 アドレスをすべてフィルタ処理しようとします。
アドレス表記、ドット区切り IP、ドット区切り AppleTalk、およびコロン区切り Ethernet が認識されます。たとえば、
「172.16.40.13」は、この IP を持つすべてのパケットと一致します。
「2::9255:a00:20ff:fe73:6e35」は、発信元または着信先としてこの IPv6 アドレスを持つすべてのパケットと一致します。
「65281.13」は、この AppleTalk アドレスを持つすべてのパケットと一致します。
「8:0:20:f:b1:51」は、発信元または着信先としてこの Ethernet アドレスを持つすべてのパケットと一致します。
文字で始まる Ethernet アドレスは、ホスト名として解釈されます。これを回避するため、アドレスを指定する場合は最初にゼロを付けます。たとえば、Ethernet アドレスが「aa:0:45:23:52:44」の場合は、最初に 0 を追加して「0aa:0:45:23:52:44」と指定します。
後続の host、net、ipaddr、atalkaddr、etheraddr、port、または rpc プリミティブを変更して、発信元アドレス、ポート、または RPC 応答とのみ一致する修飾子。
後続の host、net、ipaddr、atalkaddr、etheraddr、port、または rpc プリミティブを変更して、着信先アドレス、ポート、または RPC 呼び出しとのみ一致する修飾子。
後続の host プリミティブを変更して、名前を Ethernet アドレスに解決する修飾子。通常、IP アドレスのマッチングが行われます。このオプションは、IPoIB (IP over InfiniBand) などのメディアではサポートされていません。
Ethernet タイプフィールドの値が number であれば真。number が 0x8100 (VLAN) ではなく、パケットが VLAN タグ付きの場合、式はカプセル化した Ethernet タイプと一致します。
パケットが適切な ethertype であれば真。
パケットに ethertype VLAN があり、VLAN ID がゼロでなければ真。
ID が id の ethertype VLAN のパケットであれば真。
パケットの ethertype が pppoed または pppoes であれば真。
パケットがブロードキャストパケットであれば真。Ethernet の ether[2:4] = 0xffffffff と同等です。このオプションは、IPoIB (IP over InfiniBand) などのメディアではサポートされていません。
パケットがマルチキャストパケットであれば真。Ethernet の「ether[0] & 1 = 1」と同等です。このオプションは、IPoIB (IP over InfiniBand) などのメディアではサポートされていません。
パケットが、BOOTPS (67) の発信元ポートおよび BOOTPC (68) の着信先ポート、または BOOTPC (68) の発信元ポートおよび BOOTPS (67) の着信先ポートのいずれかで断片化されていない IPv4 UDP パケットであれば真。
パケットが、DHCPV6-SERVER (547) の発信元ポートおよび DHCPV6-CLIENT (546) の着信先ポート、または DHCPV6-CLIENT (546) の発信元ポートおよび DHCPV6-SERVER (547) の着信先ポートのいずれかで断片化されていない IPv6 UDP パケットであれば真。
パケットが Apple Ethertalk パケットであれば真。「ethertype 0x809b or ethertype 0x80f3」と同等です。
パケットが DECNET パケットであれば真。
パケットが length より長ければ真。
パケットが length より短ければ真。
IP または IPv6 プロトコルが適切なタイプであれば真。
発信元または着信先の IP アドレスのネットワーク番号が net であれば真。from または to 修飾子を使用して、発信元アドレスまたは着信先アドレスでのみネットワーク番号が使われているパケットを選択できます。
発信元ポートまたは着信先ポートが port であれば真。port には、ポート番号または /etc/services から得た名前を使用できます。tcp または udp プリミティブを使用して、TCP または UDP ポートだけを選択できます。from または to 修飾子を使用して、発信元または着信先としてのみ port が使われているパケットを選択できます。
パケットが prog で識別されるプロトコルの RPC 呼び出しパケットまたは応答パケットであれば真。prog には、/etc/rpc から得た RPC プロトコルの名前またはプログラム番号を使用できます。vers および proc を使用して、プログラムの version および procedure 番号をさらに修飾できます。たとえば、rpc nfs,2,0 では、NFS NULL 手続きの呼び出しと応答がすべて選択されます。to または from 修飾子を使用して、呼び出しパケットだけまたは応答パケットだけを選択できます。
zoneid が、ipnet デバイス上で受信されたパケットの発信元または着信先 zoneid のどちらかに一致すれば、真です。
パケットがポート 389 の LDAP パケットであれば真。
パケットで host がゲートウェイとして使用された場合、つまり Ethernet の発信元または着信先アドレスが IP アドレスではなく host であった場合は真。「ether host host and not host host」と同等です。
パケットが断片化されていないか、一連の IP フラグメントの最初のものであれば真。ip[6:2] & 0x1fff = 0 と同等です。
relop が >、<、>=、<=、=、!= のいずれかで、expr が数字、パケットフィールドセレクタ、length プリミティブ、および算術演算子 +、-、*、&、|、^、% で構成される算術式である関係が成立すれば真。expr 内の算術演算子は関係演算子より前に評価され、通常の優先順位規則が算術演算子間で適用されます (加算する前に乗算する、など)。括弧を使用して評価の順序を制御できます。パケット内のフィールドの値を使用するには、次の構文を使用します。
base[expr [: size ] ]
ここで expr は、base オフセットからパケットへのオフセットの値を評価します。base オフセットには、ether、ip、ip6、udp、tcp、または icmp を使用できます。size 値は、フィールドのサイズを指定します。指定されなかった場合は、1 が使用されます。その他の有効な値は 2 と 4 です。たとえば、
ether[0] & 1 = 1
は、multicast と同等です。
ether[2:4] = 0xffffffff
は、broadcast と同等です。
ip[ip[0] & 0xf * 4 : 2] = 2049
は、udp[0:2] = 2049 と同等です。
ip[0] & 0xf > 5
は、オプション付きの IP パケットを選択します。
ip[6:2] & 0x1fff = 0
は、IP フラグメントを排除します。
udp and ip[6:2]&0x1fff = 0 and udp[6:2] != 0
は、UDP チェックサムのあるすべてのパケットを検索します。
length プリミティブを使用して、パケットの長さを取得できます。たとえば、「length > 60」は「greater 60」と同等であり、「ether[length - 1]」では、パケット内の最後のバイトの値を取得します。
2 つのブール型値の間で論理 AND 演算を実行します。2 つのブール型式を並べた場合は AND 演算の意味になります。たとえば、「dinky pinky」は「dinky AND pinky」と同じです。
2 つのブール型値の間で論理 OR 演算を実行します。代わりにコンマを使用することもできます。たとえば、「dinky,pinky」は「dinky OR pinky」と同じです。
後続のブール型値に対して論理 NOT 演算を実行します。この演算子は、AND または OR より前に評価されます。
パケットが SLP パケットであれば真。
パケットが SCTP パケットであれば真。
パケットが OSPF パケットであれば真。
例 1 snoop コマンドの使用
すべてのパケットを取得し、受信した順に表示します。
example# snoop
ホスト funky が発信元または着信先であるパケットを取得し、受信した順に表示します。
example# snoop funky
funky と pinky の間のパケットを取得し、ファイルに保存します。その後、最初に取得したパケットからの相対的な時間 (秒単位) を使ってパケットを検査します。
example# snoop -o cap funky pinky example# snoop -i cap -t r | more
別の取得ファイル内の選択したパケットを表示するには:
example# snoop -i pkts -p 99,108 99 0.0027 boutique -> sunroof NFS C GETATTR FH=8E6 100 0.0046 sunroof -> boutique NFS R GETATTR OK 101 0.0080 boutique -> sunroof NFS C RENAME FH=8E6C MTra00192 to .nfs08 102 0.0102 marmot -> viper NFS C LOOKUP FH=561E screen.r.13.i386 103 0.0072 viper -> marmot NFS R LOOKUP No such file or directory 104 0.0085 bugbomb -> sunroof RLOGIN C PORT=1023 h 105 0.0005 kandinsky -> sparky RSTAT C Get Statistics 106 0.0004 beeblebrox -> sunroof NFS C GETATTR FH=0307 107 0.0021 sparky -> kandinsky RSTAT R 108 0.0073 office -> jeremiah NFS C READ FH=2584 at 40960 for 8192
パケット 101 をさらに詳細に表示するには:
example# snoop -i pkts -v -p101 ETHER: ----- Ether Header ----- ETHER: ETHER: Packet 101 arrived at 16:09:53.59 ETHER: Packet size = 210 bytes ETHER: Destination = 8:0:20:1:3d:94, Sun ETHER: Source = 8:0:69:1:5f:e, Silicon Graphics ETHER: Ethertype = 0800 (IP) ETHER: IP: ----- IP Header ----- IP: IP: Version = 4, header length = 20 bytes IP: Type of service = 00 IP: ..0. .... = routine IP: ...0 .... = normal delay IP: .... 0... = normal throughput IP: .... .0.. = normal reliability IP: Total length = 196 bytes IP: Identification 19846 IP: Flags = 0X IP: .0.. .... = may fragment IP: ..0. .... = more fragments IP: Fragment offset = 0 bytes IP: Time to live = 255 seconds/hops IP: Protocol = 17 (UDP) IP: Header checksum = 18DC IP: Source address = 172.16.40.222, boutique IP: Destination address = 172.16.40.200, sunroof IP: UDP: ----- UDP Header ----- UDP: UDP: Source port = 1023 UDP: Destination port = 2049 (Sun RPC) UDP: Length = 176 UDP: Checksum = 0 UDP: RPC: ----- SUN RPC Header ----- RPC: RPC: Transaction id = 665905 RPC: Type = 0 (Call) RPC: RPC version = 2 RPC: Program = 100003 (NFS), version = 2, procedure = 1 RPC: Credentials: Flavor = 1 (Unix), len = 32 bytes RPC: Time = 06-Mar-90 07:26:58 RPC: Hostname = boutique RPC: Uid = 0, Gid = 1 RPC: Groups = 1 RPC: Verifier : Flavor = 0 (None), len = 0 bytes RPC: NFS: ----- SUN NFS ----- NFS: NFS: Proc = 11 (Rename) NFS: File handle = 000016430000000100080000305A1C47 NFS: 597A0000000800002046314AFC450000 NFS: File name = MTra00192 NFS: File handle = 000016430000000100080000305A1C47 NFS: 597A0000000800002046314AFC450000 NFS: File name = .nfs08 NFS:
sunroof と boutique の間の NFS パケットだけを表示するには、次のように入力します。
example# snoop -i pkts rpc nfs and sunroof and boutique 1 0.0000 boutique -> sunroof NFS C GETATTR FH=8E6C 2 0.0046 sunroof -> boutique NFS R GETATTR OK 3 0.0080 boutique -> sunroof NFS C RENAME FH=8E6C MTra00192 to .nfs08
これらのパケットを新規取得ファイルに保存するには:
example# snoop -i pkts -o pkts.nfs rpc nfs sunroof boutique
カプセル化されたパケットを表示するために、カプセル化を示す指示子があります。
example# snoop ip-in-ip sunroof -> boutique ICMP Echo request (1 encap)
-V をカプセル化されたパケットに使用する場合は、次のようになります。
example# snoop -V ip-in-ip sunroof -> boutique ETHER Type=0800 (IP), size = 118 bytes sunroof -> boutique IP D=172.16.40.222 S=172.16.40.200 LEN=104, ID=27497 sunroof -> boutique IP D=10.1.1.2 S=10.1.1.1 LEN=84, ID=27497 sunroof -> boutique ICMP Echo request
例 2 より効率的なフィルタの設定
より効率的なフィルタを設定するには、次のフィルタを式の末尾の方で使用して、式の最初の部分をカーネルで設定できるようにしてください。greater、less、port、rpc、nofrag、および relop です。カーネルで設定できないこれらのプリミティブを使用すると、OR の存在によってフィルタ処理の分割が難しくなります。代わりに、括弧を使って、OR を適用すべきプリミティブを強制します。
port 80 でタイプが tcp または udp の funky と pinky の間のパケットを取得するには、次のように入力します。
example# snoop funky and pinky and port 80 and tcp or udp
プリミティブ port はカーネルフィルタによって処理することができず、式には OR も存在するため、より効率的にフィルタ処理を行う方法は、OR を式の末尾に移動し、括弧を使って tcp と udp の間に OR を適用することです。
example# snoop funky and pinky and (tcp or udp) and port 80
正常終了。
エラーが発生した。
システムのプライマリなオーディオデバイスへのシンボリックリンク。
NULL ファイル。
ホスト名データベース。
RPC プログラム番号データベース。
インターネットサービスとエイリアス。
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
dladm(1M), ipadm(1M), netstat(1M), hosts(4), rpc(4), services(4), attributes(5), audio(7I), ipnet(7D), bufmod(7M), dlpi(7P), pfmod(7M)
Callaghan, B. および Gilligan, R. 共著、『RFC 1761, Snoop Version 2 Packet Capture File Format』、Network Working Group 発行、1995 年 2 月。
リアルタイムにパケットを解釈するための処理オーバーヘッドは非常に大きくなります。その結果、ドロップされるパケットの数も多くなる可能性があります。取得の信頼性を高めるためには、-o オプションを使用して raw パケットをファイルに出力し、オフラインでパケットを分析してください。
フィルタ処理しないでパケットを取得すると、特に取得したパケットをリアルタイムで解釈する場合は、ホストコンピュータに大きな処理負荷がかかります。この処理負荷は、詳細オプションを使用するとさらに増加します。snoop を頻繁に使用するとほかの処理に対してコンピューティングリソースが提供されない可能性があるため、本稼働サーバーでは使用しないでください。snoop を頻繁に使用するのは、専用のコンピュータに限定してください。
snoop は IP フラグメントを再構成しません。上のレベルのプロトコルの解釈は、最初の IP フラグメントの末尾で停止します。
snoop を使用する際の派生的な効果として、追加のパケットが生成される場合があります。たとえば、ネットワークネームサービス (NIS) を使用して、IP アドレスをホスト名に変換して表示する場合があります。あとで表示するためにファイルに取得すると、取得のセッションが完了するまでアドレスと名前のマッピングを延期できます。また、NFS でマウントされたファイルへの取得によっても追加のパケットが生成される場合があります。
snaplen (-s オプション) を小さい値に設定すると、上のレベルのプロトコルの解釈に必要なヘッダー情報が削除される場合があります。切り取られる正確な値は、使用するネットワークとプロトコルによって異なります。10 Mbps の Ethernet で UDP を使用する NFS バージョン 2 トラフィックの場合は、snaplen を 150 バイト未満に設定しないでください。100 Mbps の Ethernet で TCP を使用する NFS バージョン 3 トラフィックの場合は、snaplen を 250 バイト以上にしてください。
snoop は、RPC 応答を完全に解釈するために、RPC 要求からの情報を必要とします。取得ファイルまたはパケット範囲の RPC 応答に、先行する要求がない場合は、RPC 応答のヘッダーだけが表示されます。