輪講: 詳解TCP/IP ACE B3 suzuk 第7章 Pingプログラム Table of Contents 7.1 7.2 7.3 7.4 7.5 イントロダクション Pingプログラム IPレコード・ルート・オプション IPタイムスタンプ・オプション まとめ 7.1 イントロダクション Ping、それは診断プログラム 到達可能ホストかどうかをテストする 1. ICMPエコー要求メッセージを送る 2. ICMPエコー応答を待つ ネットワーク構造・障害を調べる時のスタートポイ ント 往復時間を計測し、ホスト間の”距離”を示す Packet InterNet Groperの略 7.2 Pingプログラム クライアント エコー要求を送るping プログラム サーバ pingの対象となるサーバ カーネルで実装されているTCP/IPがサポート (ユーザプロセスではない) 識別子とシーケンス番号をオプションデータエコーする 識別子フィールドを送り手プロセスのUIDにセット シーケンス番号は0からスタートし、1ずつ増加する 7.2 Pingプログラム 最近のOSでは? 新しい実装では –s オプションを渡さないと1つのエ コー要求しか投げない ping hogehoge.com Pinging–s www.yahoo.co.jp [210.81.150.5] with 32 bytes of data: ping hogehoge.com host alive Replyisfrom 210.81.150.5: bytes=32 time=4ms TTL=242 Reply or from 210.81.150.5: bytes=32 time=3ms TTL=242 no answer Reply from 210.81.150.5: bytes=32 time=5ms TTL=242 Reply from 210.81.150.5: bytes=32 time=5ms TTL=242 Ping statistics for 210.81.150.5: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 3ms, Maximum = 5ms, Average = 4ms 7.2 Pingプログラム LANでpingすると? pingは往復時間を計測できる ICMPメッセージのデータ部分にエコー要求が送られた 時間を格納する OSのタイマーの精度によって往復時間算出の制 度も異なる 宛先のMACアドレスが送り手のARPキャッシュに 存在しない場合 ARP要求と応答のために数ミリ秒を要する • 最初のエコー要求が数ミリ秒長いことの原因 7.2 Pingプログラム WANでpingすると? 出力結果にシーケンス番号がない 順番の入れ違いが発生する(送った順に返ってこない) パケットの重複が発生(同じシーケンス番号が返る) 往復時間が大きく分散する パケットの消失が起こることもある ホストは生きているのに・・・ 7.2 Pingプログラム ハードワイヤードSLIPリンク 9600bit/sec 以下の低速な非同期速度 何がわかるのか? ICMPエコー要求はそれ自身の応答が返ってくる前に、 次の要求を送っている • 応答時間は1.4秒 • ICMPエコー要求間隔は1秒 7.2 Pingプログラム ダイヤルアップSLIPリンク 双方のエンドにモデムが存在する モデムはping計測に大きく影響する • モデムのエラー制御とデータ圧縮が最たる原因 • ある程度の遅延の発生 • コンピュータ自身の受信データバッファ、割り込み間隔 7.3 IPレコード・ルート・オプション IPRR(IPレコード・ルート)オプション パケットが通過したルータのIPが分かる データグラムを処理する全てのルータが自分のIPアドレ スを追加するようになる pingの -R オプションで有効になる 9つのアドレスまでカバーできる 往復で追加される 行きでも帰りでも追加 7.3 IPレコード・ルート・オプション RRオプションのIPデータグラムの構造 コード IPオプションのタイプ指定(RRは7の値) データ長 RRオプションのバイト数 ポインタ 次のIPアドレスが格納されるべき場所を示す 7.3 IPレコード・ルート・オプション 実験 svr4 % ping -R slip PING slip (140.252.13.65): 56 data bytes 64 bytes from 140.252.13.65: icmp_seq=0 ttl=254 time=280 ms RR: bsdi (140.252.13.66) slip (140.252.13.65) bsdi (140.252.13.35) svr4 (140.252.13.34) 64 bytes from 140.252.13.65: icmp_seq=1 ttl=254 time=280 ms (same route) 64 bytes from 140.252.13.65: icmp_seq=2 ttl=254 time=270 ms (same route) ^? --- slip ping statistics --3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 270/276/280 ms 7.3 IPレコード・ルート・オプション 実験 tcpdump で見てみよう 1 0.0 svr4 > slip: icmp: echo request (ttl 32, id 35835, optlen=40 RR{39}=RR(#0.0.0.0/0.0.0.0/0.0.0.0/ 0.0.0.0/0.0.0.0/0.0.0.0/0.0.0.0/0.0.0.0/0.0.0.0} EOL) 2 0.267746 (0.2677) slip > svr4: icmp: echo reply (ttl 254, id 1976, optlen=40 RR{39}= RR(140.252.13.66/140.252.13.65/ 140.252.13.35/#0.0.0.0/0.0.0.0/0.0.0.0/0.0.0.0/ 0.0.0.0/0.0.0.0} EOL) 7.4 IPタイムスタンプ・オプション 0x44 フラグ 説明 0 1 タイムスタンプのみを記録 カクルーターはIP アドレスとタイムスタンプを記録 3 送り手はオプション・ リストを最大4つのIP アドレスのペアと0タイ プスタンプで初期化。ルーターはリストにある次のIP アドレスが ルータ自身のものと適合したときのみタイムスタンプを記録 フラグ3がよい どのルータがタイムスタンプを記録するか選択できる 7.4 IPタイムスタンプ・オプション タイムスタンプのスペースがなくなった場合 ルーターはオーバーフロー・フィールドを増加させ る ルーターでUTC時間をサポートしていない場合 タイムスタンプのハイ・オーダー・ビットをOn 7.5 まとめ Pingは基本的な接続テスト TCP/IPが稼動する2つのシステム間で使う Pingサーバは通常、カーネルのICMP実装の一部
© Copyright 2024 ExpyDoc