IPアドレスはインターネット上の住所

 IPアドレスはコンピュータをインターネット上で一意に識別するための番号です。powershellで"ipconfig /all"というコマンドを実行してみて下さい。イーサネットアダプターローカルエリア接続というブロックにあなたのコンピュータのIPアドレスが表示されます。IPアドレスはVersion4とVersion6がありますが、この章ではVersion4について説明します(Version6については別の章で説明します)。IPv4アドレスという部分を見て下さい。"."で区切った10進数が4つ並んでいると思います。この表示の仕方をドット区切り10進表示と言います。一緒にサブネットワークマスクという表示も見えると思います。





1 IPアドレスってどんな数字

 IPアドレスは"."(ドット)で区切った4つの10進数が並んだものです。1つ1つの10進数は0~255の範囲に決まっています。これは元々2進数です。2進数で0~255までを表示できるのは8ビットの2進数です。つまり、IPアドレスは元々32ビットの2進数でそれを、8ビットずつにして、それを10進数に直して、それを"."でくっつけたものです。例えば、192.168.0.1のようになります。8ビットは1オクテット(Octet)とか1バイト(byte)と言います。通信系の人はオクテット、情報系の人はバイトというのが普通です。



2 IPアドレスは階層構造を持っている

 MACアドレスとIPアドレスはともにマシン(具体的にはNIC)を識別するためのアドレスです。共に世界で1つの識別子です(ただし、IPのプライベートアドレスは例外)。しかし、階層構造を持っているかどうかでIPアドレスとMACアドレスは区別されます。

 IPアドレスはネットワークアドレスを表す部分と、ホストのアドレスを表す部分に分かれます。これをIPアドレスは階層構造を持っていると言います。これに対して、MACアドレスは平面構造です。MACアドレスは世界で唯一の番号ですが、そのMACアドレスを持ったマシン(NIC)がどこにあるのかは分かりません。世界で唯一の番号でも、その番号を持ったマシンがどこにあるのか分からないので、通信は出来ないのです。これに対してIPアドレスはネットワークを表す部分とホスト(ここでは、ネットワークに接続したコンピュータのこと)を表す部分に分かれます。ネットワークの数は、ホストの数と比較すると格段に少ないので、管理をすることが出来ます。管理をしているのはルータという通信機械です。ルータはルーティングテーブルという設定ファイルを持っていてその中でネットワークのアドレスを管理しています。このルーティングテーブルを使うと、どのマシンが大体どのあたりにいるので、こんな風にルーティングすればいいだろうということが大体わかるのです。ルータはそれに従ってパケットを運んでいます。初めはネットワークアドレスだけでルーティングを行い、宛先ネットワークに到達したら、ホストのアドレスを使って、宛先コンピュータにデータを届けます。


3 ネットワークアドレスの長さはクラス毎に異なる

 IPアドレスのどこにネットワークのアドレスが潜んでいるのでしょうか。実はどことは言えません。大雑把にいうとIPアドレスの上位ビットの方です。上位ビットから何ビット目までかがネットワークのアドレスを表すのです。何というあいまいな決め方でしょうか。こんなことでルーティングが出来るのかなと思うことでしょう。しかし、出来るのです。それはIPアドレスの上位ビットの並びで、どこまでがネットワークアドレスを決めているのです。では具体的に説明をします。その前にがっかりさせるようですが、今はこの方式は使われていません。今は、サブネットワークマスクと一体となった方法が採用されています。しかし、インターネットの初めに採用された方式を理解しておくことは今後の話を理解する上で役に立ちますので是非学んでください。

 インターネットの初期に採用された方式は、IPアドレスの上位ビットの並びでA~Eクラスに分け、クラス毎に上位何ビット目までがネットワークアドレスを表すと決めるというものです。次はクラスの決め方です、よく使うのがA~Cクラスですので、A~Cクラスについて説明します。

最初の数ビットでクラスが決まる
最上位ビットが"0"ならAクラス、"1"ならB~Eクラス
上位2ビットが"10"ならBクラス、"11"ならC~Eクラス
上位3ビットが"110"ならCクラス、"111"ならDかEクラス

 これを図解すると次のようになります。

第1オクテット 第2オクテット 第3オクテット 第4オクテット
クラスA 0xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
クラスB 10xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
クラスC 110xxxxx xxxxxxxx xxxxxxxx xxxxxxxx
クラスD 1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx
クラスE 1111xxxx xxxxxxxx xxxxxxxx xxxxxxxx

 クラスAは第1オクテットまでがネットワークを表します。クラスBは第2オクテットまでがネットワークです。クラスCは第3オクテットまでがネットワークを表します。クラスDはマルチキャストを表し、クラスEは実験ネットワークを表します。2進数では分かりにくいので、第1オクテットを10進数に直して次に示します。 

クラス 第1オクテットの2進表現 第1オクテットの10進の範囲
A 0??????? 1~126
B 10?????? 128~191
C 110????? 192~223
D 1110???? 224~239
E 1111???? 240~255


 IPアドレスからクラス概念を使って、ネットワークアドレスを取り出す場合は、ホストアドレスの部分は全部「0」となります。

 ホストアドレスの部分が全部0のIPアドレスはネットワークに割り当てるためのもので、個々のホストには付けることができません。また、ホストアドレス部が全部「1」というアドレスもホストのアドレスとしては使うことができません。これは、ネットワーク内の全ホストを相手としてブロードキャストを行う場合に使うものと予め決められています。

 ブロードキャストは同じネットワークを共有している(同じネットワークアドレスを持っている)全ホストを宛先としてパケットを配信する場合に利用します。つまり、ラジオやテレビのように同時に全部の相手に送信するので「ブロードキャスト(broadcast、放送)」といいます。

同じネットワークアドレス部を持つコンピュータは仲間

同じネットワークアドレス部を持つコンピュータは同一ルータの1つのインターフェースの下にある。この範囲(領域、ドメイン)にはブロードキャストが届くので、この領域をブロードキャストドメインという

《練習問題 1》
次のIPアドレスからクラスの概念を使用して、ネットワークアドレス部を抽出しなさい。
1) 15.9.8.200
2) 145.12.8.3
3) 195.45.6.7
4) 200.1.1.5

《練習問題 2》
次のIPアドレスのうちブロードキャストアドレスを選びなさい。ただし、クラスの概念を使うこと。
1) 15.255.255.255
2) 146.24.20.255
3) 193.165.255.255
4) 125.34.255.255



4 特殊用途のためのアドレス

 前節の「クラスAの第1オクテットの10進の範囲」のところで127が抜けていることに気がついた人がいると思いますが、どうして抜けているのでしょうか。実は127は自分自身を指すために特別に留保されている番号で、ローカル・ループバック・アドレスと呼ばれています。どうして、自分自身を指す番号が必要なのでしょうか。この番号は、自分自身(マシン)のTCP/IPが有効に機能しているかを確認するために使用します。自分自身(127.0.0.1)を宛先にして、通信をするとTCP/IPが有効なら、パケットを外に出さずに自分自身に対して折り返し通信を行います。powershellを使って、自分にpingコマンドを実行してみてください。TCP/IPが有効に機能していれば、返事が返ってくると思います。

 ローカル・ループバック・アドレスは127.0.0.1というのがよく利用されますが、最上位バイトが127でありさえすれば十分で、実際には127.0.0.1~127.255.255.254の範囲ならどのアドレスでも利用可能です。ただし、127.255.255.255はブロードキャストアドレスのために除外されます。「localhost」は127.0.0.1と同じ意味で利用されます。C:\windows\system32\drivers\etc(64ビットマシンの場合はsystem64)のフォルダにhostsというファイルがありますので、cat、あるいはtypeコマンドを使って閲覧してください。中に、"127.0.0.1  localhost"と定義されているのを確認することができると思います。



5 クラスと構築可能なネットワーク数、ホストの収容数

 今までに説明した約束事に従って、各クラスで構築可能なネットワーク数と、1つのネットワークに収容可能なホストの数を計算してみました。

クラス 第1オクテットの範囲 ネットワークの数 1ネットワークあたりのホストの収容数
A 1~126 126個 16,777,214台
B 128~191 16,384個 65,534台
C 192~223 2,097,152個 254台

 第1オクテットの00000000は使わないことにしました。127は既に説明したとおり、特別な意味を持ちますので、除外しました。また、ホストアドレス部が全部0と全部1のものはそれぞれネットワークアドレス、ブロードキャストアドレスですので、除外してあります。したがって、クラスAの1つのネットワーク当たりの収容数は2^24-2=16,777,216-2=16,777,214台となります。クラスBでは2^16-2=65,536-2=65,534台となります。

 クラスAのネットワークでは、16,677,214台のホストを理論上は収容できます。LANでは物理ネットワークはイーサネットのことがほとんどですので、イーサネットだと仮定して話を進めます。イーサネットは回線共有タイプのネットワークですので、共有線をみんなで協調して利用します。イーサネットは一度に複数のコンピュータが回線を利用しようとすると信号が衝突してしまいます。従って、どんなに多く見積もっても1つのバスに250台程度のコンピュータしか収容できません。16.677.214台のうちの残りの16,676,964台分はどこか他のネットワークで利用できるでしょうか。それは絶対にできません。ということは、この約16,677,000台分のアドレスは無駄になってしまいます。無尽蔵にあるのだからそれくらい大丈夫と思った人もいると思います。しかし、それがそうではないのです。IPアドレスは既にほとんど使い切っていて、残りはほんのわずかです。無駄に使うことはできないのです。



6 有効利用の決め手はサブネットワークマスク

 IPアドレスが足りないのでIPアドレス空間を何とかして有効に使いたいと思います。解決策としては、いくつかあります。根本的な解決策は別のもっと大きなアドレス空間を作るというものです。このアイデアの元に開発されたのがIPv6アドレス空間です。IPv6では128ビットでアドレスを表現しますので、湯水のごとく無駄遣いしても大丈夫です。しかし、このアドレスは今のIPアドレス(IPv4)と互換性がありませんので、すぐに取り替えるというわけには行きません。IPv6についてはまた別の章で説明します。2つ目は、アドレスの重複を認めることです。この考え方は、アドレスの重複を認めないドメインと、アドレスの重複を認めるドメインを使い分けて、効率を上げるというものです。実際に企業などのLANでは利用されています。これについては、後ほどこの章で説明します。3つ目は、ネットワークアドレスの部分の長さを適切に調節可能なものとして扱うというものです。この節ではこの考え方について詳しく説明します。

 クラスによってネットワークを決める方法ではあまり柔軟性がありませんでした。ネットワークの大きさをもっと柔軟に調整できれば、IPアドレス空間はもっと有効に利用できるはずです。この考え方を可能にしているのがサブネットマスクという概念です。powershellで"ipcoonfig /all"というコマンドを実行してみてください。IPv4アドレスとともにサブネットマスクが表示されます。サブネットマスクは255.255.255.0のようなものです。これを2進数で表示すると、上位ビットから1がずらっと並び、その後に0が続きます。1の並びの長さをプレフィックス長といいます。

 プレフィックス長を利用すると、IPアドレスの上位何ビットまでがネットワークアドレスを表すかの定規として利用することができます。IPアドレスにプレフィックスという定規を当ててネットワークアドレスを切り出す方法について次に説明します。この際に利用するのがAND計算というものです。AND計算の規則は0 (AND) 0=0、0 (AND) 1=0、1 (AND) 0=0、1 (AND) 1=1です。それでは、IPアドレスが、150.10.24.30でサブネットマスクが255.255.240.0の時のネットワークアドレスを計算してみたいと思います。

IPアドレス(10進) 150 10 24 30
IPアドレス(2進) 1 0 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0
マスク 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
ネットワークアドレス(2進) 1 0 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
ネットワークアドレス(10進) 150 10 16 30

 サブネットマスクの計算ではプレフィックス長が大切です。マスク(の1)が伸びている桁までは、IPアドレスのビットがそのまま、ネットワークアドレスのビットなります。マスクが0の部分の桁は、ネットワークアドレスのビットは全て0となります。

 ネットワークアドレスの表し方としては、IPアドレスとサブネットワークマスクと併記する形と、IPアドレスの最後に"/"に続けてプレフィックス長を追加する方式があります。次の表記はどちらも同じ意味になります。

150.10.24.30 サブネットマスク 255.255.240.0
150.10.24.30/20


 次にプレフィックス長とサブネットマスクの対応表を示します。

クラス プレフィックス長 サブネットマスク ホストの収容数
クラスA /8 255.0.0.0 16777214
/9 255.128.0.0 8388606
/10 255.192.0.0 4194302
/11 255.224.0.0 2097150
/12 255.240.0.0 1048574
/13 255.248.0.0 524286
/14 255.252.0.0 262144
/15 255.254.0.0 131070
クラスB /16 255.255.0.0 65534
/17 255.255.128.0 32766
/18 255.255.192.0 16382
/19 255.255.224.0 8190
/20 255.255.240.0 4094
/21 255.255.248.0 2046
/22 255.255.252.0 1022
/23 255.255.254.0 510
クラスC /24 255.255.255.0 254
/25 255.255.255.128 126
/26 255.255.255.192 62
/27 255.255.255.224 30
/28 255.255.255.240 14
/29 255.255.255.248 6
/30 255.255.255.252 2

 /30はポイントツーポイントの接続のときに利用します。/30では2^2=4となりますが、00はネットワークアドレス、11はブロードキャストアドレスに使われますので、実際に利用できるのは2個となります。従って/31は2つのアドレスはともにネットワークアドレス、ブロードキャストアドレスとして使われ、ホストアドレスとしては1つも残っていないということになります。


 サブネットワークマスクを使うと、150.10.0.0/16のようなネットワークを150.10.0.0/24、150.10.1.0/24、15.10.2.0/24・・・のように分割することができます。もちろん分割すると、異なるサブネットワークに分かれますので、ルータを経由しないと通信を行うことができません。また、192.168.16.0/24~192.168.31.0/24のようなネットワーク群を192.168.16.0/20のような1つのネットワークにまとめてしまうこともできます。このようにサブネットマスクを使ってインターネット上のルータのルーティングテーブルで効率的なルート集約を行うという考え方をCIDR(Classless Inter-Domain Routing、通常サイダーと呼びます)と言います。もちろんこの場合には、このネットワーク群は物理的に1つのルータの1つのインターフェースの先にまとまって存在するというような条件がないと意味がありません。

  オクテット毎の2進表示    
IPアドレス 第1 第2 第3(上位4ビット) 第3(下位4ビット) 第4
192.168.16.0 11000000 10101000 0001 0000 00000000
192.168.17.0 11000000 10101000 0001 0001 00000000
192.168.18.0 11000000 10101000 0001 0010 00000000
192.168.19.0 11000000 10101000 0001 0011 00000000
192.168.20.0 11000000 10101000 0001 0100 00000000
192.168.21.0 11000000 10101000 0001 0101 00000000
192.168.22.0 11000000 10101000 0001 0110 00000000
192.168.23.0 11000000 10101000 0001 0111 00000000
192.168.24.0 11000000 10101000 0001 1000 00000000
192.168.25.0 11000000 10101000 0001 1001 00000000
192.168.26.0 11000000 10101000 0001 1010 00000000
192.168.27.0 11000000 10101000 0001 1011 00000000
192.168.28.0 11000000 10101000 0001 1100 00000000
192.168.29.0 11000000 10101000 0001 1101 00000000
192.168.30.0 11000000 10101000 0001 1110 00000000
192.168.31.0 11000000 10101000 0001 1111 00000000

 上の表から192.168.16.0/24~192.168.31.0/24は上位20ビットが共通であることが分かります。このような場合は、192.168.16.0/20というように集約することができます。この場合は、これが1つのサブネットワークになりますので、ハブあるいはスイッチで接続することができるようになります。

 サブネットマスクの概念が導入されたとしても、今までのクラス概念によるネットワーク構成でいいという場合も同然あると思います。このようなクラスのときと同じ大きさを表すマスクをデフォルトマスクといいます。

※ルートの集約をしようと思っても集約したアドレスブロック全体がある特定のルータの先になくては意味がない。たとえば、東京都の港区の一部が、島根県の隠岐の島にあったり、北海道の知床半島にあったりしたのでは、東京都港区宛ての郵便物を一箇所に集約してから配達するということができない。ところがIPアドレスはインターネットの初期にルーティングへの配慮なしにいい加減に割り当てられてしまったために、ルートの集約が難しく、ルーティングテーブルが爆発的に肥大化している。これはインターネットのルーティングの遅延の原因の1つとされる。


≪練習問題 3≫
 IPネットワーク上のホストのIPアドレスが155.15.120.45でサブネットマスクが255.255.240.0である。このホストの配置されているサブネットワークのネットワークアドレスとこのサブネットのブロードキャストアドレスを求めなさい。

≪練習問題 4≫
 IPネットワーク上のホストのIPアドレスが155.15.120.45でサブネットマスクが255.255.255.240だとする。このサブネットのホストアドレスの範囲を求めなさい。

≪練習問題 5≫
 クラスCのネットワークを少なくとも12個のサブネットワークに分けたい。各サブネット上で出来るだけ多くのホストを収容できるようにするには、どのようなサブネットマスクを使えばよいか。




7 ユニキャスト、マルチキャスト、ブロードキャスト

 コンピュータネットワークでの通信は相手の数によってユニキャスト、マルチキャスト、ブロードキャストに分けられます。

通信方式 説明
ユニキャスト 宛先アドレスとして単一のアドレスを指定して1対1で行う通信
マルチキャスト 複数の宛先を指定して1対複数で行う通信
ブロードキャスト 物理ネットワーク内の全宛先を指定して行う1対全の通信

 ユニキャスト(unicast)通信は相手を指定して1対1で行う通信です。標準的な通信方法で、Webサイトの閲覧、電子メールの送受信などは通常この方式で行われます。

 マルチキャスト通信はクラスDのアドレス(224.0.0.0~239.255.255.255)をを使って、特定のグループに所属するコンピュータにデータを送る送信方法です。テレビ会議システムや動画配信などに利用されています。マルチキャスト対応のルータに1つのパケットを送信すれば、ルータが必要な数だけコピーして送信してくれますので、ネットワークが輻輳するのを防いでくれます。

マルチキャスト未対応ルータの場合
マルチキャスト未対応のルータの場合は、受信相手分のパケットを重複して送信しなくてはならない
マルチキャスト対応ルータの場合
ルータが必要な数だけパケットをコピーしてくれる

 ブロードキャス通信は、LAN上の全てのコンピュータにデータを送信する方法です。相手が分からない段階でパケットを送信しなくてはならないことがありますので、そのような場合に利用します。たとえば、ARPでMACアドレス要求を行う場合とか、DHCPサーバを探す場合などにはブロードキャストがあると便利です。




8 アドレスの管理

 インターネット全体を明示的に管理している人あるいは組織は存在しないということを以前言いましたが、IPアドレスのような資源は誰かが管理しなくてはなりません。IPアドレスの管理を任されている組織は「インターネットレジストリ」と呼ばれています。
 インターネットレジストリは階層構造を元にして管理されています。当初はIANA(Internet Assigned Numbers Authority、通称はアイアナ)をトップとする管理体制でしたが、その後ICANN(Internet Corporation for Assigned Names and Numbers)という団体が、IANAを引き継ぐ形で設立され、現在IANAはICANNの一部門として存続しています。
 ICANNは、IPアドレスやドメイン名、AS番号、ポート番号、パラメータ番号など、インターネット通信において識別情報として用いられる各種情報資源を一元管理し、割り当てや改廃、調整、運用のルールの策定などを行っています。

 IANAは全世界のIPアドレスを管理しています。その配下に地域単位で管理を行うRIR(地域インターネットレジストリ)があり、その下にLIR(ローカルインターネットレジストリ)と呼ばれるレジストリが存在しています。IPアドレスの分配は、この管理階層に従って、IANAからRIR、RIRからLIR、そしてLIRから実際のネットワークという流れで行われています。
 一部の国では、国単位でアドレス管理を行うNIR(国別インターネットレジストリ)が存在し、RIRとLIRの間に入っている場合もあります。日本では、JPNICがNIRとして管理を行っています。日本では、「IPアドレス管理指定事業者」と呼ばれる組織が、LIRとしての役割を果たしています。LIRからエンドユーザ、あるいはLIRからISP経由でエンドユーザに配布されています。

APNIC

JPNICへの割り振り
例:150.0.0.0/8 
IANA(ICANN)

IPアドレス空間をパイに例えるとIANAはパイを丸ごと管理し、各RIRに切り分ける
割り振り JPNIC(審議)
      プロバイダ(指定業者) 
150.100.0.0/22
割り振り
       各組織
150.100.0.24/29  




9 プライベートIPアドレス

 IANA経由で配布されるIPアドレスをグローバルIPアドレスと言います。グローバルIPアドレスは世界で唯一のものでなくてはなりません。しかし、グローバルアドレスはに限りがあります。そこで考えられたのが重複して使えるアドレスです。これをプライベートアドレスといます。ただし、プライベートアドレスはインターネットの通信では使わない約束になっています。重複したプライベートアドレスでインターネット接続を行うと通信が混乱しますので、プライベートアドレスのついたパケットが外に出ようとしてもルータはこれを破棄してしまいます。RFC1918は次のようにプライベートアドレスを指定しています。

クラス アドレスの範囲
A 10.0.0.0~10.255.255.255
B 172.16.0.0~172.31.255.255
C 192.168.0.0~192.168.255.255

 プライベートアドレスではインターネットの通信は出来ません。皆さん自分のパソコンのpowershellで"ipconfig /all"というおなじみのコマンドを実行してみて下さい。自宅の場合は、多分192.168で始まるプライベートアドレスが使われているのではないかと思います。でも、自宅でインターネットを出来ますよね。どういうわけでしょうか。その答えはNAT(Network Address Translation)です。NATはプライベートアドレスとグローバルアドレスの変換を行うことで、プライベートアドレス空間からインターネット接続を可能にしています。NATがどのように機能するのかについてはまた後で詳しく説明したいと思います。




更新履歴

2016/02/05 作成


練習問題の解答
1 1)15.0.0.0 2)145.12.0.0 3)195.45.6.0 4)200.1.1.0

2 ブロードキャストアドレスは、1)の15.255.255.255と、3)の193.165.255.255

3 155.15.120.45を2進表示すると、「10011011.00001111.01111000.00101101」となる。サブネットマスクを2進表示すると「11111111.11111111.11110000.00000000」となるので、同じ桁同士のAND計算で、「10011011.00001111.01110000.00000000」を得ることが出来る。従って、ネットワークアドレスは、155.15.112.0となる。また、ブロードキャストアドレスは、下位12ビットを全て1とすればよいので、「10011011.00001111.01111111.11111111」となる。従って、155.15.127.255となる。少し慣れたら、全部を2進表示する必要はない。プレフィックス長がどこまで伸びているかを考えて、そのプレフィックスの最先端があるオクテットのみを2進表示すれば答えは得られる。

4 プレフィックスの最先端は第4オクテットにあるので、155.15.120.45の第4オクテットだけ2進表示すると、「155.15.120.00101101」となる。サブネットマスクを第4オクテットだけ2進表示すると、「255.255.255.11110000」となるので、同じ桁同士のAND計算で、155.15.120.00100000(155.15.120.32)を得ることが出来る。これがサブネットワークのアドレスとなる。このサブネットワークのホストのアドレスは第4オクテットの下位4ビットの0001~1110(0000はサブネットのアドレス、1111はブロードキャスト)なので、1~14をサブネットワークアドレスの第4オクテットの32に加えればよい。従って、155.15.120.33~155.15.120.46となる。

5 クラスCのデフォルトのマスクは255.255.255.0である。サブネットワークを12個作るには更にいくつプレフィックス長を伸ばせが良いか考える。3ビット伸ばせば、8個のサブネットが出来る(000、001・・・110、111 ※ただし、000と111が使えるかはルータによる)、4ビット伸ばすと16個のサブネットが出来る。もっと伸ばすこともできるが、出来るだけ多くのホストを収容できるようにという条件があるので、伸ばすのは4ビットとなる。従って、マスクは255.255.255.240となる。























































































 ページの先頭