もし新しい友達ができて、その人に家へ遊びに来てほしいと住所を教えてもらったとする.
私たちはその住所を地図で調べ、行き方や経路を確認することができる.
また、複数の交通手段の中から自分に最も適した方法を選んで目的地に到着できる.
これは、インターネットで買い物をするときの仕組みに似ている.
商品を注文するとき、あなたのコンピュータはどのようにして通販サーバーの場所を見つけるのだろうか.
その住所に当たるものがIPアドレスである.
通常、Windowsでは「ipconfig」、Linuxでは「ifconfig」が使われる.
また、Linuxでは「ip addr」コマンドも使用できる.
以下ではLinuxマシンでifconfigコマンドを実行した例をもとに詳しく説明する.
root@root-VMware-Virtual-Platform:~$ ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::20c:29ff:fef9:4d8 prefixlen 64 scopeid 0x20
ether 00:0c:29:f9:04:d8 txqueuelen 1000 (Ethernet)
RX packets 165829 bytes 165476319 (165.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 76159 bytes 4654488 (4.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 237 bytes 32981 (32.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 237 bytes 32981 (32.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
コマンドの出力結果には、マシン上のすべてのネットワークカードとその情報が表示される.
このマシンにはens33とloという2枚のネットワークカードがあることが分かる.
私は仮想マシン上でコマンドを実行しているため、ens33は仮想マシンの仮想ネットワークカードである.
loは仮想インターフェースと呼ばれ、ソフトウェアによって模擬されたものであり、実際のネットワークカードではない.
英語ではloopback deviceという.
仮想マシンについて聞いたことがない人もいるかもしれないが、現実のノートパソコンのようなものだと考えればよい.
物理的な実体がないことを除けば、機能は実際のマシンとほとんど変わらない.
以下では主にens33について説明する.
loは実際のネットワークカードではなく、ソフトウェアで模擬されたものだからである.
まずIPに注目する.これが本稿のテーマである.192.168.100.100は自分のコンピュータのIPアドレスである.
このIPアドレスはドットで4つに区切られており、各部分は10進数3桁に見えるが、実際には8ビットの2進数である.
そのため範囲は0から2の8乗(256)までとなる.IPアドレス全体は4×8で32ビットとなり、範囲は0から2の32乗(4294967296)である.
これは非常に大きな数値であり、設計当時はすべてのネットワーク機器に十分対応できた.しかし現在では機器数の増加により不足している.
ではどう解決するのか.IPアドレスの範囲を拡張するか、新しいアドレス体系を設計するかの二択である.エンジニアは既存のIPを拡張するのではなく、新しい方式を設計することを選んだ.新しいアドレスをIPv6、従来のものをIPv4と呼ぶ.
ではなぜ拡張しなかったのか、以下で簡単に説明する.
IPアドレスは独立して存在する数字ではなく、それは世界中のすべてのネットワーク機器の「読み取り規則」の中にハードコードされている.アドレス長を変更するということは、この「読み取り規則」を変更するのと同じであり、世界中のネットワーク機器は同時に変更しなければ、新しいアドレスを理解できず、直接ネットワークの麻痺を招く.
このような状況が発生すれば、想像することさえ恐ろしい.したがって、このためにIPv6アドレスを新たに設計せざるを得なかった.
IPアドレスは住所のようなものである以上、本来ナビゲーションの機能を持っていると言える.現実世界でも、ネットで買い物をする際には住所を入力しなければ、店側は商品を配送できない.同様に、MACアドレスというものもあるが、IPアドレスとはどのように異なるのだろうか.結論から言えば、IPアドレスは家の住所、MACアドレスは本人に相当する.
他人があなたを探す場合、まず住所を頼りに家を特定し、その上で本人を呼び出して初めて見つけられる.このことから、IPアドレスとMACアドレスが両方存在する理由が分かる.
また、住所である以上、重複してはならないことも理解できる.例えば自宅が601号室でも、別の建物や別の地域にも601号室は存在する.つまりIPアドレスには地域から建物・部屋番号までのすべての位置情報が含まれていると考えられる.例えば『北海道札幌市白石区本通19丁目南6-8南378-1097』のような表記がそれに当たる.なお、127.0.0.1というIPアドレスはすべての機器に存在するが、これはIPアドレスの分類に関係しており、後で説明する.
IPアドレスは5つのクラスに分類され、Aクラス、Bクラス、Cクラス、Dクラス、Eクラスがある.Aクラスは第1オクテットの数値が小さく(1~126)、いわば「超大規模コミュニティ」のようなもので、1つのネットワークに1,000万台以上のホストを収容できる(超大企業や国家規模に適している).
Bクラスは第1オクテットが中程度(128~191)で、「中規模コミュニティ」にたとえられ、1つのネットワークに約6万台のホストを収容できる(大学や大企業に適している).
Cクラスは第1オクテットが比較的大きく(192~223)、「小規模コミュニティやマンション」のようなもので、1つのネットワークに254台のホストしか収容できない(家庭内Wi-Fi、小企業、カフェなどに適している).
Dクラスは第1オクテットがさらに大きく(224~239)、単一ホスト用ではなく、「グループチャット」のように同時に多数へ送信するマルチキャスト用途に使われる(配信やビデオ会議など).
Eクラスは第1オクテットが最大(240~255)で、「実験用アドレス」のようなものであり、現在は一般利用には開放されておらず、将来の新用途のために予約されている.
ここで、「第1オクテットの数値が小さい(1~126)のに、なぜ『超大規模』と言えるのか」と疑問に思うかもしれない.
実際にはIPアドレスは第1~第4オクテット(例:10.1.2.3)で構成されているため、「第1オクテットが小さい」ということは、ネットワーク部に使うビットが少なく、その分ホスト部(後ろのオクテット)に多くのビットを割り当てられることを意味する.
したがって、収容できるホスト数が多くなり、ネットワーク規模は大きくなるのである.
以下について紹介する.種類、第1オクテットの範囲、二進数の先頭、ネットワークビット/ホストビット、各ネットワークに収容できる正確な機器数、このようなネットワークの総数、主な用途(最も核心的な違い)、一般のコンピューターやスマートフォンに使用できるかどうか、生活にたとえた分かりやすい説明、代表的な例.
Aクラスアドレスの範囲は1~126であり、先頭8ビットがネットワーク部、残り24ビットがホスト部である.約1677万7214台の機器を収容でき、ネットワーク数は126で、ユニキャストに用いられ、単一機器に割り当てることができる.代表的な内部ネットワーク範囲は10.x.x.xで、家庭や企業の大規模内部ネットワークで用いられ、超大都市に例えられる.
Bクラスアドレスの範囲は128~191であり、先頭16ビットがネットワーク部、残り16ビットがホスト部である.65,534台の機器を収容でき、ネットワーク数は16,384で、ユニキャストに用いられ、単一機器に割り当て可能である.代表的な内部範囲は172.16.x.xで、学校や中規模企業の内部ネットワークで用いられ、中規模都市にたとえられる.
Cクラスアドレスの範囲は192~223であり、先頭24ビットがネットワーク部、残り8ビットがホスト部である.254台の機器を収容でき、ネットワーク数は2,097,152で、ユニキャストに用いられ、単一機器に割り当て可能である.代表的な内部範囲は192.168.x.xで、家庭Wi-Fiなどの小規模内部ネットワークで用いられ、小規模アパートにたとえられる.
Dクラスアドレスの範囲は224~239であり、ネットワーク部とホスト部の区別がなく、単一機器やネットワーク数の概念は存在しない.マルチキャストに用いられ、単一機器に割り当てることはできない.特徴は一度に特定の機器群へ送信できる点であり、グループチャットやテレビチャンネルが同時に多くの人へ配信する仕組みに類似している.代表例は224.0.0.1で、ルーティングプロトコルやライブ配信に用いられる.
EクラスのIPアドレスは240~255で、1111xxxxで表され、ネットワークやホストを区別せず、用途は保留で実験用(将来または研究)、ほとんど使われず、まるで鍵のかかった実験室の部屋番号のようで、現在は開放されておらず、実際に使用されるIPはほとんどない。
もしかすると、今は少し疑問に思うかもしれません.「どうしてまたネットワークやホストの話が出てくるのか」と.しかし、IPアドレスが32ビットなのは、ネットワーク部とホスト部で構成されているからです.ここでは、Aクラスのアドレスを例にして説明します.
Aクラスのアドレスは、ホスト部分が24ビットで、各ビットは0か1になり、総組み合わせ数は2×2×…×2(24回)=2²⁴=16,777,216です.しかし、そのうち2つは普通の機器には割り当てられません.ホスト部分が全て0のネットワークアドレス(ネットワーク全体を示すので、1台の機器には割り当て不可)と、ホスト部分が全て1のブロードキャストアドレス(全ての機器に一度に送信するため、1台の機器には割り当て不可)です.したがって、実際にコンピューター、スマートフォン、サーバーに割り当てられる数は 2²⁴−2 = 16,777,214 台です.
Dクラスはネットワーク部とホスト部を区別しない.二進法では先頭が1110xxxxとなり、最初のオクテットは224から239の範囲に当たる.用途はマルチキャスト専用であり、1台のコンピュータに割り当てるものではなく、複数のコンピュータが同時に同一のデータを受信するためのものである.なぜネットワーク部とホスト部を区別しないのか.それは位置を示すのではなく、グループを示すものであり、ネットワーク番号と端末番号に分ける必要がないからである.
ホスト数は存在しない.単一の機器に割り当てるものではないため、「何台収容できるか」という概念はない.用途は当初から実験や研究、将来の新機能のために予約されている(RFC1112で定義されている).では、なぜ分割もされず、具体的な用途もないのだろうか.
当時設計者はこの部分(約2億6千8百万アドレス)を「予備」として残したが、その後IPv4はCIDRを採用し、classfulに戻る必要もなく、新たな用途も標準化されなかった.
げんざいエー、ビー、シー、ディー、イークラスアドレスはシーアイディーアールにおきかえられた。それはなぜだろうか。かんたんにしょうかいしよう.
A類は 一度に千六百七十七万以上の アドレスを 割り当てる 方式であり、国家や超大企業に 適している.
B類は一度に約六万五千以上の アドレスを割り当てる方式である.
C類は一度に二百五十四のアドレスを割り当てる方式である.
しかし、現実の需要はそれらの数字にまったく達しておらず、非常に無駄が多かった.
具体的な例(当時最もよく見られた無駄のケース):
ある中規模の企業では、500台のコンピューターと設備がグローバルIPアドレスを必要としている.
Cクラスは254台しかなく、足りなかった.Bクラスでは65,534台の利用可能なアドレスがあったが、実際に使用されたのは500台のみで、65,034個のアドレスが無駄になった(ほぼ小規模都市一つ分のアドレス数に相当する).
別の会社は、ルーター間接続用として、グローバルIPアドレスを2つだけ必要とする.Cクラスを使うしかなく、252個分が無駄になる.さらに極端な例を挙げると、2万5000台が必要な場合、Bクラスを取得すれば4万以上が無駄になる.
結果、全世界のIPv4アドレス(総数約43億個)は、このような大きな無駄によって急速に使い尽くされた.1990年代初めには、インターネット利用者が急増し、人々が次々とアドレスを申請したため、数年以内に使い切ると予測された.
2. もう一つの大きな問題は、ルーターが爆発することだ.
従来の方法では、割り当てられたすべての公共IPアドレスは、世界中のルーターに一つずつ独立したルーティング規則として記録されなければならない.
ネットワーク機器が次々と増え、公的IPアドレスが次々に割り当てられていく.ルーターのルーティングテーブルの項目が数千から数万、さらには十数万にまで急増した.
ルーターのメモリが不足し、処理速度が遅くなり、ネットワークの遅延が増え、さらにはシステムが停止する危険もある.1993年には、バックボーンルーターのルーティングテーブルがすでに限界に近づき、ネットワークはもう持ちこたえられなくなりそうだった.
CIDR はどのようにこれらの問題を解決したのか.(1993 年 RFC1518 / 1519 で導入)CIDR はアドレスの分割を非常に柔軟にし、三つの固定サイズに限定せず、/プレフィックス長(/24、/23、/20 など)で自由に分割できるようにした.
具体的な利点と数字の比較.住所の浪費が大幅に減少した.会社は500台必要,/23を割り当て ほとんど浪費しない.2台必要,/30を割り当て,4個のアドレス(2個の特殊アドレスを除くと2台使用可能)完璧.
効率はクラスフル方式の約45%からCIDRの85~95%へ向上した(浪費率は半分以上から非常に低い水準まで下がった).
ルーティングテーブルが大幅に縮小する(ルートアグリゲーション).以前は、会社が8個のCクラスをもらうと、ルーターは8条のルールを記録する.CIDRでは、この8個を1本の/21プレフィックスにまとめる1条だけ記録する.
実際の効果:1993年にはルーティングテーブルは約65,000条だったが、1995年には約13,000条まで減少した(約80%の縮小).ルーターの負担が軽くなり、インターネットが続けて成長できる.
IPv4の寿命を延ばす:もともと1990年代中に使い切られると予測されていたが、CIDRによってIPv4は十数年持ちこたえた(最後にはやはり使い切られ、現在はNAT + IPv6によって維持されている).
まとめ:なぜ非クラスフル(CIDR)に移行しなければならないのか.固定サイズを浪費しすぎて、膨大なアドレスが無駄に放置されている.ルーターがルーティングテーブルの肥大に耐えられず、インターネットが崩壊しかけている.
インターネットの成長が速すぎて、1990年代に利用者やサイトが急増したため、従来の手法では全く対応しきれなくなった.ここでCIDRについて説明します.前述の通り、CIDRとはIPアドレスをネットワーク番号とホスト番号の二つの部分に分けるものです.次に、どのように分けるべきでしょうか.何か決まったルールがあるのでしょうか.それとも、固定されているのでしょうか.例を挙げて説明します.IPアドレス「10.100.120.10/24」という表記を見て、戸惑うかもしれません.この「/24」はいったいどのような役割を果たし、24とは何を意味するのでしょうか.実は、このアドレスこそがCIDRなのです.「24」という数字は、先頭の24ビットがネットワーク番号であり、残りの8ビットがホスト番号であることを意味しています.これこそがCIDRなのです.ほら、非常に簡単ではありませんか.設計も極めて優美ですね.
私たちは引き続きほかの情報を見ていきます.ネットマスク255.255.255.0はサブネットマスクですが、これは何をしているのでしょうか.まず結論を述べます.どのIPが同じサブネット(家庭内LAN)に属しているのか、どのIPが同じネットワークに属していないため、ルーターに送ってもらう必要があるのかを判断します.
例を挙げます.あなたのコンピュータのIPは192.168.1.50、サブネットマスクは255.255.255.0です.192.168.1.80にデータを送ろうとするとき、自分のIPアドレスとサブネットマスクをビットごとにANDします.
IP 192.168.1.50 → 11000000.10101000.00000001.00110010
サブネットマスク 255.255.255.0 → 11111111.11111111.11111111.00000000
AND 結果 → 11000000.10101000.00000001.00000000 = 192.168.1.0
目標のIPアドレスにも同じAND演算を行う.
目標 IP 192.168.1.80 → 11000000.10101000.00000001.01010000
サブネットマスク 255.255.255.0 → 11111111.11111111.11111111.00000000
AND 結果 → 11000000.10101000.00000001.00000000 = 192.168.1.0
二つのネットワークIDが同じなら、同一のサブネットにあるため、コンピュータはARPブロードキャストを使って「192.168.1.80は誰か」と問い合わせる.
しかし、自分のコンピュータのIPアドレス192.168.1.50が192.168.2.100に送信しようとする場合、同じAND演算を行うと.
自分のIPアドレス192.168.1.50にサブネットマスク255.255.255.0でAND演算を行うと、192.168.1.0になる.目標アドレス192.168.2.100を255.255.255.0とAND演算すると、192.168.2.0になる.ネットワーク番号が違う.ルーターに転送してもらう.あなたは、サブネットマスク255.255.255.0は必ずこのようなものだと思うかもしれない.変わっていないのか.実はそうではなく、これは前のCIDRに関係しており、ネットワーク番号とホスト番号の分け方に関係している.私は具体的な例を使って説明する.
CIDR/24 のサブネットマスクを計算する際、プレフィックス長 = 24 最初の24ビットは1で、残りの8ビットは0になる.11111111 . 11111111 . 11111111 . 00000000
4つのグループに分け、各グループ8ビットを10進数に変換する.第1グループ:11111111 = 128+64+32+16+8+4+2+1 = 255
計算後のサブネットマスク = 255.255.255.0/24
同様に/23のサブネットマスクは255.255.254.0/23、/30のサブネットマスクは255.255.255.252/30である.
次はブロードキャストアドレスが192.168.100.255だ.名前から見てもブロードキャストアドレスだと分かる.では、ブロードキャストアドレスにはどんな役割があるのだろうか.なぜそれが必要なのだろうか.また、そのアドレスには何か特定の規則があるのだろうか.主な理由は、一台の装置がネットワーク内のすべての機器に対して、一度に要求を送ることができ、IPアドレスを一つ一つ指定する必要がないからである.
あなたは、なぜネットワークのセグメント全体の機器にリクエストを送る必要があるのかと思うかもしれないが、実際にはこの操作は現実ではかなり一般的である.例えば、ローカルネットワーク内で別の機器に要求を送る必要があるとき、機器のIPアドレスは分かっていてもMACアドレスが分からない場合、リンク層ではパケットをMACアドレスでカプセル化する必要がある.自分の機器はARPリクエストを送信し、「このIPアドレスを持っているのは誰か。MACアドレスを教えてほしい」とブロードキャストで問い合わせる.ネットワークセグメント内のすべての機器が受信するが、そのIPアドレスを持つ機器だけがARPリプライを返す(通常はAにユニキャストで返信する).
もう一つよくあるのは、あなたのネットワーク機器が会社に入り、Wi-Fiに接続してインターネットを利用する場合で、このとき会社のネットワークサーバーは必ずあなたにIPを割り当てる必要があり、ここでのサーバーは有名なDHCPサーバーです.ここで使われるネットワークプロトコルはDHCPプロトコルで、この過程は以下の通りです.新しい端末がオンラインになるとき、まだIP(送信元IPは0.0.0.0)がなく、DHCPサーバーのIPもわかりません.
ネットワーク機器はDHCP Discoverを送信し、ブロードキャスト(宛先IPは255.255.255.255)で「DHCPサーバーはありますか。IPアドレスを取得したい」と呼びかける.DHCPサーバーは受信後、DHCP Offerをブロードキャストで送信し、IPアドレスの提案を行う.もしこの時、そのIPが使用可能で占有されていなければ、そのIPが利用可能であるという応答をクライアントに返す.クライアントはさらにDHCP Requestをブロードキャストして選択を確認する(ほかのネットワーク機器に「このIPは現在自分が使用しているので、使用できない」と知らせる).
ここまで話して、じゃあブロードキャストアドレスには何か規則があるんですか?それとも固定なんですか.ブロードキャストアドレスには明確な規則があるんです、固定ではなく、サブネットマスクに基づいて決まるんです.ブロードキャストアドレスは、ネットワーク部分は変わらない、ホスト部分はすべて1にする.例えば、私たちの例におけるブロードキャストアドレスは 192.168.100.255 です.ここではデフォルトの CIDR を用いており、/24 の場合、ホスト部は最後の 8 ビットだけです.ブロードキャストアドレスは、ホスト部をすべて 1 にすることで求められます.つまり、最後の 8 ビットは 11111111 となり、十進数では 255 です.そのため、ブロードキャストアドレスは ..***.255 になります.なお、この場合のネットワークアドレスは 192.168.100.0 で、最初に使用可能な IP アドレスは 192.168.100.1、最後に使用可能な IP アドレスは 192.168.100.254、ブロードキャストアドレスは 192.168.100.255 です.