IPv4アドレスについて
IPアドレス。分かっているつもりであったが、やはり分かっていなかった。
改めてIPアドレスの基本について少しお勉強し直したので、自らの確認の意味を込めて、にわか仕込みの半可通の理解を簡単にまとめてみることにする。既に知っている方や興味のない方は、しばしご歓談を。
一、
IPアドレス(Internet Protocol address)とは、ネットワークを構成する機器(ノード)に割り当てられる識別番号であり、製造段階で機器そのものに一意的に付与される物理アドレス(MACアドレス:Media Access Control address)と区別する意味で、論理アドレスとも呼ばれる。OSI参照モデル(Open Systems Interconnection reference model)では、MACアドレスが第2層(レイヤ2、L2、データリンク層)に属するのに対して、IPアドレスは第3層(レイヤ3、L3、ネットワーク層)に属する。version 4のIPアドレス(これが「IPv4アドレス」と表記される)には、32bitの数値が使われる。これをそのまま2進数で表すと分かりにくいので、先頭から8bitずつ4つに区切り、認識しやすいように10進数で表記したものが、IPv4アドレスとして通常使われている。区分された4つの数値は、8bitを表すオクテット(octet:八重奏、8人組、8個組の意)という言葉を使って、先頭から第1オクテット、第2オクテット、第3オクテット、第4オクテットと呼ばれる。
IPv4アドレスは以下のようにA・B・C・D・Eの5つのクラスに分類されている。
クラスAは、0.0.0.0~127.255.255.255
クラスBは、128.0.0.0~191.255.255.255
クラスCは、192.0.0.0~223.255.255.255
クラスDは、224.0.0.0~239.255.255.255
クラスEは、240.0.0.0~255.255.255.255
各クラスの先頭の値を2進数で表すと、
クラスAが、00000000.00000000.00000000.00000000
クラスBが、10000000.00000000.00000000.00000000
クラスCが、11000000.00000000.00000000.00000000
クラスDが、11100000.00000000.00000000.00000000
クラスEが、11110000.00000000.00000000.00000000
となり、簡明な基準で分類されていることが分かり、これを覚えておけば便利だという。
そして、クラスAは、第1オクテット(上位8bit)が、ネットワーク[アドレス]部とされ、残り第2から第4オクテットまでの24bitが、ホスト[アドレス]部とされる。ネットワーク部を示すbit数であるプリフィックス長を付して、0.0.0.0/8と表記される。
クラスBは、第1・2オクテット(16bit)が、ネットワーク部、第3・4オクテット(16bit)がホスト部。同じくプリフィックス長を付して、128.0.0.0/16と表記。
クラスCは、第1~3オクテット(24bit)が、ネットワーク部、第4オクテット(8bit)がホスト部。同じく、192.0.0.0/24と表記。
この分類に基づいて、特別な意味を持った予約済みのアドレスを除き、団体・企業等の規模に応じて割り当てが行なわれるとされる。日本国内におけるアドレスの管理はJPNIC(Japan Network Information Center)が行なっている。
ただし、クラスDは、マルチキャスト用であり、クラスEは、研究・実験用であるため、それらのアドレスは一般には割り当てられないという。
ところが、各クラスで想定した規模と実際に割り当てを求める団体のホスト数とに懸隔があり、クラス分けだけではアドレスの適正で効率的な割り当てが行えないため、ネットマスクやClassless Inter-Domain Routing (CIDR)などを用いた運用が為されているという。
二、
ネットマスクあるいはサブネットマスクとは、IPv4アドレスと同じく32bitの値で、そのネットワーク部に当たるbit値をすべて「1」で表し、下位のホスト部のbit値をすべて「0」で表したものである。
例えば、IPv4アドレスが「192.168.123.45」、ネットマスクが「255.255.255.0」のホストは、2進数で表すと、各々、
IPv4アドレス:11000000.10101000.01111011.00101101
ネットマスク:11111111.11111111.11111111.00000000
である。両者をAND演算すれば、
11000000.10101000.01111011.00000000
となり、10進数では「192.168.123.0」となって、当該ホストのネットワーク・アドレスを容易に算出することができる。
このように、ネットマスクは、IPアドレスにマスク処理をして、ネットワークを判別するために使用されるのである。これによって、ネットワークを小さなサブネットに分割するサブネット化(サブネッティング)や連続したネットワークを統合する集約化(アグリゲーション)を行なうことができる。
三、
ICANN(Internet Corporation for Assigned Names and Numbers)を頂点として各地域・国等に割り振り(allocation)がなされ、最終的にエンド・ユーザーに割り当て(assignment)が行なわれるIPアドレスは、グローバルIPアドレスと呼ばれるが、これに対して、誰もが一定の範囲内でネットワークに任意に割り当てることができるIPアドレスは、プライベートIPアドレスと呼ばれる。
IPv4のプライベート・アドレスとして、
クラスAでは、10.0.0.0(1個)、
クラスBでは、172.16.0.0~172.31.0.0(16個)、
クラスCでは、192.168.0.0~192.168.255.0(256個)
の計273個のネットワークが予約されており、誰でも自由に使うことが許されている。
この場合、クラスBであっても、例えばネットマスクを255.255.255.0とすれば、172.16.0.0から172.31.255.0まで4096個のネットワークを組むことができ、各ネットワークに254台のホストを割り当てることが可能となる。しかし、実際の企業・団体のPC保有台数は、少し古いデータだが、多いところで40,000台であると言う(野村総合研究所調べ、2007年)。また、ネットワーク管理者からすれば、単一ネットワークのホスト数は、100台以内が管理し易いらしい。となると、大方はクラスCで十分であり、特に多数のネットワークを必要とする場合には、192.168.0.0/25として、サブネットマスクを255.255.255.128と設定すれば、ネットワーク数512、各々のホスト数126を確保できることになる。
そして、このようなプライベートIPアドレス以外にも特殊な用途に使用するアドレスが定義されており(RFC 6890, "Special-Purpose IP Address Registries", April 2013)、これらを除いたアドレスが、グローバルIPアドレスということになる。
四、
プライベート・アドレスについては、 "Address Allocation for Private Internets"と題されたRFC 1918で規定されており、 そのSection 3 "Private Address Space"においてプライベート・アドレスの特性が説明されている。
プライベート・アドレスが割り当てられたホストは、ネットワーク内のすべてのホストと通信することができるが、ネットワーク外のホストとはIP接続性を持つことができない。IP接続ができない以上、プライベート・ホストが外部にアクセスするには、ゲートウェイ等を経由しなければならない(細かく言えば、プライベート・ホストが組織内の他のネットワークのホストと通信するには、L3スイッチ等を介する必要があり、外部のネットワークにインターネットを通じてアクセスするには、ネットワーク・アドレス変換(NAT:Network Address Translation)機能を持つルータ等を経由する必要があるということ:筆者注)。
これに対して、グローバル・アドレスを持つホストは、もちろんネットワーク内のどのホストとも通信することができ、ネットワーク外のグローバル・アドレスを持つパブリック・ホストに対してもIP接続性を持つことができる。しかし、パブリック・ホストはネットワーク外のプライベート・アドレスを持つホストには接続することができないのである。
要約すれば、以上のようになるが、企業においてもプライベート・アドレスが活用されているのは、IPv4アドレスが不足しているからというだけでなく、このようなプライベート・アドレスの特性がセキュリティ上有用であるからとも言われている。
五、
また、特別な意味を持つIPv4アドレスとして、2進数でホスト部がすべて0となるアドレスは、ネットワーク・アドレスと呼ばれ、当のネットワーク自体を指す場合に使用され、ホスト部がすべて1となるアドレスは、ブロードキャスト・アドレスといい、そのネットワーク内のすべてのホストにパケットを送信するために使用される。この2つのアドレスは個々のホストには割り当てできないことになっている。試しに、Windowsで「192.168.0.0」や「192.168.0.255」と入力し、OKをクリックしても、警告と共に再入力が促されるだけである。
ところで、手動でIPアドレスが設定されておらず、しかもDHCPサーバからのアドレス取得に失敗した場合に、自動的に169.254で始まるクラスBのIPアドレス(169.254.0.0/16)が割り当てられる(Microsoftなどでは、この機能をAPIPA:Automatic Private IP Addressingと言う。)。これは、リンクローカル・アドレス(link-local address)と呼ばれ、外部と接続されていない単一のネットワーク内のみの利用を想定した、ルーティングできないアドレス空間として定義されているので、このアドレスが割り当てられた機器は、ネットワークを超えて外部のインターネット等に接続できない。そのため、リンクローカル・アドレスは、インターネット等に一切接続することなくネットワーク内でのみ情報をやり取りする必要がある場合を除いて、ほとんど実用性はないようである。ただ、通常DHCP(Dynamic Host Configuration Protocol)によってIPアドレスが割り当てられるように設定しているにもかかわらず、リンクローカル・アドレスが割り当てられているといった場合には、このリンクローカル・アドレスは、ネットワーク上においてDHCPの機能を阻む何らかの不具合が生じていることを示す指標になろう。
なお、 ICANNの持つIPv4アドレスの在庫が枯渇した現在でも、IPアドレスといえば、IPv4アドレスを指すのが一般のようなので、ここでもそれに従うことにする。IPv6アドレスが普及し、安定的に使用できるようになるには、まだしばらくはかかりそうである。
しかし、それにしても、と思う。IPv6アドレスを128bitにまでする必要があったのだろうか、と。
【追記】:
否、2013年現在この地球に生きる者の誰一人も見届けることのできない200年後、300年後においてもおそらく枯渇しないであろうIPアドレスを策定しておくことは、それが地球規模で時代を超えて利用される可能性のある基盤システムである限り、そのシステムを生み出した時代の責務といえるかもしれない。
改めてIPアドレスの基本について少しお勉強し直したので、自らの確認の意味を込めて、にわか仕込みの半可通の理解を簡単にまとめてみることにする。既に知っている方や興味のない方は、しばしご歓談を。
一、
IPアドレス(Internet Protocol address)とは、ネットワークを構成する機器(ノード)に割り当てられる識別番号であり、製造段階で機器そのものに一意的に付与される物理アドレス(MACアドレス:Media Access Control address)と区別する意味で、論理アドレスとも呼ばれる。OSI参照モデル(Open Systems Interconnection reference model)では、MACアドレスが第2層(レイヤ2、L2、データリンク層)に属するのに対して、IPアドレスは第3層(レイヤ3、L3、ネットワーク層)に属する。version 4のIPアドレス(これが「IPv4アドレス」と表記される)には、32bitの数値が使われる。これをそのまま2進数で表すと分かりにくいので、先頭から8bitずつ4つに区切り、認識しやすいように10進数で表記したものが、IPv4アドレスとして通常使われている。区分された4つの数値は、8bitを表すオクテット(octet:八重奏、8人組、8個組の意)という言葉を使って、先頭から第1オクテット、第2オクテット、第3オクテット、第4オクテットと呼ばれる。
IPv4アドレスは以下のようにA・B・C・D・Eの5つのクラスに分類されている。
クラスAは、0.0.0.0~127.255.255.255
クラスBは、128.0.0.0~191.255.255.255
クラスCは、192.0.0.0~223.255.255.255
クラスDは、224.0.0.0~239.255.255.255
クラスEは、240.0.0.0~255.255.255.255
各クラスの先頭の値を2進数で表すと、
クラスAが、00000000.00000000.00000000.00000000
クラスBが、10000000.00000000.00000000.00000000
クラスCが、11000000.00000000.00000000.00000000
クラスDが、11100000.00000000.00000000.00000000
クラスEが、11110000.00000000.00000000.00000000
となり、簡明な基準で分類されていることが分かり、これを覚えておけば便利だという。
そして、クラスAは、第1オクテット(上位8bit)が、ネットワーク[アドレス]部とされ、残り第2から第4オクテットまでの24bitが、ホスト[アドレス]部とされる。ネットワーク部を示すbit数であるプリフィックス長を付して、0.0.0.0/8と表記される。
クラスBは、第1・2オクテット(16bit)が、ネットワーク部、第3・4オクテット(16bit)がホスト部。同じくプリフィックス長を付して、128.0.0.0/16と表記。
クラスCは、第1~3オクテット(24bit)が、ネットワーク部、第4オクテット(8bit)がホスト部。同じく、192.0.0.0/24と表記。
この分類に基づいて、特別な意味を持った予約済みのアドレスを除き、団体・企業等の規模に応じて割り当てが行なわれるとされる。日本国内におけるアドレスの管理はJPNIC(Japan Network Information Center)が行なっている。
ただし、クラスDは、マルチキャスト用であり、クラスEは、研究・実験用であるため、それらのアドレスは一般には割り当てられないという。
ところが、各クラスで想定した規模と実際に割り当てを求める団体のホスト数とに懸隔があり、クラス分けだけではアドレスの適正で効率的な割り当てが行えないため、ネットマスクやClassless Inter-Domain Routing (CIDR)などを用いた運用が為されているという。
二、
ネットマスクあるいはサブネットマスクとは、IPv4アドレスと同じく32bitの値で、そのネットワーク部に当たるbit値をすべて「1」で表し、下位のホスト部のbit値をすべて「0」で表したものである。
例えば、IPv4アドレスが「192.168.123.45」、ネットマスクが「255.255.255.0」のホストは、2進数で表すと、各々、
IPv4アドレス:11000000.10101000.01111011.00101101
ネットマスク:11111111.11111111.11111111.00000000
である。両者をAND演算すれば、
11000000.10101000.01111011.00000000
となり、10進数では「192.168.123.0」となって、当該ホストのネットワーク・アドレスを容易に算出することができる。
このように、ネットマスクは、IPアドレスにマスク処理をして、ネットワークを判別するために使用されるのである。これによって、ネットワークを小さなサブネットに分割するサブネット化(サブネッティング)や連続したネットワークを統合する集約化(アグリゲーション)を行なうことができる。
三、
ICANN(Internet Corporation for Assigned Names and Numbers)を頂点として各地域・国等に割り振り(allocation)がなされ、最終的にエンド・ユーザーに割り当て(assignment)が行なわれるIPアドレスは、グローバルIPアドレスと呼ばれるが、これに対して、誰もが一定の範囲内でネットワークに任意に割り当てることができるIPアドレスは、プライベートIPアドレスと呼ばれる。
IPv4のプライベート・アドレスとして、
クラスAでは、10.0.0.0(1個)、
クラスBでは、172.16.0.0~172.31.0.0(16個)、
クラスCでは、192.168.0.0~192.168.255.0(256個)
の計273個のネットワークが予約されており、誰でも自由に使うことが許されている。
この場合、クラスBであっても、例えばネットマスクを255.255.255.0とすれば、172.16.0.0から172.31.255.0まで4096個のネットワークを組むことができ、各ネットワークに254台のホストを割り当てることが可能となる。しかし、実際の企業・団体のPC保有台数は、少し古いデータだが、多いところで40,000台であると言う(野村総合研究所調べ、2007年)。また、ネットワーク管理者からすれば、単一ネットワークのホスト数は、100台以内が管理し易いらしい。となると、大方はクラスCで十分であり、特に多数のネットワークを必要とする場合には、192.168.0.0/25として、サブネットマスクを255.255.255.128と設定すれば、ネットワーク数512、各々のホスト数126を確保できることになる。
そして、このようなプライベートIPアドレス以外にも特殊な用途に使用するアドレスが定義されており(RFC 6890, "Special-Purpose IP Address Registries", April 2013)、これらを除いたアドレスが、グローバルIPアドレスということになる。
四、
プライベート・アドレスについては、 "Address Allocation for Private Internets"と題されたRFC 1918で規定されており、 そのSection 3 "Private Address Space"においてプライベート・アドレスの特性が説明されている。
プライベート・アドレスが割り当てられたホストは、ネットワーク内のすべてのホストと通信することができるが、ネットワーク外のホストとはIP接続性を持つことができない。IP接続ができない以上、プライベート・ホストが外部にアクセスするには、ゲートウェイ等を経由しなければならない(細かく言えば、プライベート・ホストが組織内の他のネットワークのホストと通信するには、L3スイッチ等を介する必要があり、外部のネットワークにインターネットを通じてアクセスするには、ネットワーク・アドレス変換(NAT:Network Address Translation)機能を持つルータ等を経由する必要があるということ:筆者注)。
これに対して、グローバル・アドレスを持つホストは、もちろんネットワーク内のどのホストとも通信することができ、ネットワーク外のグローバル・アドレスを持つパブリック・ホストに対してもIP接続性を持つことができる。しかし、パブリック・ホストはネットワーク外のプライベート・アドレスを持つホストには接続することができないのである。
要約すれば、以上のようになるが、企業においてもプライベート・アドレスが活用されているのは、IPv4アドレスが不足しているからというだけでなく、このようなプライベート・アドレスの特性がセキュリティ上有用であるからとも言われている。
五、
また、特別な意味を持つIPv4アドレスとして、2進数でホスト部がすべて0となるアドレスは、ネットワーク・アドレスと呼ばれ、当のネットワーク自体を指す場合に使用され、ホスト部がすべて1となるアドレスは、ブロードキャスト・アドレスといい、そのネットワーク内のすべてのホストにパケットを送信するために使用される。この2つのアドレスは個々のホストには割り当てできないことになっている。試しに、Windowsで「192.168.0.0」や「192.168.0.255」と入力し、OKをクリックしても、警告と共に再入力が促されるだけである。
ところで、手動でIPアドレスが設定されておらず、しかもDHCPサーバからのアドレス取得に失敗した場合に、自動的に169.254で始まるクラスBのIPアドレス(169.254.0.0/16)が割り当てられる(Microsoftなどでは、この機能をAPIPA:Automatic Private IP Addressingと言う。)。これは、リンクローカル・アドレス(link-local address)と呼ばれ、外部と接続されていない単一のネットワーク内のみの利用を想定した、ルーティングできないアドレス空間として定義されているので、このアドレスが割り当てられた機器は、ネットワークを超えて外部のインターネット等に接続できない。そのため、リンクローカル・アドレスは、インターネット等に一切接続することなくネットワーク内でのみ情報をやり取りする必要がある場合を除いて、ほとんど実用性はないようである。ただ、通常DHCP(Dynamic Host Configuration Protocol)によってIPアドレスが割り当てられるように設定しているにもかかわらず、リンクローカル・アドレスが割り当てられているといった場合には、このリンクローカル・アドレスは、ネットワーク上においてDHCPの機能を阻む何らかの不具合が生じていることを示す指標になろう。
なお、 ICANNの持つIPv4アドレスの在庫が枯渇した現在でも、IPアドレスといえば、IPv4アドレスを指すのが一般のようなので、ここでもそれに従うことにする。IPv6アドレスが普及し、安定的に使用できるようになるには、まだしばらくはかかりそうである。
しかし、それにしても、と思う。IPv6アドレスを128bitにまでする必要があったのだろうか、と。
【追記】:
否、2013年現在この地球に生きる者の誰一人も見届けることのできない200年後、300年後においてもおそらく枯渇しないであろうIPアドレスを策定しておくことは、それが地球規模で時代を超えて利用される可能性のある基盤システムである限り、そのシステムを生み出した時代の責務といえるかもしれない。