ホストアドレス
IPv4アドレスのうち、ネットワークの中の個々の機器を識別するホスト部の値。IPv4アドレスaとサブネットマスクmから、a AND (NOT m)で求められる。
イマシルちゃんの解説
IPv4アドレスには、どのネットワークに属するかを示すネットワーク部と、その中の機器を区別するホスト部があるんだ。
その機器を区別する部分の値を、この記事ではホストアドレスと呼ぶよ。
境目を示すサブネットマスクは、取り出す位置を決める型紙のように使えるんだ。
まずマスクの各ビットを反転するNOT演算で、残したい側だけが1になるようにするよ。
次にIPv4アドレスとAND演算をするんだ。
ANDは両方が1のときだけ1になる計算だから、ネットワークを示す部分が0になり、機器を区別する部分だけを取り出せるよ。
この解説はわかりやすかったですか?
より深い解説
定義
IPv4アドレスは、上位のビットのネットワーク部と、下位のビットのホスト部からなる。ホスト部は、同じネットワークに属する機器(ホスト)を互いに区別するための部分である。ホスト部の値、またはネットワーク部を0にしてホスト部だけを残したアドレスを、ホストアドレスと呼ぶ。
どこまでがネットワーク部かは、サブネットマスク(またはプレフィックス長)で決まる。サブネットマスクは、ネットワーク部のビットが1、ホスト部のビットが0になっている。
ビット演算による求め方
IPアドレスをa、サブネットマスクをmとすると、次のように求められる。
| 求めるもの | 式 | 考え方 |
|---|---|---|
| ネットワークアドレス | a AND m | マスクの1の部分(ネットワーク部)だけを残す |
| ホストアドレス | a AND (NOT m) | マスクを反転させ、ホスト部だけを残す |
| ブロードキャストアドレス | a OR (NOT m) | ホスト部をすべて1にする |
プログラムの演算子で書くと、ホストアドレスは a & ~m、ブロードキャストアドレスは a | ~m である。
AND(論理積)は「両方が1のときだけ1」なので、0と組み合わせたビットは必ず0になり、1と組み合わせたビットは元の値が残る。ここから、AND演算は「1のビットの位置だけを取り出す」ふるいとして使える。
計算例
IPアドレス 192.168.10.75、サブネットマスク 255.255.255.192(/26)の場合(第4オクテットだけ)
| 2進数 | 10進数 | |
|---|---|---|
| a(IPアドレス) | 01001011 | 75 |
| m(サブネットマスク) | 11000000 | 192 |
| NOT m | 00111111 | 63 |
| ネットワーク部 | 01000000 | 64 |
| ホスト部 | 00001011 | 11 |
| ホスト部をすべて1 | 01111111 | 127 |
ネットワークアドレス 192.168.10.64、ホストアドレス(ホスト部の値)11、ブロードキャストアドレス 192.168.10.127 となる。ネットワークアドレスとホスト部の値を足すと、元のIPアドレスに戻る(64 + 11 = 75)。
間違えやすい式
| 式 | 結果 |
|---|---|
| ~a & m | IPアドレスを反転させたもののネットワーク部。意味のない値 |
| ~a | m | 意味のない値 |
| a & ~m | ホストアドレス(正しい) |
| a | ~m | ブロードキャストアドレス |
反転させるのは、IPアドレスではなくサブネットマスクのほうである。
ホスト部のビット数と使えるアドレス数
ホスト部のビット数をnとすると、ホストに割り当てられるアドレスの数は 2^n − 2 である。ホスト部がすべて0(ネットワークアドレス)と、すべて1(ブロードキャストアドレス)は、ホストに割り当てられないためである。
| プレフィックス長 | ホスト部のビット数 | 割り当てられるホスト数 |
|---|---|---|
| /24 | 8 | 254 |
| /26 | 6 | 62 |
| /28 | 4 | 14 |
| /30 | 2 | 2 |
IPv6の場合
IPv6では、ホスト部に当たる部分をインタフェースIDと呼び、通常は下位の64ビットである。上位の64ビット(プレフィックス)がネットワークを表す。
実際の試験ではここに出る!全8問
ネットワークスペシャリスト
テクニカルエンジニア(ネットワーク)
- 午前