PING
Section: Maintenance Commands (8)
索引
jman
BSD mandoc
索引
名称
ping
- ICMP ECHO_REQUEST
パケットをネットワーク上のホストへ送る
索引
書式
[-AaDdfnoQqRrv
]
[-c count
]
[-i wait
]
[-l preload
]
[-M mask | time
]
[-m ttl
]
[-P policy
]
[-p pattern
]
[-S src_addr
]
[-s packetsize
]
[-t timeout
]
[-z tos
]
host
[-AaDdfLnoQqRrv
]
[-c count
]
[-I iface
]
[-i wait
]
[-l preload
]
[-M mask | time
]
[-m ttl
]
[-P policy
]
[-p pattern
]
[-S src_addr
]
[-s packetsize
]
[-T ttl
]
[-t timeout
]
[-z tos
]
mcast-group
索引
解説
ユーティリティは、
ICMP
の
ECHO_REQUEST
データグラムを用いて、指定したホストやゲートウェイ
からの
ICMP ECHO_RESPONSE
を引き出します。
ECHO_REQUEST
データグラム
(``ping''
)
には IP および
ICMP
ヘッダ、
``struct timeval''
、パケットの残りを埋める適当な数の
``pad''
バイトが順にあります。
オプションは以下の通りです:
- -A
-
聴覚モード。
次のパケットを送信する前にパケットを受け取らないと、
ベル
( ASCII
0x07)
文字を出力します。
送信間隔よりも往復時間が長い場合のために、
未受信パケット数の最大値を増加させた場合のみ、
それを越えて喪失したパケットがベルを鳴らします。
- -a
-
聴覚モード。パケットを受け取った時に、出力にベル
( ASCII
0x07)
文字を
含みます。このオプションは、別形式のオプションがある場合は無視されます。
- -c count
-
ECHO_RESPONSE
パケットを
count
回送出
(そして受信)
してから終了します。
本オプションが指定されない場合、
は割り込まれるまで動作を継続します。
- -D
-
フラグメント無しフラグを設定します。
- -d
-
使用する socket に
SO_DEBUG
オプションを設定します。
- -f
-
ECHO_REQUEST
ping を垂れ流します。
パケットが返って来るとすぐ、もしくは 100 分の 1 秒に 1 回のいずれか多い回数だけ
パケットを出力します。
ECHO_REQUEST
パケットを送るたびに
``.''
が表示され、
ECHO_REPLY
パケットを受信するたびにバックスペースが表示されます。
これによりどれだけのパケットが欠落したのかをすばやく表示することができます。
スーパユーザのみ使用可能です
Bf -emphasis
このオプションはネットワークに非常に負荷をかけるので、注意して使用する
必要があります。
Ef
- -I interface
-
与えられたインタフェースアドレスに対して、マルチキャストパケットを
送ります。このフラグは、ping の宛先アドレスがマルチキャストアドレスの
場合だけに適用できます。
- -i wait
-
wait
で指定した秒数だけパケットの送出間隔を空けます。
デフォルトでは送出間隔は 1 秒です。
より小さい値を指定できますが、
1 より小さい値を指定できるのはスーパユーザだけです。
このオプションは
-f
オプションとは同時に指定できません。
- -L
-
マルチキャストパケットのループバックを抑制します。
このフラグは、宛先アドレスがマルチキャストアドレスの場合だけ
適用できます。
- -l preload
-
指定した
preload
値だけ
ECHO_REQUEST
パケットを出来るだけ速く送信し、通常の動作に戻ります。
スーパユーザのみがこのオプションを使用できます。
- -M
-
ICMP_ECHO
の代りに
ICMP_MASKREQ
または
ICMP_TSTAMP
を使用します。
mask
では、リモートマシンのネットマスクを表示します。
net.inet.icmp.maskrepl
MIB 変数を設定すると、
ICMP_MASKREPLY
が有効になります。
time
では、起点、受理、送信のタイムスタンプが表示されます。
- -m ttl
-
出力パケットの IP Time To Live を設定します。
指定しないと、カーネルは
net.inet.ip.ttl
MIB 変数の値を使用します。
- -n
-
数値のみ出力します。ホストアドレスに対する名前を調べるようなことは
しません。
- -o
-
応答パケットを 1 個受け取ると、成功状態で終了します。
- -P policy
-
policy
は、ping セッションの IPsec ポリシを指定します。
詳細については
ipsec(4)
と
ipsec_set_policy3
を参照してください。
- -p pattern
-
送出するパケットを埋める
``pad''
バイトを指定します。
``pad''
バイトは
16 バイトを上限とします。
これはネットワーク上でデータ依存の問題を診断するときに有効です。たとえば
``-p ff
''
は全て 1 の送出パケットを生成します。
- -Q
-
いくらか静かな出力にします。
自己が行なった問い合わせに対しての応答に含まれる
ICMP エラーメッセージは表示されません。
もともとは、
-v
オプションがそのようなエラーを表示するために必要でしたが、
-v
オプションは全ての ICMP エラーメッセージを表示します。忙しい機械上では、
この出力は更に負荷になるでしょう。
-Q
オプションを指定しないと、
は、
自己の ECHO_REQUEST メッセージに起因する ICMP エラーメッセージを表示します。
- -q
-
出力を抑制します。開始時と終了時の要約行しか表示しません。
- -R
-
指定ホストまでの到達経路を記録します。
ECHO_REQUEST
パケット中に
RECORD_ROUTE
オプションをつけ、返送パケット上の経路バッファを表示します。IP ヘッダには
経路を 9 個収める大きさしかないことに注意してください;
特定の宛先に対してパケットを経路づけるには、通常
traceroute(8)
コマンドを使う方が良いでしょう。
不正に偽ったパケットによるなどして
しかるべき経路数よりも大くの経路が帰って来た場合、
ping は経路リストを表示し、正しい位置にまで縮めます。
多くのホストは
RECORD_ROUTE
オプションを無視するか捨てます。
- -r
-
通常のルーティングテーブルを無視し、
直接接続されているネットワーク上のホストに対して送信します。
指定接続されたネットワーク上にホストが存在しない場合には、エラーが返されます。
このオプションは経路情報を持たないインタフェースを経由してローカル
ホストに ping をかけるのに用いられます
(たとえばインタフェースが
routed(8)
によってドロップされた後)。
- -S src_addr
-
引き続いて指定する IP アドレスを、
出力パケットの送信元アドレスとして使用します。
複数の IP アドレスを持つホストでは、このオプションを使用することにより、
プローブパケットを送信するインタフェース以外の送信アドレスを強制可能です。
IP アドレスがこのマシンのインタフェースアドレスではない場合、
エラーが返され、送信は行われません。
- -s packetsize
-
送出するデータのバイト数を指定します。
デフォルトでは 56 バイトです。
これは
ICMP
ヘッダデータの 8 バイトと合せて 64
ICMP
バイトになります。
スーパユーザのみ、デフォルト値より大きな値を指定可能です。
- -T ttl
-
マルチキャストパケットの IP 寿命時間 (Time To Live) を設定します。
このオプションは、宛先アドレスがマルチキャストアドレスの場合だけ
適用できます。
- -t timeout
-
タイムアウトを、秒単位で指定します。
タイムアウトすると、受信パケット数にかかわらず
が終了します。
- -v
-
冗長出力を有効にします。
ECHO_RESPONSE
以外の受信
ICMP
パケットも表示されます。
- -z tos
-
指定されたタイプのサービスを使用します。
問題の切り分けのために
を用いるにはローカルインタフェースが up かつ running であることを
確認するため、まずローカルホスト上で実行します。
その後により遠くのホストやゲートウェイに
``ping''
します。
経路周回時間 (round trip time) と消失パケットの統計が計算されます。
重複したパケットが受信された場合、そのパケットは消失パケットの計算には
含まれませんが、経路周回時間の統計の計算には
使われます。
指定されたパケットの数が送信され
(受信され)
たとき、もしくはプログラムが
SIGINT
で終了した場合、簡単な要約が表示されます。
要約は、送出したパケット数、受信したパケット数、そして
経路周回時間の最小/平均/最大/分散です。
が
SIGINFO
シグナル (
stty(1)
に対する
status
引数を参照) を受信した場合、
現時点で送信および受信されたパケット数、
経路周回時間の最小/平均/最大/分散を、標準エラー出力に書き込みます。
このプログラムは主にネットワークのテスト、計測、管理に用いられことを
想定しています。
はそれ自体ネットワークに負荷をかけるので、トラブルのないときや自動スクリ
プトで用いることは勧められません。
索引
ICMP パケットの詳細
オプションなしの IP ヘッダは 20 バイトです。
ICMP
ECHO_REQUEST
パケットはさらなる 8 バイトの
ICMP
ヘッダとそれに続く任意の大きさのデータからなっています。
この大きさは
packetsize
によって指定されます
(デフォルトでは 56 バイトです)。
このように受信した IP パケット内の
ICMP
ECHO_REPLY
データ量は常に指定されたデータ
( ICMP
ヘッダ)
の大きさよりも 8 バイト大きくなります。
データ領域が少なくとも 8 バイトあるとき、
は最初の 8 バイトを経路周回時間の計算に用いるタイムスタンプを書くために
用います。指定された pad の大きさが 8 バイトより小さい場合経路周回時間は
得られません。
索引
重複パケットと障害パケット
ユーティリティは重複パケットと障害パケットを報告します。重複パケットは
ユニキャストアドレスに対しては起こるはずのないものですが、
リンク層での不適切な再送信によって引き起こされるようです。
重複は様々な状況で起こる可能性があります。低いレベルの重複の存在は
必ずしも警告にならないかもしれませんが、よい兆候ではありません。
ブロードキャストもしくは
マルチキャストアドレスに ping する時には、重複が起こることが期待されます。
実際に重複するのではなく、
異ったホストから同じ要求に対して応答が行われからです。
障害を受けたパケットは明らかに重大な警告です。多くの場合、
パケットの経路のどこか(ネットワーク内かホスト内)のハードウェアの故障が
考えられます。
索引
異なったデータパターンの試行
(インター) ネットワーク層はデータ部分に含まれるデータによってパケットの扱い
を変えません。不幸にもデータ依存性の問題がネットワークに侵入し長い間検知さ
れないままとなる可能性が知られています。多くの場合、問題を引き起こす特殊
なパターンはたとえば全部 1 や全部 0 のようなもの、あるいは右端以外が 0
であるような十分な
``遷移''
を持たないものです。コマンドラインで(たとえば)
全部 0 のデータパターンを指定するだけでは不十分かもしれません。なぜな
ら問題のパターンはデータリンク層にあり、コマンドラインで指定したものと
コントローラが送信するものとの間の関係は複雑だからです。
このことはデータ依存性が問題となるとき、それを見付けるために多くのテストをし
なければならないということを意味します。運がよければ、あるネットワーク
を通して送れない、あるいは同じような長さのファイルよりもずっと長時間かか
るファイルを見付けることができるかもしれません。この場合、そのファイル
を調べ繰り返し現われるパターンを
の
-p
オプションを使ってテストできます。
索引
TTL の詳細
IP パケットの
TTL
値はパケットが捨てられずに通過できる IP ルータの最大数を表わ
します。今のところインターネット上の各ルータは
TTL
フィールドをちょうど 1 だけ減らすと期待できます。
TCP/IP
の仕様では
TCP
パケットの
TTL
フィールドを 64 にすべきと推奨していますが、多くのシステムは
もっと小さい値を用いています
( BSD 4.3
では 30、
BSD 4.2
では 15 を用いています)。
このフィールドに許される最大値は 255 です。
そして多くの
UNIX
システムでは
ICMP ECHO_REQUEST
パケットの
TTL
フィールドを 255 にしています。これが
(ping)
は出来るのに
telnet(1)
や
ftp(1)
で入れないホストが発生する理由です。
通常
は受け取ったパケットの ttl 値を出力します。リモートシステム
が ping パケットを受け取るとき、その応答における
TTL
フィールドに関し以下の 3 つのうちの 1 つを行なうことができます。
-
変更しない;これは
BSD 4.3 tahoe
リリース前の
BSD システムが行なっていたことです。
この場合、受け取ったパケット中の
TTL
値は 255 から周回経路におけるルータの数を引いた数です。
-
255 にセットする; これは現在の
BSD システムが行なっている
ことです。この場合、受け取ったパケット中の
TTL
値は 255 から、リモートシステム
から
している
ホスト
まで
の経路におけるルータの数を引いた数となります。
-
ある他の値にセットする。マシンによっては
30 あるいは 60 のような
TCP
パケットで用いるのと同じ値を
ICMP
パケットに使います。また全く異なる値を用いるマシンもあるかもしれません。
索引
戻り値
ユーティリティは、指定した
host
から少なくとも 1 回の応答を受信した場合、終了値 0 を返します;
送出は成功したものの応答を受信できない場合は 2 を返します;
エラーが発生した場合は、他の値
In ( sysexits.h
が返されます。
索引
関連項目
netstat(1),
ifconfig(8),
routed(8),
traceroute(8)
索引
歴史
ユーティリティは
BSD 4.3
から登場しました。
索引
作者
オリジナルの
ユーティリティは、
An Mike Muuss
が US Army Ballistics Research Laboratory にて記述しました。
索引
バグ
多くのホストやゲートウェイは、
RECORD_ROUTE
オプションを無視します。
最大IPヘッダ長は、
RECORD_ROUTE
オプションを付加するには小さ過ぎます。しかしながら、これについては出来
ることは多くありません。
ping を垂れ流しにするのは、一般に勧められません。特に
ブロードキャストアドレスに対して ping の垂れ流しを行なうのは、
きちんと条件を整えた場合においてのみにとどめるべきです。
索引
Index
- 名称
-
- 書式
-
- 解説
-
- ICMP パケットの詳細
-
- 重複パケットと障害パケット
-
- 異なったデータパターンの試行
-
- TTL の詳細
-
- 戻り値
-
- 関連項目
-
- 歴史
-
- 作者
-
- バグ
-
Time: 07:07:42 GMT, January 12, 2009