序章

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

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

この記事では、ネットワーク化されたコンピューターの設計または操作に関連するいくつかのより具体的な概念について説明します。 具体的には、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アドレスがどのクラスに属しているかを識別できます。

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

  • クラスA

    • 0 — :IPv4アドレスの最初のビットが「0」の場合、これはそのアドレスがクラスAの一部であることを意味します。 これは、0.0.0.0から127.255.255.255までのすべてのアドレスがクラスAにあることを意味します。
  • クラスB

    • 10-:クラスBには、128.0.0.0から191.255.255.255までの任意のアドレスが含まれます。 これは、最初のビットに「1」が付いているが、2番目のビットに「1」がないアドレスを表します。
  • クラスC

    • 110- :クラスCは、192.0.0.0から223.255.255.255の範囲のアドレスとして定義されます。 これは、最初の2ビットが「1」で、3番目のビットが「1」でないすべてのアドレスを表します。
  • クラスD

    • 1110 :このクラスには、最初の3ビットが「111」で次のビットが「0」のアドレスが含まれます。 このアドレス範囲には、224.0.0.0から239.255.255.255までのアドレスが含まれます。
  • クラスE

    • 1111 :このクラスは、240.0.0.0と255.255.255.255の間のアドレスを定義します。 このクラスには、4つの「1」ビットで始まるアドレスが含まれます。

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

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

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

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

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

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

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

通常の各クラスには、プライベートネットワークアドレスを指定するために使用される範囲も含まれています。 たとえば、クラスAアドレスの場合、 10.0.0.010.255.255.255 プライベートネットワークの割り当て用に予約されています。 クラスBの場合、この範囲は 172.16.0.0172.31.255.255. クラスCの場合、 192.168.0.0192.168.255.255 個人使用のために予約されています。

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

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

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

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

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

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

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

たとえば、上記で説明したアドレスは、 192.168.0.15 バイナリで次のように表現できます。

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.1192.168.0.127. 2番目のサブネットワークにはホストが含まれています 192.168.0.129192.168.0.255. 従来、サブネット自体をアドレスとして使用することはできません。

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

CIDR表記

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

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

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