ICMPとはなにか。~pingやtracerouteのためのプロトコル~

プロトコル

 

今回は、IPをサポートしてくれる必要不可欠なやつ「ICMP」についてです。

 

ICMPというと、いわゆる「Ping」を想像すると思います。「Ping」というのは、IP通信ができているのかを確認するコマンドです。

icmp

ネットワーク機器やWindowsのコマンドプロンプトから、「ping 192.168.10.1」のように記入します。これは、「192.168.10.1」宛に通信ができているかということの確認をしています。

これは通信ができていませんが、

Pingが通れば、Layer3(ネットワーク層)まではネットワークに問題がないと判断できます。

 

icmp

「traceroute」もICMPを用いていて、これは宛先までの経路を調べるためのコマンドです。これにはTTL値というモノを使用します。

 

①    PCのコマンドプロンプトから「tracert 10.1.1.100」を実行

②    PCはTTL=1でIPパケットを送信。

③    ルータAがTTL値を-1して、0になるとパケットを破棄します。よって、時間超過でエラー通知されます。

④    PCは次、TTL=2でIPパケット送信。

⑤    ルータAでTTL-1、ルータBでTTL-1し、TTL 値は0になるのでパケットを破棄し、時間超過でエラー通知を行います。

⑥    PCは次、TTL=3でIPパケット送信。

⑦    目的のサーバに応答メッセージが届きますので、サーバは送信元にエコー応答します。

 

このようにtracerouteでは経路を調べていきます。

 

 

では次に、ICMPの仕組みを紐解いていきましょうか。

 

先ほど、「ICMPはIPをサポートしてくれる必要不可欠なやつ」と書きました。

つまり、データを送る際は、IPだけに任せているのではなくて、ICMPというプロトコルも使っているんですよね。

 

じゃあ、ICMPには何の役割があるのかというと、「エラー通知」と「問い合わせ」です。IPそのものには、通信の最中に何か障害が起こったりして通信が途絶えても、それを送信元の機器に伝えることはできないのです。そのため、必ずICMPを実装してIP通信が行われます。

 

じゃあ、「エラー通知」と「問い合わせ」の役割とはなんなのか・・。

 

「エラー通知」は、通信中に障害が発生したり、パケットが何らかの理由で破棄されてしまった時に、エラー通知を出して、送信元機器に知らせます。

エラー通知例として、「Destination Unreachable : 宛先到達不能」があります。

 

「問い合わせ」は、pingとtracerouteですね。特定の機器までのネットワークに問題がないか調べるために、問い合わせを行い、応答を得ます。問題があって、その機器まで到達できない場合は、エラー通知が送られてくることになります。

 

コメント

タイトルとURLをコピーしました