IPアドレスとは(1) ~ クラスとドメイン ~

ンターネットの基礎となるTCP/IPプロトコルについては、TCP/IPとは で学習のとおり、TCPOSI参照モデルの第4層、IPが第3層に位置していました。

特にIPは「Internet Protocol(インターネット プロトコル)」の文字どおり、インターネットにおけるパケット通信の基礎となるプロトコルであり、TCPがそれを補完する役割を担っています。

IPはインターネットのネットワークを流れるパケットの通信経路の選定、ルーティングを行います。したがって、インターネットはIPによって接続されたIPネットワークと言い換えることができます。

プロトコルとは でも詳しく学習したとおり、ネットワークで通信するためには、データを送信する先のスイッチやルータ、PCなどの機器の情報を認識していなければなりません。何もわからない宛先に届けられないからです。

閉じたネットワークである同一セグメント内のLANでは、第2層での通信となり、製造段階で割り当てられたその機器固有の「MACアドレス」が識別情報として使われていました。

インターネットでの通信になると、第3層で通信が行われます。インターネットは開かれたネットワークとはいえ、異なるセグメントのLANの集合体でもあります。したがって、異なるネットワーク間での通信を規定した第3層の通信になります。

第3層で使われる識別情報は、

IPアドレス(アイピーアドレス)

になります。

インターネットはIPネットワークと同義である意味がここに表れています。

IPアドレスは、世界で唯一のユニークな番号であり、インターネット上の通信機器やPCの住所となります。唯一ということは当然、重複した数字を使用することはできません。

無数の機器やコンピュータが接続されたインターネットで、それぞれが重複しない世界唯一のアドレスでなければならないのです。途方もないことだと想像がつくでしょうか。

そして、MACアドレスは書き換え不可であるのに対し、IPアドレスは自由に設定することができます。この理由については学習をすすめていくと理解できるはずです。

また、URI で解説したURIもインターネット上の住所だと解説しましたが、URIは「表記方法」であり、IPアドレスを表記し直したものがURIURIの責任者部までのパス部以外の部分)になります。

では、具体的にIPアドレスの詳細を学習していきましょう。

IPアドレスには大きく「バージョン4」と「バージョン6」の2種類があります。詳しくは後述しますが、基礎となるアドレスはバージョン4で、ここではバージョン4について学習していきます。(厳密にはIPv4とIPv6ですが詳しくは後述します)

IPアドレスは「32桁」の2進数で表されます。

32桁の「0」と「1」の2進数で重複しない値をそれぞれに割り当てます。そのため、2の32乗で単純計算して、約43億通りの重複しない値(アドレス)が作成可能です。

43億通りと聞いて多いと思うでしょうか?少ないと思うでしょうか?この問題については次項で詳しく学習しますが、IPアドレスは32桁で表されることになっています。

例えば、32桁の2進数は下記のようになります。

11011011000010011110011000001011

桁数がこれだけあると、とても覚えられず人間には扱いきれせん。

そこでIPアドレスの表記は、

32桁を4ブロックに区切り、さらに2進数から10進数に変換して表記する

ようになっています。

例えば、「210.9.230.13」といった具合です。

10進数で表現すれば人間にもかなり理解しやすくなります。

IPアドレスの変換イメージ

このように、32桁を4ブロック8桁に区分けするということは、1バイト(8ビット)の数字が使用できます。つまり、2の8乗で、256文字分が使用できることになります。

したがって、IPアドレスは「0」から「255」までの4つの10進数で表現することができます。(進数の変換については、2進数と10進数と16進数 を参照してください)

そして、ここからが重要なのですが、IPアドレスは世界で唯一のユニークな番号であるため、何の規則性もなく適当に割り当てられているわけではありません。

MACアドレスにも左半分がメーカー番号、右半分が識別番号という規則性がありました。IPの場合も同様に、4つのブロックに意味を持たせています。

4つの各ブロックを「オクテット」と呼び、オクテットを「ネットワークアドレス部」と「ホストアドレス部」に区切っています。

ネットワークアドレス部でネットワークの種類を、ホストアドレス部でそのネットワークに接続されたホストの識別番号を表します。(IPネットワークではIPアドレスを割り当てられたコンピュータや機器を「ホスト」と呼びます)

そのため、複数のコンピュータにIPアドレスを割り当てる場合、ネットワークアドレス部の数値は同じで、ホストアドレス部にそれぞれ固有の異なる数値を割り当てることになります。

こうすることによって、ネットワークアドレス部でそのネットワークの属性を表しつつ、IPアドレス自体は固有の番号を作成することが可能になります。

例えば、上図の「219.9」までの部分をそのネットワーク固有の番号として固定し、以下の「230.13」の部分を重複しない値で割り当てます。すると「219.9」のセグメントだなと一目で理解でき、IPアドレス全体としても重複しません。

ただし、割り当てるIPアドレスが数台なのか数百台なのか、または千台、万台単位なのかによって話は変わってきます。

例えば、第3オクテットまでをネットワークアドレス部とした場合は、残りが第4オクテットしかなく、256台までしか固有の番号を割り当てることができないからです。

そのため、ネットワークアドレス部とホストアドレス部の区切り方は一律ではなく、4つのオクテットのうちどこで区切るかは、割り当てるネットワークの大きさ(接続台数)によって変わります。

この大きさの違いによる種類分けを「クラス方式」と呼びます。

クラスA、クラスB、クラスCの3つのクラス

に分類されています。(さらに細かい分類もありますが本項では割愛します)

クラスAは、1つ目と2つ目のオクテットの間で区切ります。上の図で言うと「219」と「9」の間です。

同様にクラスBは、2つ目と3つ目のオクテットの間「9」と「230」の間で区切り、クラスCは、3つ目と4つ目のオクテットの間「230」と「13」の間で区切ります。

このように3つのクラスに分けることで、例えば「あなたのネットワークはクラスA、ネットワークアドレス部は10番を使用してください」といった効率的なアドレス提供が可能になります。

IPアドレスを管理している国際機関「NIC:Network Information Center」(日本では「JPNIC」)によって、ネットワークの規模に応じたクラスのIPアドレス帯が、国、組織、プロバイダ等に割り当てられています。

接続台数が多いネットワーク(クラスAなど)では、ネットワークアドレス部を少なくしてホストアドレス部を長くすることで、より多くのホストを接続することができます。

逆に、接続台数が少ないネットワーク(クラスCなど)では、ネットワークアドレス部を長くして無駄なアドレスがあまり出ないようにすることができます。

これは電話番号の「市外局番」と同じで、IPアドレスを体系的に無駄なく利用するための方法です。(都心部では市外局番が2桁で短いが田舎では4桁になることもある)

では、各クラスについて、もう少し詳しくみていきましょう。

クラスAは、第1オクテットと第2オクテットの間で区切ります。

クラスAのイメージ図

クラスAは、最上位のビットが「0」に決められています。そのため最上位の「0」が固定となり、第1オクテットは実質7ビットとなります。(最上位に「1」が入るとクラスAでアドレスを全て使い切ってしまいます)

したがって、2の7乗で「128通り」(0~127まで)がネットワークアドレス部となり、残り3オクテット「256通り」(0~255まで)の3乗がホストアドレス部となります。

具体的には、「0.0.0.0.0」~「127.255.255.255」までをクラスAで使用することができます。ホストには3オクテット使えるので、256の3乗で「16,777,216」台まで同一ネットワークにホストを接続することができる計算になります。

ただし、ホストアドレス部が全て「0」および「1」は特殊なアドレスのため使用できません。マイナス2の「16,777,214」が実質数になります。

これが128クラスなので、約21億通りのアドレスを表現することができます。(全アドレスの約半分になる巨大なクラスです)

次は、クラスBです。

クラスBは、第2オクテットと第3オクテットの間で区切ります。

クラスBのイメージ図

クラスBは、最上位の2ビットが「1」「0」に決められています。そのため最上位から「10」が固定となり、第1オクテットは実質6ビットとなります。

したがって、2の6乗で「64通り」(0~63まで)×「256通り」がネットワークアドレス部となり、残り2オクテット「256通り」の2乗がホストアドレス部となります。

具体的には、第1オクテットは「127」までクラスAで使用しますので、次の「128」を含めて「64」個分の「191」までを使用することができます。「128.0.0.0」~「191.255.255.255」までをクラスBで表現することができます。

ホストには2オクテット使えるので、256の2乗で「65,536」台まで同一ネットワークにホストを接続することができる計算になります。

ただし、ホストアドレス部が全て「0」および「1」は特殊なアドレスのため使用できません。マイナス2の「66,534」が実質数になります。

これが「64×256」の「16,065」クラスなので、約10億通りのアドレスを表現することができます。(全アドレスの4分の1に当たります)

最後に、クラスCです。

クラスCは、第3オクテットと第4オクテットの間で区切ります。

クラスCのイメージ図 

クラスCは、最上位の3ビットが「1」「1」「0」に決められています。そのため最上位から「110」が固定となり、第1オクテットは実質5ビットとなります。

したがって、2の5乗で「32通り」(0~31まで)×「256通り」×「256通り」がネットワークアドレス部となり、残り1オクテット「256通り」がホストアドレス部となります。

具体的には、第1オクテットは「191」までクラスBで使用しますので、次の「192」を含めて「32」個分の「223」までを使用することができます。「192.0.0.0」~「223.255.255.255」までをクラスCで表現することができます。(「224」以降は、クラスDおよびクラスEとして特殊なアドレスに予約されていますので、本項では割愛します)

ホストには1オクテット使えるので、8ビット「256」台まで同一ネットワークにホストを接続することができる計算になります。

ただし、ホストアドレス部が全て「0」および「1」は特殊なアドレスのため使用できません。マイナス2の「254」が実質数になります。

これが「32×256×256」の「2,097,152」クラスなので、約5億通りのアドレスを表現することができます。(全アドレスの8分の1に当たります)

こうしてクラスが決定されると、IPアドレスはネットワーク部とホストアドレス部が決定します。

しかし、実際にはクラスAやクラスBのように、同じネットワークに1,600万台、もしくは65,000台ものホストを接続するなどということはまずあり得ません。

仮に「1000万台」のネットワークを構築する場合はクラス「A」となりますが、残りの「600万」のアドレスはどうなるのでしょうか?

クラス方式では、ネットワークアドレス部が同じ番号であれば同一ネットワークになってしまうため、ホストアドレス部の番号の余りを他のネットワークで利用することはできません。要するに「無駄」となるわけです。

例えば、阪神社にはクラスCの「200.200.200.1~200.200.200.150」までを、巨人社には続きの「200.200.200.151~200.200.200.255」までを割り当ててしまうと、阪神社と巨人社は同一ネットワークに属することになってしまいます。

また、それぞれのクラスで接続可能なホスト数に差がありすぎます。普通の会社や学校等で構成するネットワークでは、ほどんどがクラスCの254台で足りてしまいます。

そもそも254台でも多い場合がほどんどで、数台のホストしか接続しないネットワークでもクラスCの254台分のIPアドレスをもらわなければなりません。かなりの無駄が生じるわけです。

その結果、クラスAやクラスBのアドレスが大量に余り、逆にクラスCのアドレスが不足してきました。クラス方式は見通しが甘かったということです。

そこで、この3つのクラスのネットワークを「分割」して、配下に「サブネットワーク」を作る方法が考え出されました。

その方法が、

サブネットマスク

という方法です。

サブネットマスクは、IPアドレスを単純にクラスで分割するのではなく、より細かく区切ることができるようにするための識別子で、何ビットのホストアドレス部でも作れるという優れものです。

サブネットマスクは「マスク」の文字どおり、ネットワークアドレス部をマスク化するという意味で、ネットワークアドレス部にあたるビットに「1」を立ててマスク化し、ホストアドレス部には「0」を立てます。

つまり、「1」のビットが立っている部分とそうでない部分とで、ネットワークアドレス部とホストアドレス部を区切るわけです。下図は、具体的にクラス分類をサブネットマスクで表記した表です。

サブネットマスクとクラス
クラス 2進数 10進数
クラスA 11111111.00000000.00000000.00000000 255.0.0.0
クラスB 11111111.11111111.00000000.00000000 255.255.0.0
クラスC 11111111.11111111.11111111.00000000 255.255.255.0

単純にクラス分類を表記すると上記のようになりますが、連続していれば32桁のビット列のどの部分でもマスク化することができます。この方法で、何ビットのホストアドレス部でも作れるようになります。

サブネットマスクとサブネットワーク
2進数 10進数 ホスト数
11111111.00000000.00000000.00000000 255.0.0.0 16,777,214
11111111.10000000.00000000.00000000 255.128.0.0 8,388,606
11111111.11000000.00000000.00000000 255.192.0.0 4,194,302
11111111.11100000.00000000.00000000 255.224.0.0 297,150
途中省略 途中省略 途中省略
11111111.11111111.11111111.10000000 255.255.255.128 126
11111111.11111111.11111111.11000000 255.255.255.192 62
11111111.11111111.11111111.11100000 255.255.255.224 30
11111111.11111111.11111111.11110000 255.255.255.240 14
11111111.11111111.11111111.11111000 255.255.255.248 6
11111111.11111111.11111111.11111100 255.255.255.252 2

このように、オクテットの途中で区切ることができるわけです。

クラス分類ではホストアドレス部に該当する部分から一部のビットを借りて、ネットワークアドレス部として扱います。この借りたビット分でクラスを分割することができ、分割してできたグループを「サブネットワーク」と言います。

すなわち、サブネットマスクは、クラスをさらに分割してサブネットワークを構築するための識別子になります。

当然、ネットワークアドレス部にビットを渡すわけですから、ホストアドレス部のビットは減り、最大接続数は減少することになります。上表の1番下では、ホストアドレス部が2ビットしかありませんので、最大接続数は、2の2乗で「4(実質数2)」となります。

例えば、2つの異なるセグメントのLANを構築する場合を考えてみましょう。

ホスト数はそれぞれ「60」と「30」とします。

この場合、サブネットマスクで分割しなければ、クラスCのアドレスを「2クラス」割り当てる必要があるので、400以上のアドレスが無駄になってしまいます。

しかし、クラスCのアドレス1クラスをサブネットマスクで分割すれば、上表を参考に、例えば「255.255.255.192」で60台、「255.255.255.224」で30台の異なるセグメントのネットワークを構築することができます。

ただし、異なるセグメントであってもIPアドレスが重複してはいけません。しかし、仮に「192.168.1」という同じネットワークアドレス部であっても、セグメントは異なるわけです。

また、例えばクラスAのアドレス「10.1.1.100」に「255.255.255.0」といったサブネットマスクを設定し、クラスCの範囲まで及ぶ巨大なネットワークアドレス部を構成して、サブネットワークに分割することも可能になります。

つまり、クラスAのIPアドレスであっても、サブネットマスクが「255.255.255.0」であれば、実質最大接続数は「254」となり、膨大なサブネットワークを有効利用することができるようにります。

このようにサブネットワークに分割することによって、通常クラスでは無駄になっていたIPアドレスの余裕分を、他のネットワークで有効活用することができるのです。

したがって、サブネットマスクはIPアドレスと必ずセットで表記します。同じIPアドレスでも、サブネットマスクが違うとセグメントの異なるネットワークになるからです。

記述方法としては、両方全て書き出す方法以外に「ネットワークアドレス部」のビット数のみを記述する方法があります。

例えば、8ビットなら「10.74.0.1/8」、16ビットなら「172.156.1.1/16」、24ビットなら「192.168.168.1/24」といった記述方法になります。「1」を立てているビット数を表しています。

では、実際にインターネットに接続する時、使用しているパソコンにIPアドレスを割り当てなければならないはずですが、それはいつ割り当てているのでしょうか?

通常は、契約したプロバイダから値を指定されたり、インターネットに接続するたびにプロバイダから自動的に割り当てられているのです。厳密に言えば、JPNICからプロバイダに割り当てられたアドレスがユーザーに割り当てられていることになります。

プロバイダから送付された契約書にIPアドレスが指定されていたり、または「自動」なのかが記されているはずです。

ルータを使用してインターネットに接続している場合には、そのルータのみにIPアドレスを設定すれば、ルータの機能によって、接続しているパソコンすべてに自動的にIPアドレスを割り当てることができます。

この機能を、

DHCP(ディー エイチ シー ピー)

と言います。DHCPとは、

自動的にIPアドレスを割り当てるプロトコル

のことです。

また、IPアドレスを自動的に割り当てる(配布する)側を「DHCPサーバ」と呼び、割り当てられる(受け取る)側を「DHCPクライアント」と呼びます。

ルータの中にはDHCPサーバ機能が内臓されており、DHCPプロトコルによって、クライアントであるパソコンにIPアドレスを自動的に割り当てることができます。

ルータは、パケットのルーティングやフィルタリングの他にも、DHCPサーバ機能によって、接続されている複数台のパソコンを同時にインターネットに接続することができます。パソコンの台数分プロバイダと契約する必要はありません。

このように、自動的にIPアドレスを割り当てられてインターネットに接続している場合を「動的アドレス」、決められたアドレスで接続している場合を「静的アドレス」と言います。

お使いのパソコンのIPアドレスが動的アドレスなのか静的アドレスなのかを確認してみましょう。

Windows 10では「ネットワーク」を右クリック →「プロパティ」→「アダプターの設定の変更」→「イーサネット」または「Wi-Fi」を右クリック →「プロパティ」→「インターネット プロトコル バージョン4」→「プロパティ」で確認できます。

「インターネットプロトコルのプロパティ」画面イメージ

上図のように「IPアドレスを自動的に取得する」が選択されていれば、プロバイダやルータのDHCPサーバより自動的に割り振られる「動的アドレス」になります。

動的アドレスの場合、アドレスが自動的に割り当てられるため、インターネットに接続するごとにIPアドレスが変更している可能性があります。

逆に、プロバイダより指定されている場合は、この画面に固定のIPアドレスが入力されているはずです。その場合は、常に同じIPアドレスでインターネットに接続します。

また「ファイル名を指定して実行」または検索で「cmd」を指定し、表示された画面(コマンドプロンプト)に「ipconfig」と入力してEnterキーを押すと、いま現在割り当てられているIPアドレスを確認することができます。

インターネットでは、WWWサーバのIPアドレスを指定してウェブサイトを閲覧したり、FTPサーバのIPアドレスを指定してファイルを転送することになります。

しかし、実際には「210.9.230.13」のような数値を入力してウェブサイトを閲覧することはありません。つまり、10進数でもまだ人間には扱いにくいのです。

これも先述のとおり、

IPアドレスをURIに変換している

のです。

私たちが実際にウェブサイトを閲覧する時は、ブラウザに「https://www.yamanjo.net」 のようにURIを記入して閲覧します。

このように、IPアドレスを英数字などからなる名称に置き換えた表現を、

ドメイン

と言います。

ドメインとは、URI で学習のとおり、URIの責任者部の「ドメイン名」に該当する部分です。上のURIでは「yamanjo.net」の部分がドメインに当たります。

そして、このドメインとIPアドレスを対応させるシステムが、

DNS(ディー エヌ エス)

と呼ばれるシステムです。

DNSは「Domain Name System」の略で、その名のとおりドメイン名とIPアドレスを対応させて結びつけるシステムです。

つまり、

人間はドメイン名、コンピュータはIPアドレスを使うので、両者を対応させる仕組みがDNS

というわけです。

このDNSによって、私たち人間は数字だけのIPアドレスを意識することなく、英単語に近いドメインを利用してインターネットを利用することができるのです。

ドメイン名とIPアドレスを対応させたデータベースを管理している「DNSサーバ」が世界中にあり、互いに連携してクライアント(ユーザー)からのURI指定に対応しています。

クライアントからURIが指定されると、URIのドメイン名でDNSサーバに問い合せ、DNSよってドメイン名がIPアドレスに変換されて、該当するWWWサーバから指定されたファイル(ウェブページ)がクライアントに表示される仕組みです。

つまり、

DNSサーバに目的のIPアドレスのWWWサーバを教えてもらっている

ということです。

DNSシステムのイメージ

ユーザーとWWWサーバの仲介をするのがDNSというわけです。

ドメイン名は下図のような構造になります。トップレベルドメインには、国ごとに割り当てられる「ccTLD」と、誰でも取得可能な「gTLD」の2種類があります。

ccTLDの構成イメージ

gTLDの構成イメージ

通常は、「ccTLD」のドメインを取得します(プロバイダより取得するのが通常)が、独自ドメインの場合などは、誰でも取得できる「gTLD」のドメインを取得する(購入する)場合もあります。

下表は、セカンドレベルとトップレベルの種類をいくつか示した表です。

セカンドレベルドメイン
名称 属性 区分
ac 大学等教育機関 ccTLD
ed 小・中・高校 ccTLD
go 政府機関 ccTLD
gr 任意団体 ccTLD
co 一般企業 ccTLD
or 企業以外の団体 ccTLD
ne ネットワークサービス会社 ccTLD
トップレベルドメイン
名称 属性 区分
jp 日本 ccTLD
au オーストラリア ccTLD
ca カナダ ccTLD
es スペイン ccTLD
com 商用 gTLD
net ネットワーク gTLD
org 非営利団体 gTLD

アメリカはインターネット発祥地でもあり、国別コードは使われません。また、ドメインは上表以外にも多数あります。例えば道府県は「pref」で、岡山県なら「pref.okayama.jp」となり、東京都は「metro」で「metro.tokyo.jp」となります。

このように多くのドメインが存在し、そのドメインはDNSによってIPアドレスと結び付けられているのです。

具体的には、ドメインの種類ごとにDNSサーバは存在し、 最上位のルートネームサーバ(世界に13台)の下に階層構造が敷かれ、ルートネームサーバの下にトップレベルドメインのDNSサーバ、セカンドレベルのDNSサーバと続きます。

Windowsのフォルダ階層構造のように、上位のレベルから下位のレベルまで段階的にドメインが管理されているのです。

例えば「https://yahoo.co.jp」とURI指定すると、最初に問い合わせたDNSサーバに対応するIPアドレスが管理されていない場合は、ルートネームサーバに問い合せます。

そしてそのルートネームサーバから段階的に「jp」や「co」の属性にしたがって、そのカテゴリを管理しているDNSサーバに問い合せて、対応するIPアドレスを返してもらっています。

IPアドレス同様、ドメイン名も重複してはいけないユニークな識別子ですが、ドメイン名については、IPアドレスの代わりという本来の役割を超えて「商標」的な側面が強くなり、わかりやすいドメインの取得が一般的になっています。

トップレベルドメインについても、トンガは「.to」、ツバルは「.tv」なので、ドメインを外貨獲得の手段としている途上国もあります。実際にこれらのドメインを購入することが可能です。

また後述しますが、メールアドレスも「@」を挟んでドメインが使用されます。例えば「ohtanisan@angels.com」となります。

携帯電話のメールアドレス取得時にドメイン(サードレベル)を考えて取得した経験があるかと思います。誰かが取得していたために希望のアドレスを取得できなかったという方も多いと思いますが、それはこのような理由だったのです。

更新履歴

2008年7月25日
ページを公開。
2009年5月12日
ページをXHTML1.0とCSS2.1で、Web標準化。レイアウト変更。
2018年1月30日
ページをSSL化によりHTTPSに対応。
2023年1月23日
内容修正。

参考文献・ウェブサイト

当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。

文献
図解入門 インターネットのしくみ
DIGA:サブネットマスク
http://panasonic.jp/support/mpi/dvd/hlp/line_up/e500h/popup/hint043.html