ホストアドレス

読み:ほすとあどれす / 英語表記:host address

IPアドレスのうち、ネットワークの中の個々の機器を識別する部分(ホスト部)。IPアドレスaとサブネットマスクmから、a AND (NOT m)で求められる。

イマシルちゃんの解説

IPアドレスは「〇〇町」の部分(ネットワーク部)と、「〇番地」の部分(ホスト部)に分かれてるんだったね。

サブネットマスクは、町の部分が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アドレス)0100101175
m(サブネットマスク)11000000192
NOT m0011111163
ネットワーク部0100000064
ホスト部0000101111
ホスト部をすべて101111111127

ネットワークアドレス 192.168.10.64、ホストアドレス(ホスト部の値)11、ブロードキャストアドレス 192.168.10.127 となる。ネットワークアドレスとホスト部の値を足すと、元のIPアドレスに戻る(64 + 11 = 75)。

間違えやすい式

式結果
~a & mIPアドレスを反転させたもののネットワーク部。意味のない値
~a | m意味のない値
a & ~mホストアドレス(正しい)
a | ~mブロードキャストアドレス

反転させるのは、IPアドレスではなくサブネットマスクのほうである。

ホスト部のビット数と使えるアドレス数

ホスト部のビット数をnとすると、ホストに割り当てられるアドレスの数は 2^n − 2 である。ホスト部がすべて0(ネットワークアドレス)と、すべて1(ブロードキャストアドレス)は、ホストに割り当てられないためである。

プレフィックス長ホスト部のビット数割り当てられるホスト数
/248254
/26662
/28414
/3022

IPv6の場合

IPv6では、ホスト部に当たる部分をインタフェースIDと呼び、通常は下位の64ビットである。上位の64ビット(プレフィックス)がネットワークを表す。

実際の試験ではここに出る!

この用語が出てくる記事

↑