IPアドレスとMACアドレス

TCP/IPの通信では、IPパケットが宛先IPアドレスで指定された宛先のノードに届くまでいくつものルータを経由します。このイメージはコマンドプロンプトからtracertコマンドに特定のURLをパラメーターとして渡すと、自分の使用しているルーターから目的のサーバーまでどのようなルーターを経由して到達したか表示され、ルーターからルーターへパケットが転送されて 目的のサーバーに届いている事が分かります。(このパケットの通り道のことを経路、ルーター間のパケットの転送を ルーティングと呼びます。)
さて、宛先の指定に使われるIPアドレスは、ハードウェアに依存しない論理的なアドレスであり、ネットワークアドレスとホストアドレスによってノード(ネットワークインターフェイスを備えたコンピュータ)を識別します。
一方MACアドレスは、物理的なネットワークインターフェイスを識別するアドレスです。Ethernetではハブによって複数のコンピュータやルータが接続されていますが、物理的に通信できるのは「隣接ノード」だけです。Ethernetではこの複数の隣接ノードの中から通信する1つのノードを示すためにMACアドレスが使われています。
IP通信において宛先IPアドレスはつねに到着ノードを示し、パケットを中継するルータは、これを見て転送先を決定します。しかし、これだけではIPパケットをネットワークの途中の次のルータに届けることはできません。次のルータへIPパケットを送るためには、IPアドレスに変わる宛先が必要となり、これにMACアドレスを使います。つまり送信ノードにルータのMACアドレスを指定して送信します。
ルータに送信されたIPパケットをルータが受信すると、IPパケットの宛先を見て、宛先が自分でなければ到着ノード側へパケットを転送します。転送を行なう際、IPパケット中の宛先IPアドレスと送信元アドレスはまったく変わらず、新たに隣接ノード間の通信の為に宛先と送信元を示すヘッダ情報が付けられます。

※発信元のルータは隣接ノードのMACアドレスをどのように知るかといえば、MACアドレスを調べたいノードがIPアドレスをデータに設定し、隣接ノードすべてにARP(Address Resolution Protocol)Requestをブロードキャストし、全ノードがデータに設定されているIPアドレスを自身のIPアドレスと比較し、その結果が一致するノードだけが発信元にARP ReplyメッセージとともにMACアドレスを通知するのです。

カテゴリー: JSP_Servlet パーマリンク