IPパケットを送るには、相手のIPアドレスに加えMACアドレスも知る必要がある。この変換を可能にするのがARPプロトコルだ。
■連載目次
第1回 Windowsネットワークの舞台裏
第2回 レイヤ・モデルとファイル共有
第3回 NetBIOSを理解する(1)
第4回 NetBIOSを理解する(2)
第5回 NetBIOSの通信の実際
第6回 TCP/IP始めの一歩
第7回 IPアドレスとネットマスク
第8回 アドレス・クラスとIPアドレス
第9回 IPルーティング
第10回 IPパケットの構造
第11回 MACアドレスを解決するARP
第12回 TCP/IPを支えるICMP
第13回 データグラム通信を実現 UDP
第14回 信頼性を実現するTCP(1)
第15回 信頼性を実現するTCP(2)
第16回 信頼性を実現するTCP(3)
第17回 LLCとNetBEUI
第18回 NetBIOS over TCP/IP(1)
第19回 NetBIOS over TCP/IP(2)
第20回 ファイル共有SMB/CIFS(1)
第21回 ファイル共有SMB/CIFS(2)
第22回 ファイル共有SMB/CIFS(3)
第23回 ブラウザ・サービス
前回はIPパケットの構造について述べてきたが、今回からはより上位のプロトコルについて解説していくことにする。まずはARPプロトコルについて取り上げる。ARPは、TCP/IPが動作するためには(正確には、IPパケットを送受信するためには)不可欠の補助プロトコルであり、MACアドレスとIPアドレスを相互に変換するための機能を持っている。また、同様にICMPプロトコル(次回解説予定)もTCP/IPが動作するためには欠かせないプロトコルである。
ARPもICMPも、TCPやUDP、IPなどが動作するための補助的なプロトコルであるが、いずれもIPプロトコルの上位に存在するものではない。どちらかというと、(OSI参照モデルでいうと)IPと同じようなところに位置する補助的なプロトコルである。そのため、パケットの構造などもやや変則的である。それを理解するために、ここでイーサネット・フレームとTCP/IPプロトコルのパケット構造についてまとめておこう(イーサネットでは「パケット」といわずに「フレーム」と呼んでいる)。ネットワーク上の通信パケットの内容をキャプチャして解析する場合など、この構造を知っていると非常に便利なので、ぜひ覚えておいていただきたい。
イーサネットのフレームの構造については、別連載の「詳説 TCP/IPプロトコル第7回―3.イーサネットのフレーム・フォーマット」なども参照していただきたい。具体的には、6bytesのあて先MACアドレスに続いて、6bytesのローカル・コンピュータのMACアドレスが続き、その直後に2bytesのプロトコル・タイプのフィールドがあり、さらにその後にデータ・フィールド(最大1500bytesまで)が続く。なお、これはDIX規格(DEC-Intel-Xerox社の提案による、最初のイーサネットの規格)の場合の話である。これ以外にもIEEE802.3形式のフォーマットもあるが、一般的にはTCP/IPでは使われていないので、ここでは解説しない。
プロトコル・タイプとは、イーサネットの上位に位置するプロトコルの種類を表す数値であり、IPプロトコルならば「0x0800」となる。ただしこれ以外に、「0x0806」のARPと、「0x8035」のRARPも使われる。このように、プロトコル構造的に見ると、IPとARPとRARPはそれぞれ独立しているといえる。
これに対して、ICMPは、IPヘッダ中にあるプロトコル・タイプ・フィールドで区別されている。この点からすると、ICMPは、TCPやUDPと同列に見えるが、実際にはIPプロトコルの機能をサポートする、補助的なプロトコルである。
Copyright© Digital Advantage Corp. All Rights Reserved.