輪講: 詳解TCP/IP - 慶應義塾大学 徳田研究室

輪講:
詳解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実装の一部