第9部のLFCAシリーズでは、IPアドレスの基礎について説明しました。IPアドレスをより理解するために、2つのIPアドレス表記方法、つまりバイナリと10進数ドット記法にさらに注意を払う必要があります。前述のように、IPアドレスは通常、読みやすさのために10進数形式で表される32ビットのバイナリ数です。
バイナリ形式では、1と0の数字のみを使用します。これは、コンピューターが理解し、データがネットワークを介して送信される形式です。
ただし、アドレスを人間が読めるようにするために、ドット付き10進数形式で伝えられます。後でコンピューターがこれをバイナリ形式に変換します。前述のように、IPアドレスは4つのオクテットで構成されています。IPアドレス192.168.1.5を解析してみましょう。
ドット付き10進数形式では、192が最初のオクテット、168が2番目のオクテット、1が3番目のオクテット、そして最後に5が4番目のオクテットです。
バイナリ形式では、IPアドレスは次のように表されます。
11000000 => 1st Octet 10101000 => 2nd Octet 00000001 => 3rd Octet 00000101 => 4th Octet
バイナリでは、ビットはオンまたはオフにできます。 ‘オン’ ビットは1で表され、オフのビットは0で表されます。10進数形式では、
10進数に到達するためには、すべての2の2乗のバイナリ桁の合計が行われます。以下の表には、オクテット内のすべてのビットの位置値が示されています。例えば、1の10進数値はバイナリの00000001に相当します。

よりよい形式では、これは以下のように表されることもあります。
2º = 1 = 00000001 2¹ = 2 = 00000010 2² = 4 = 00000100 2³ = 8 = 00001000 2⁴ = 16 = 00010000 2⁵ = 32 = 00100000 2⁶ = 64 = 01000000 2⁷ = 128 = 10000000
ドットデシマル形式のIPアドレスをバイナリに変換してみましょう。
10進数形式をバイナリに変換する
192.168.1.5の例を取りましょう。 10進数からバイナリに変換するには、左から右に進みます。表の値ごとに、表の値をIPアドレスの10進数値から引くことができるかどうかを尋ねます。答えが「YES」であれば、「1」を書き留めます。答えが「NO」であれば、0を入れます。
最初のオクテットは192です。 128を192から引くことができますか? 答えは大きな「YES」です。したがって、128に対応する1を書き留めます。

192-128 = 64
64を64から引くことができますか? 答えは「YES」です。再び、64に対応する1を書き留めます。

64-64 = 0 10進数値が使い果たされたので、残りの値には0を割り当てます。

それでは、192の10進数値は2進数で11000000になります。下の表の1に対応する値を足し合わせると、192になります。つまり、128 + 64 = 192です。理解できましたね?
次に、2番目のオクテットである168に進みましょう。128を168から引くことはできますか?はい。

168-128 = 40
次に、40から64を引くことはできますか?いいえ。そこで、0を割り当てます。

次の値に移ります。40から32を引くことはできますか?はい。1を割り当てます。

40 - 32 = 8
次に、8から18を引くことはできますか?いいえ。0を割り当てます。

次に、8から8を引くことはできますか?はい。1を割り当てます。

8-8 = 0
10進数の値を使い果たしたので、表の残りの値に0を割り当てます。

最終的に、10進数の168は2進数で10101000になります。再び、下の行の1に対応する10進数の値を合計すると、168になります。つまり、128 + 32 + 8 = 168です。
3番目のオクテットでは、1があります。表の中で1から完全に引くことができるのは1だけです。そこで、表の1に1を割り当て、前に0を追加します。

その結果、10進数の1は2進数で00000001になります。
最後に、5があります。表から、5から完全に引くことができるのは4だけです。左のすべての値に0を割り当てます。
5から4を引くことはできますか?はい。4に1を割り当てます。

5-4 = 1
次に、2から1を引くことはできますか?いいえ。0を割り当てます。

最後に、1から1を引くことができますか?はい。私たちは1を割り当てます。

5の10進数は、2進数の00000101に対応します。
最終的に、次の変換が得られます。
192 => 11000000 168 => 10101000 1 => 00000001 5 => 00000101
したがって、192.168.1.5は、2進形式で11000000.10101000.00000001.00000101に変換されます。
サブネットマスク/ネットワークマスクの理解
我々は以前述べたように、TCP/IPネットワーク内のすべてのホストには一意のIPアドレスが必要であり、ほとんどの場合、DHCPプロトコルを使用してルーターによって動的に割り当てられます。 DHCPプロトコル(Dynamic Host Configuration Protocol)は、IPネットワーク内のホストにIPアドレスを動的に割り当てるサービスです。
しかし、IPのどの部分がネットワークセクションに予約され、どのセクションがホストシステムによって使用可能かをどのように決定しますか?これがサブネットマスクまたはネットワークマスクの役割です。
A subnet is an additional component to an IP address that distinguishes the network & host portion of your network. Just like an IP address, the subnet is a 32-bit address and can be written in either decimal or binary notation.
サブネットの目的は、IPアドレスのネットワーク部分とホスト部分の境界を引くことです。 IPアドレスの各ビットに対して、サブネットまたはネットマスクが値を割り当てます。
ネットワーク部分では、ビットをオンにして値1を割り当て、ホスト部分ではビットをオフにして値0を割り当てます。したがって、すべてのビットが1に設定されると、IPアドレスのネットワーク部分を表すビットに対応し、すべてのビットが0に設定されると、IPのホストアドレスを表すビットに対応します。
A commonly used subnet mask is the Class C subnet which is 255.255.255.0.
以下の表は、10進数と2進数で示されるネットワークマスクを示しています。

これで、ネットワーキング基礎シリーズの第2部が終わります。10進数からバイナリIPへの変換、サブネットマスク、および各IPアドレスクラスのデフォルトサブネットマスクについてカバーしました。
Source:
https://www.tecmint.com/learn-binary-and-decimal-numbers-in-networking/