今回は、IPをサポートしてくれる必要不可欠なやつ「ICMP」についてです。
ICMPというと、いわゆる「Ping」を想像すると思います。「Ping」というのは、IP通信ができているのかを確認するコマンドです。
ネットワーク機器やWindowsのコマンドプロンプトから、「ping 192.168.10.1」のように記入します。これは、「192.168.10.1」宛に通信ができているかということの確認をしています。
これは通信ができていませんが、
Pingが通れば、Layer3(ネットワーク層)まではネットワークに問題がないと判断できます。
「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ですね。特定の機器までのネットワークに問題がないか調べるために、問い合わせを行い、応答を得ます。問題があって、その機器まで到達できない場合は、エラー通知が送られてくることになります。
コメント