輪講: 詳解TCP/IP
Download
Report
Transcript 輪講: 詳解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実装の一部