基本情報技術者試験対策(30)「IPアドレス」

スポンサーリンク
IT系

IPアドレスの構造

IPアドレスは、インターネットで、 コンピュータや通信機器を識別するための番号である。 IPアドレスは、全部で32ビットから構成されている。 IPアドレスを表記するときは、32ビットを8ビットずつ4つの部分に分けて、 それぞれの部分をドットで区切って10進数で示す。

例えば、203.104.101.14というIPアドレスのWebサーバがあるとする。このIPアドレスを2進数で表すと、203→11001011、104→01101000、101→01100101、14→00001110なので、 11001011011010000110010100001110になる。 この32ビットの数値が、 コンピュータの内部で取り扱われているIPアドレスだが、人間にはわかりにくいので、203.104.101.14 という表記にする。

アドレスクラス

IPアドレスは、 上位桁がネットワーク (LAN) を識別するネットワークアドレスであり、下位桁がコンピュータや通信機器を識別するホストアドレスである。 ネットワークアドレスとホストアドレスの区切り方には、クラスAクラスBクラスCがある。 これらをアドレスクラスと呼ぶ。

クラスAは、上位8ビットと下位24ビットに区切り、 クラスBは、上位16 ビットと下位16ビットに区切り、 クラスCは、 上位24ビットと下位8ビットに区切る。

IPアドレスが、 どのクラスなのかは、2進数で表したときの上位桁を見ればわかるようになっている (下図)。 最上位桁が0ならクラスA、上位2桁が10ならクラスB、 上位3桁が110ならクラスCである。

サブネットマスク

IPアドレスのネットワークアドレスとホストアドレスを、クラスA、 クラスB、クラスCだけで区切るのは古い方法である。 現在では、サブネットマスクと呼ばれる方法を使うのが一般的である。

サブネットマスクは、IPアドレスと同じ32ビットの数値である。IPアドレスと同様に、32ビットを8ビットずつ4つの部分に分けて、それぞれの部分をドットで区切って10進数で示す。 例えば、 255.255.255.0 と表記されたサブネットマスクは、 実際には11111111111111111111111100000000という32ビットの数値である。

IPアドレスとサブネットマスクをAND演算すると、 ホストアドレスの部分だけがゼロクリアされて、 ネットワークアドレス (厳密には、ネットワークアドレスとサブネットアドレスを合わせたアドレスだが、ネットワークアドレスだと考えても問題ない)が得られるようになっている。例えば、203.104.101.14というIPアドレスと、255.255.255.0 というサブネットマスクをAND演算すると、 203.104.101.0というネットワークアドレスが得られる(下図)。

サブネットマスクを2進数で表すと、 上位桁に1が並び、下位桁に0が並んだものとなる。1が並んだ部分がネットワークアドレスに対応し、0が並んだ部分がホストアドレスに対応する。 サブネットマスクを使うことで、 クラスA、クラスB、クラスCより細かく、ホストアドレスの桁数を指定できる。例えば、11111111111111111111111111110000というサブネットマスクを使えば、IPアドレスの下位4ビットをホストアドレスに指定できる。(下図)

使ってはいけないホストアドレス

すべての桁が0のホストアドレス0000と、 すべての桁が1のホストアドレス1111を使ってはいけない理由は、 それぞれの用途が決められているからである。 すべての桁が0のホストアドレスは、 ネットワークアドレスを表すときに使う。 IPアドレスの入れ物のサイズは、32ビットに決まっているので、下位にあるホストアドレスの部分をすべて0にすることによって、 上位にあるネットワークアドレスを取り出したことにするのである。 すべての桁が1のホストアドレスは、同じネットワークにあるすべてのホスト宛にデータを送るときに使われる。 これをブロードキャスト (broadcast=ー斉同報)と呼ぶ。

CIDR表記

サブネットマスクと同様の考えで、203.104.101.14/28のようにして、ネットワークアドレスとホストアドレスの区切りを細かく示す表記方法もある。 これをCIDR (Classless Inter Domain Routing: サイダー) 表記と呼ぶ。

/28は、上位28ビットがネットワークアドレスであることを示す。 IPアドレスは、全体で32ビットなので、残りの下位4ビットがホストアドレスである。

IPアドレスの割り当て

ホストにIPアドレスを割り当てる場合、以下のルールに従わなければならない。

【ルール1】ネットワークアドレスは、 LANを識別する番号なので、 同じLAN内にあるホストには、同じネットワークアドレスを割り当てなければならない。

【ルール2】同じLAN内に、同じホストアドレスのホストが複数あってはいけない。

【ルール3】2進数で表して、すべてが0になるホストアドレスと、すべてが1になるホストアドレスを割り当ててはいけない。

例えば、ネットワークAとネットワークBという2つのLANがあり、両者がルータで結ばれているとする。(下図)ネットワークAのネットワークアドレスは、192.168.1.0であり、 サブネットマスクは、255.255.255.0である。ネットワークBのネットワークアドレスは、 192.168.2.0であり、サブネットマスクは、255.255.255.0である。 この場合に、それぞれのLANのホストに何というIPアドレスが割り当てられるかを考えてみよう。 2つのLANをつなぐルータには、それぞれのLANに合わせて、 2つのIPアドレスを設定する。

ネットワークAのホストには、 同じ192.168.1.0 というネットワークアドレスを付けなければならない。 下位8ビットがホストアドレスなので、00000000と11111111を除いた00000001~11111110が使える。 これを10進数で表すと、1~254である。従って、 ネットワークAのホストには、 192.168.1.1~ 192.168.1.254というIPアドレスを割り当てられる。 同様に、ネットワークBのホストには、192.168.2.1~192.168.2.254というIPアドレスを割り当てられる。 他のホストと重複しないようにして、IPアドレスを割り当てた例を下図に示す。

プライベートIPアドレスとグローバルIPアドレス

IPアドレスは、全部で32ビットである。 32ビットで表せる番号の数は、約43億通りである。 現在の地球の人口が、 約79億人だから、 約43億通りのIPアドレスでは、まったく足らない。

そこで、同じIPアドレスを使い回す方法が考案された。 IPアドレスの番号の範囲を、社内LANだけで通用するプライベートIPアドレスと、社外すなわちインターネットで通用するグローバルIPアドレスに分け、LANが異なれば、 同じプライベートIPアドレスを使い回して割り当てられるというルールにしたのである。

ただし、プライベートIPアドレスを使って、 インターネットを利用することはできない。 そこで、LANに1つだけグローバルIPアドレスを割り当て、インターネットにデータを送信する際に、 差出人のIPアドレスをプライベートIPアドレスからグローバルIPアドレスに書き換えるようにする。逆にインターネットからデータを受信する際には、宛先のIPアドレスをグローバルアドレスからプライベートIPアドレスに書き換える。 この仕組みをNAT (Network Address Translation) と呼ぶ。 ルータの中には、NATの機能を持つものがある(下図)。

しかし、ただ単に、プライベートIPアドレスとグローバルIPアドレスを変換しただけでは、同時に1つのホストだけしかインターネットと通信できない。例えば、ホストAとホストBが同時にインターネットに送信した場合、インターネットから受信したデータの宛先グローバルIPアドレスを、 どちらのホストのプライベートIPアドレスに変換すればよいかがわからないからである。

そこで、実際には、IPアドレスだけでなく、 ポート番号も変換する方法が使われていて、これをNAPT (Network Address Port Translation) またはIPマスカレード (masquerade=仮面舞踏会) と呼ぶ。

インターネットにデータを送信する際に、プライベートIPアドレスをグローバルIPアドレスに変換し、 さらにポート番号を別の番号(ホストを識別するための番号)に変換し て、その変換情報をルータの内部に記憶する。逆に、インターネットからデータを受信する際には、宛先ポート番号でホストを識別して、グローバルIPアドレスをプライベートIPアドレスに変換し、ポート番号を元のポート番号 (アプリを識別する本来の番号) に変換する。 (下図)。

IPv6

IPアドレスが足りなくなることを防ぐために、 ビット数を従来の32ビット から128ビットに増やしたIPv6 (Internet Protocol version 6) という新しい規格が作られた。 128ビットあれば、単純に計算して2128≒ 3.4×1038通り(340兆通りの1兆倍の1兆倍)の番号を割り当てられるので、IPアドレスが足りなくなることはない。 IPv6に対して、 従来の規格をIPv4 (Internet Protocol version 4) と呼ぶ。 現在のインターネットの主流はIPv4だが、IPv6も徐々に使われ始め、両者が併用されている。

IPv6では、 128ビットを16ビットごとに8つの部分に分け、それぞれを4桁の16進数で表して、コロン (:)で区切る。 例えば、 2001:0db8:0000:0000:0000: ff00:0042:8329 のように表記する。 0000:0000:0000のように0が続いた部分は、省略して2個のコロン (::) で表せる。 0042のように、 上位桁が0になっている部分は、0を省略して42と表せる。

なお、IPv6にも、IPv4のプライベートIPアドレスとグローバルIPアドレスに相当するものがある。 グローバルIPアドレスを割り当てると、アド レスの変更が容易ではなくなり、不正アクセスの危険性も高まるからである。

参考)情報処理教科書 出るとこだけ!基本情報技術者[科目A][科目B]2025年版

コメント

タイトルとURLをコピーしました