<<第9回:ネットワークに接続するには2段階ある【物理的な接続・論理的な接続・グローバルアドレス・プライベートアドレス・パブリックアドレス・DHCP・NAT・NAPT】
この記事のポイント
- ICMPによってIPでのデータ転送が正常にできるかどうかを確認する
- 何らかの理由でIPパケットが破棄されるとICMP到達不能メッセージで送信元に通知する
- pingコマンドで指定したIPアドレスと通信できるかどうかを確認する
データは宛先にきちんと届いているか?
ICMPとは
IPは確認しない
IPによってデータを他のホストに転送しているのですが、IPにはきちんと届いたかどうかを確認するような仕組みがありません。転送したいデータにIPヘッダをつけてIPパケットにして、ネットワーク上に送り出すだけです。宛先まで届けばその返事が返ってくるはずですが、宛先まで届けられなかったらいつまでたっても返事が返ってきません。そして、届かなかった理由もわかりません。このようなIPでのデータの転送の特徴はベストエフォート型とも呼ばれます。「データを送り届けるために最大限に努力しますが、できなかったらごめんなさい」というのがIPの特徴です。
そこで、別途、IPによるエンドツーエンド通信が正常にできているかどうかを確認するための機能を盛り込んでいるプロトコルとしてICMP(Internet Control Message Protocol)が開発されています。
ICMPの機能
ICMPの主な機能は、次の2つです。
- エラーレポート
- 診断機能
何らかの理由でIPパケットを破棄したら、破棄した機器がICMPによって破棄したIPパケットの送信元にエラーレポートを送ります。このエラーレポートを到達不能メッセージと呼んでいます。これにより、エンドツーエンド通信ができなかった原因を通知します。
診断機能は、IPのエンドツーエンド通信ができるかどうかの確認です。そのために、とてもよく利用するpingコマンドがあります。pingコマンドによって、ICMPエコー要求/応答メッセージを送受信することで、指定したIPアドレスとの間で通信ができるかどうかを確認できます。
IPアドレスとMACアドレスを対応づける
次の項目のポイント
- IPアドレスとMACアドレスを対応づけることをアドレス解決と呼ぶ
- ARPによって自動的にアドレス解決を行い、宛先IPアドレスに対応する宛先MACアドレスを求めることができる
ARP
ARPとは?
TCP/IPではIPアドレスを指定してデータ(IPパケット)を転送します。そして、IPパケットはPCやサーバなどのインタフェースまで転送されていきます。PCやサーバなどのインタフェースはMACアドレスによって識別しています。TCP/IPのIPアドレスとインタフェースを識別するためのMACアドレスを対応づけるのがARPの役割です。
イーサネットインタフェースからIPパケットを送り出すときには、イーサネットヘッダを付加します。イーサネットヘッダには宛先MACアドレスを指定しなければいけません。宛先IPアドレスに対応するMACアドレスを求めるためにARPを利用します。また、IPアドレスとMACアドレスを対応づけることを指して、アドレス解決と呼びます。
イーサネットについては、後であらためて解説しています。
ARPの動作の流れ
ARPのアドレス解決の範囲は同じネットワーク内のIPアドレスです。イーサネットインタフェースで接続されているPCなどの機器がIPパケットを送信するために宛先IPアドレスを指定したときに、自動的にARPが行われます。ユーザはARPの動作について特に意識する必要はありませんが、ARPによってアドレス解決を行っているということはネットワークの仕組を知るうえでとても重要です。ARPの動作の流れは、次のようになります。
- ARPリクエストでIPアドレスに対応するMACアドレスを問い合わせる
- 問い合わされたIPアドレスを持つホストがARPリプライでMACアドレスを教える
- アドレス解決したIPアドレスとMACアドレスの対応をARPキャッシュに保存する
ポート番号でアプリケーションへ振り分ける
次の項目のポイント
- ポート番号によってアプリケーションを識別し、データを適切なアプリケーションに振り分ける
- ポート番号はTCPまたはUDPヘッダに指定される
- 0~1023のウェルノウンポート番号は主にサーバアプリケーションを識別するために予約されているポート番号である
ポート番号、ウェルノウンポート番号
ポート番号の役割
ホストで動作しているアプリケーションヘデータを振り分けるためには、それぞれのアプリケーションを識別できなければいけません。そのためにポート番号を利用します。
ポート番号とは、TCP/IPのアプリケーションを識別するための識別番号で、このあと解説するTCPまたはUDPヘッダに指定されます。ポート番号は16ビットの数値なので、とりうる範囲は0~65535です。下の表の範囲ごとに意味があります。
ポート番号の範囲
名称 | ポート番号の範囲 | 意味 |
---|---|---|
ウェルノウンポート | 0~1023 | サーバアプリケーション用に予約されているポート番号 |
登録済みポート | 1024~49151 | よく利用されるアプリケーションのサーバ側のポート番号 |
ダイナミック/プライベートポート | 49152~65535 | クライアントアプリケーション用のポート番号 |
ウェルノウンポート番号でWebブラウザからの要求を待つ
特に重要なのがウェルノウンポート番号です。ウェルノウンポート番号は、あらかじめ決められています。サーバアプリケーションを起動すると、ウェルノウンポート番号でクライアントアプリケーションからの要求を待ち受けます。主なアプリケーションプロトコルのウェルノウンポート番号は、下の表のようになります。
主なウェルノウンポート番号
プロトコル | TCP | UDP |
---|---|---|
HTTP | 80 | ー |
HTTPS | 443 | ー |
SMTP | 25 | ー |
POP3 | 110 | ー |
IMAP4 | 143 | ー |
FTP | 20/21 | ー |
DHCP | ー | 67/68 |
登録済みポートで識別する
登録済みポートは、ウェルノウンポート番号以外でよく利用されるサーバアプリケーションを識別するためのポート番号です。登録済みポートもあらかじめ決められています。
ダイナミック/プライベートポートで識別する
ダイナミック/プライベートポートは、クライアントアプリケーションを識別するためのポート番号です。ウェルノウンポートや登録済みポートと異なり、あらかじめ決められているわけではありません。クライアントアプリケーションが通信するときに、ダイナミックに割り当てられます。