開発者ドキュメント

ネットワークのIPアドレス、サブネット、およびCIDR表記について理解する

序章

ネットワークを理解することは、インターネット上で複雑な環境を構成するための基本的な部分です。 これは、サーバー間で効率的に通信しようとしたり、安全なネットワークポリシーを開発したり、ノードを整理したりする場合に影響します。

以前のガイドでは、基本的なネットワーク用語について説明しました。 そのガイドに目を通し、そこに示されている概念に精通していることを確認する必要があります。

この記事では、ネットワーク化されたコンピューターの設計または操作に関連するいくつかのより具体的な概念について説明します。 具体的には、IPアドレスをグループ化するためのネットワーククラス、サブネット、およびCIDR表記について説明します。

IPアドレスを理解する

ネットワーク上のすべての場所またはデバイスは、アドレス可能である必要があります。 これは、事前定義されたアドレスシステムの下でその指定を参照することによって到達できることを意味します。 ネットワーク層の通常のTCP/IPモデルでは、これはいくつかの異なる層で処理されますが、通常、ネットワーク上のアドレスを参照するときは、IPアドレスについて話します。

IPアドレスを使用すると、ネットワークインターフェイスを介してネットワークリソースにアクセスできます。 あるコンピューターが別のコンピューターと通信したい場合は、その情報をリモートコンピューターのIPアドレスにアドレス指定できます。 2台のコンピューターが同じネットワーク上にある、またはその間の異なるコンピューターとデバイスがネットワーク間で要求を変換できると仮定すると、コンピューターは相互に到達して情報を送信できる必要があります。

各IPアドレスは、独自のネットワーク上で一意である必要があります。 ネットワークは相互に分離でき、ブリッジして変換して、個別のネットワーク間のアクセスを提供できます。 ネットワークアドレス変換と呼ばれるシステムでは、パケットがネットワークの境界を通過するときにアドレスを書き換えて、正しい宛先に進むことができます。 これにより、同じIPアドレスを複数の分離されたネットワークで使用できると同時に、正しく構成されていれば、これらのネットワークが相互に通信できるようになります。

IPv4とIPv6の違い

今日のシステムに広く実装されているIPプロトコルには、IPv4とIPv6の2つのリビジョンがあります。 プロトコルの改善とIPv4アドレス空間の制限により、IPv6はIPv4に徐々に取って代わりつつあります。 簡単に言えば、今や世界には、IPv4を介して利用できるアドレスの数に対してインターネットに接続されたデバイスが多すぎます。

IPv4アドレスは32ビットアドレスです。 各バイト、つまりアドレスの8ビットセグメントは、ピリオドで除算され、通常は0〜255の数値で表されます。 これらの数値は通常、人間の理解を助けるために10進数で表されますが、各セグメントは通常、8ビットの表現であるという事実を表すためにオクテットと呼ばれます。

一般的なIPv4アドレスは次のようになります。

192.168.0.5

各オクテットの最小値は0で、最大値は255です。

これをバイナリで表現して、4つのオクテットがどのように見えるかをよりよく理解することもできます。 読みやすくするために、各4ビットをスペースで区切り、ドットをダッシュに置き換えます。

1100 0000 - 1010 1000 - 0000 0000 - 0000 0101

これらの2つの形式が同じ数を表すことを認識することは、後で概念を理解するために重要になります。

IPv4とIPv6のプロトコルとバックグラウンド機能には他にもいくつかの違いがありますが、最も顕著な違いはアドレス空間です。 IPv6は、アドレスを128ビットの数値として表現します。 これは、IPv6には、IPv4の7.9×10 28倍以上のアドレスのスペースがあることを意味します。

この拡張されたアドレス範囲を表すために、IPv6は通常、4桁の16進数の8つのセグメントとして書き出されます。 16進数は、0〜9の数字を使用して0〜15の数値を表し、a〜fの数値はより高い値を表します。 一般的なIPv6アドレスは次のようになります。

1203:8fe0:fe80:b897:8990:8a7c:99bf:323d

また、これらのアドレスがコンパクトな形式で書かれているのを見るかもしれません。 IPv6のルールでは、各オクテットから先行ゼロを削除し、ゼロ化されたグループの単一の範囲を二重コロン(::)に置き換えることができます。

たとえば、IPv6アドレスに次のようなグループが1つある場合:

...:00bc:...

代わりに、次のように入力することもできます。

...:bc:...

2番目のケースを示すために、IPv6アドレスに範囲があり、複数のグループがゼロである場合は、次のようになります。

...:18bc:0000:0000:0000:00ff:...

これを次のように圧縮できます(上記のようにグループの先行ゼロも削除します)。

...:18bc::ff...

これは、アドレスごとに1回だけ実行できます。そうしないと、完全なアドレスを再構築できなくなります。

IPv6は日々一般的になりつつありますが、このガイドでは、より小さなアドレス空間で議論する方が簡単なため、IPv4アドレスを使用して残りの概念を検討します。

IPv4アドレスクラスと予約範囲

IPアドレスは通常、2つの別個のコンポーネントで構成されています。 アドレスの最初の部分は、アドレスが含まれているネットワークを識別するために使用されます。 その後に続く部分は、そのネットワーク内の特定のホストを指定するために使用されます。

ネットワーク仕様が終了し、ホスト仕様が開始する場所は、ネットワークの構成方法によって異なります。 これについては、もう少し詳しく説明します。

IPv4アドレスは、従来、AからEという名前の5つの異なる「クラス」に分割されていました。これは、使用可能なアドレス可能なIPv4スペースのセグメントを区別することを目的としています。 これらは、各アドレスの最初の4ビットによって定義されます。 これらのビットを調べることで、IPアドレスがどのクラスに属しているかを識別できます。

これは、先頭ビットに基づいてアドレスを定義する変換テーブルです。

クラスDアドレスは、マルチキャストプロトコル用に予約されています。これにより、パケットを1回の移動でホストのグループに送信できます。 クラスEアドレスは、将来および実験的な使用のために予約されており、ほとんど使用されていません。

従来、通常のクラス(A〜C)はそれぞれ、異なるサイズのネットワークに対応するために、アドレスのネットワーク部分とホスト部分を異なる方法で分割していました。 クラスAアドレスは、最初のオクテットの残りの部分を使用してネットワークを表し、残りのアドレスを使用してホストを定義しました。 これは、それぞれ多数のホストを持ついくつかのネットワークを定義するのに適していました。

クラスBアドレスは、最初の2つのオクテット(最初の残りと2番目全体)を使用してネットワークを定義し、残りを使用して各ネットワーク上のホストを定義しました。 クラスCアドレスは、最初の3つのオクテットを使用してネットワークを定義し、最後のオクテットを使用してそのネットワーク内のホストを定義しました。

IPスペースの大部分をクラスに分割することは、今ではほとんどレガシーな概念です。 もともと、これはIPv4アドレスが急速に枯渇する問題の一時的なギャップとして実装されていました(別々のネットワークにある場合は、同じホストを持つ複数のコンピューターを持つことができます)。 これは主に、以下で説明する後のスキームに置き換えられました。

予約済みのプライベート範囲

特定の用途のために予約されているIPv4スペースの一部もあります。

最も有用な予約範囲の1つは、127.0.0.0から127.255.255.255までのアドレスで指定されたループバック範囲です。 この範囲は、各ホストがそれ自体へのネットワークをテストするために使用されます。 通常、これはこの範囲の最初のアドレス127.0.0.1で表されます。

通常の各クラスには、プライベートネットワークアドレスを指定するために使用される範囲も含まれています。 たとえば、クラス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の範囲は私的使用のために予約されています。

インターネットに直接接続されていないコンピューター(ルーターまたは他のNATシステムを経由するコンピューター)は、これらのアドレスを自由に使用できます。

特定のユースケース用に予約されている追加のアドレス範囲があります。 予約済みアドレスの概要はここにあります。

ネットマスクとサブネット

ネットワークをより小さなネットワークセクションに分割するプロセスは、サブネット化と呼ばれます。 これは、さまざまな目的に役立ち、ホストのグループを相互に分離して、より簡単に処理するのに役立ちます。

上で説明したように、各アドレス空間はネットワーク部分とホスト部分に分割されます。 これらのそれぞれが占めるアドレスの量は、アドレスが属するクラスによって異なります。 たとえば、クラスCアドレスの場合、最初の3オクテットはネットワークを記述するために使用されます。 アドレス192.168.0.15の場合、192.168.0の部分はネットワークを表し、15はホストを表します。

デフォルトでは、各ネットワークにはサブネットが1つだけあり、そのサブネットには、内部で定義されているすべてのホストアドレスが含まれています。 ネットマスクは、基本的にネットワーク部分に使用されるアドレスビットの量の仕様です。 サブネットマスクは、ネットワークをさらに分割するために使用される別のネットマスクです。

ネットワークを記述するために重要であると見なされるアドレスの各ビットは、ネットマスクで「1」として表される必要があります。

たとえば、上記で説明したアドレス192.168.0.15は、次のように2進数で表すことができます。

1100 0000 - 1010 1000 - 0000 0000 - 0000 1111

上で説明したように、クラスCアドレスのネットワーク部分は最初の3オクテット、つまり最初の24ビットです。 これらは保持したい重要なビットであるため、ネットマスクは次のようになります。

1111 1111 - 1111 1111 - 1111 1111 - 0000 0000

これは、通常のIPv4形式で255.255.255.0と書くことができます。 ネットマスクのバイナリ表現で「0」であるビットは、アドレスのホスト部分の一部と見なされ、可変にすることができます。 ただし、「1」のビットは、説明しているネットワークまたはサブネットワークでは静的です。

アドレスとネットマスクの間にビット単位のAND演算を適用することにより、アドレスのネットワーク部分を判別します。 ビット単位のAND操作は、アドレスのネットワーク部分を保存し、ホスト部分を破棄します。 ネットワークを表す上記の例でのこの結果は次のとおりです。

1100 0000 - 1010 1000 - 0000 0000 - 0000 0000

これは、192.168.0.0として表すことができます。 その場合、ホスト仕様は、これらの元の値とホスト部分の差になります。 この場合、ホストは0000 1111または15です。

サブネット化の考え方は、アドレスのホストスペースの一部を取得し、それを追加のネットワーク仕様として使用して、アドレススペースを再度分割することです。

たとえば、上記の255.255.255.0のネットマスクでは、ネットワーク内に254個のホストが残ります(これらは予約されているため、0または255で終了することはできません)。 これを2つのサブネットワークに分割する場合は、アドレスの従来のホスト部分の1ビットをサブネットマスクとして使用できます。

したがって、この例を続けると、ネットワーキングの部分は次のようになります。

1100 0000 - 1010 1000 - 0000 0000

ホスト部分は次のとおりです。

0000 1111

ホストの最初のビットを使用して、サブネットワークを指定できます。 これを行うには、次のようにサブネットマスクを調整します。

1111 1111 - 1111 1111 - 1111 1111 - 0000 0000

これに:

1111 1111 - 1111 1111 - 1111 1111 - 1000 0000

従来のIPv4表記では、これは192.168.0.128として表されます。 ここで行ったことは、最後のオクテットの最初のビットをネットワークのアドレス指定で重要なものとして指定することです。 これにより、2つのサブネットワークが効果的に生成されます。 最初のサブネットワークは、192.168.0.1から192.168.0.127です。 2番目のサブネットワークには、ホスト192.168.0.129から192.168.0.255が含まれています。 従来、サブネット自体をアドレスとして使用することはできません。

ネットワーク用にホストスペースからより多くのビットを使用すると、より多くのサブネットワークを取得できます。

CIDR表記

Classless Inter-Domain Routing (CIDR)と呼ばれるシステムが、従来のサブネット化の代替として開発されました。 アイデアは、ルーティングまたはネットワーク部分を構成する重要なビットの数に関して、IPアドレス自体に仕様を追加できるということです。

たとえば、192.168.0.15/24のCIDR表記を使用して、IPアドレス192.168.0.15がネットマスク255.255.255.0に関連付けられているという考えを表現できます。 これは、指定されたIPアドレスの最初の24ビットがネットワークルーティングにとって重要であると見なされることを意味します。

これにより、いくつかの興味深い可能性が生まれます。 これらを使用して「スーパーネット」を参照できます。 この場合、従来のサブネットマスクでは不可能な、より包括的なアドレス範囲を意味します。 たとえば、上記のようなクラスCネットワークでは、クラスCアドレスのネットマスクが255.255.255.0であるため、ネットワーク192.168.0.0192.168.1.0のアドレスを組み合わせることができませんでした。

ただし、CIDR表記を使用すると、このチャンクを192.168.0.0/23として参照することで、これらのブロックを組み合わせることができます。 これは、参照しているネットワーク部分に23ビットが使用されていることを示しています。

したがって、最初のネットワーク(192.168.0.0)は、バイナリで次のように表すことができます。

1100 0000 - 1010 1000 - 0000 0000 - 0000 0000

2番目のネットワーク(192.168.1.0)は次のようになります。

1100 0000 - 1010 1000 - 0000 0001 - 0000 0000

指定したCIDRアドレスは、最初の23ビットが参照しているネットワークブロックに使用されていることを示しています。 これは、255.255.254.0のネットマスクと同等です。または:

1111 1111 - 1111 1111 - 1111 1110 - 0000 0000

ご覧のとおり、このブロックでは、24番目のビットは0または1のいずれかであり、ネットワークブロックは最初の23桁のみを処理するため、引き続き一致します。

CIDRを使用すると、IPアドレスの連続ブロックのアドレス指定をより細かく制御できます。 これは、最初に説明したサブネット化よりもはるかに便利です。

結論

うまくいけば、これまでに、IPプロトコルのネットワークへの影響のいくつかを実際に理解しているはずです。 このタイプのネットワークの処理は必ずしも直感的ではなく、操作が難しい場合もありますが、ソフトウェアとコンポーネントを正しく構成するには、何が起こっているのかを理解することが重要です。

これらの概念のいくつかを理解し、特定の情報を入力することで必要な正しいアドレスと範囲を取得するのに役立つさまざまな計算機とツールがオンラインにあります。 CIDR.xyz は、10進数ベースのIPアドレスからオクテットへの変換を提供し、さまざまなCIDRネットマスクを視覚化できるようにします。

モバイルバージョンを終了