第10回:データは宛先にきちんと届いているか?【ベストエフォート型・ICMP・到達不能メッセージ・アドレス解決・pingコマンド・ARP・ポート番号・ウェルノウンポート番号・登録済みポート・ダイナミック/プライベートポート】

<<第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パケットの送信元にエラーレポートを送ります。このエラーレポートを到達不能メッセージと呼んでいます。これにより、エンドツーエンド通信ができなかった原因を通知します。

ICMPエラーレポート

ICMPエラーレポート

診断機能は、IPのエンドツーエンド通信ができるかどうかの確認です。そのために、とてもよく利用するpingコマンドがあります。pingコマンドによって、ICMPエコー要求/応答メッセージを送受信することで、指定したIPアドレスとの間で通信ができるかどうかを確認できます。

pingコマンド

pingコマンド

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アドレスを対応づけることを指して、アドレス解決と呼びます。

宛先IPアドレスと宛先MACアドレスの対応づけ

宛先IPアドレスと宛先MACアドレスの対応づけ

イーサネットについては、後であらためて解説しています。

ARPの動作の流れ

ARPのアドレス解決の範囲は同じネットワーク内のIPアドレスです。イーサネットインタフェースで接続されているPCなどの機器がIPパケットを送信するために宛先IPアドレスを指定したときに、自動的にARPが行われます。ユーザはARPの動作について特に意識する必要はありませんが、ARPによってアドレス解決を行っているということはネットワークの仕組を知るうえでとても重要です。ARPの動作の流れは、次のようになります。

ARPの動作の流れ

ARPの動作の流れ

  1. ARPリクエストでIPアドレスに対応するMACアドレスを問い合わせる
  2. 問い合わされたIPアドレスを持つホストがARPリプライでMACアドレスを教える
  3. アドレス解決した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

登録済みポートで識別する

登録済みポートは、ウェルノウンポート番号以外でよく利用されるサーバアプリケーションを識別するためのポート番号です。登録済みポートもあらかじめ決められています。

ダイナミック/プライベートポートで識別する

ダイナミック/プライベートポートは、クライアントアプリケーションを識別するためのポート番号です。ウェルノウンポートや登録済みポートと異なり、あらかじめ決められているわけではありません。クライアントアプリケーションが通信するときに、ダイナミックに割り当てられます。

>>第11回:確実にアプリケーションのデータを転送する【TCP・3ウェイハンドシェイク・ACK・フロー制御・シーケンス番号・ACK番号・MSS(Maximum Segment Size)・UDP・IP電話】

TOP