170 likes | 416 Views
輪講: 詳解 TCP/IP. ACE B3 suzuk. 第 7 章 Ping プログラム. Table of Contents. 7.1 イントロダクション 7.2 Ping プログラム 7.3 IP レコード・ルート・オプション 7.4 IP タイムスタンプ・オプション 7.5 まとめ. 7.1 イントロダクション. Ping 、それは診断プログラム 到達可能ホストかどうかをテストする ICMP エコー要求メッセージを送る ICMP エコー応答を待つ ネットワーク構造・障害を調べる時のスタートポイント
E N D
輪講: 詳解TCP/IP ACE B3 suzuk
Table of Contents 7.1 イントロダクション 7.2 Pingプログラム 7.3 IPレコード・ルート・オプション 7.4 IPタイムスタンプ・オプション 7.5 まとめ
7.1 イントロダクション • Ping、それは診断プログラム • 到達可能ホストかどうかをテストする • ICMPエコー要求メッセージを送る • ICMPエコー応答を待つ • ネットワーク構造・障害を調べる時のスタートポイント • 往復時間を計測し、ホスト間の”距離”を示す • Packet InterNet Groperの略
7.2 Pingプログラム • クライアント • エコー要求を送るping プログラム • サーバ • pingの対象となるサーバ • カーネルで実装されているTCP/IPがサポート (ユーザプロセスではない) • 識別子とシーケンス番号をオプションデータエコーする • 識別子フィールドを送り手プロセスのUIDにセット • シーケンス番号は0からスタートし、1ずつ増加する
7.2 Pingプログラム • 最近のOSでは? • 新しい実装では –s オプションを渡さないと1つのエコー要求しか投げない • ping hogehoge.com • ping –s hogehoge.com Pinging www.yahoo.co.jp [210.81.150.5] with 32 bytes of data: Reply from 210.81.150.5: bytes=32 time=4ms TTL=242 Reply from 210.81.150.5: bytes=32 time=3ms TTL=242 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 host is alive or no answer
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 slipPING slip (140.252.13.65): 56 data bytes64 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 lossround-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 • フラグ3がよい どのルータがタイムスタンプを記録するか選択できる
7.4 IPタイムスタンプ・オプション • タイムスタンプのスペースがなくなった場合 • ルーターはオーバーフロー・フィールドを増加させる • ルーターでUTC時間をサポートしていない場合 • タイムスタンプのハイ・オーダー・ビットをOn
7.5 まとめ • Pingは基本的な接続テスト • TCP/IPが稼動する2つのシステム間で使う • Pingサーバは通常、カーネルのICMP実装の一部