IP(Internet Protocol)には、IPv4とIPv6の2種類がある。どちらのバージョンも、IPパケットは「IPヘッダー」と「データ部」という2つの部分で構成されている。
IPヘッダーはIPパケットを目的の場所に届けるための宛先ラベルに相当する部分、データ部はアプリケーションのデータを含むTCP(Transmission Control Protocol)セグメントなどが格納される部分だ。
通信に必要な情報を格納
IPヘッダーには、IPパケットの宛先や送信元を示すIPアドレスが含まれている。IPアドレスは、インターネットや企業ネットワーク内での機器の場所を表す情報だ。ネットワーク機器ごとに異なるIPアドレスが割り当てられる。
宛先IPアドレスは、IPパケットを届ける相手の機器を示す。送信元IPアドレスは、IPパケットを送り出す機器を示す情報だ。宛先の機器が、受信したIPパケットに対して返信するときなどに使われる。
IPヘッダーには、IPアドレス以外にも様々な情報が含まれている。例えば、「バージョン」はIPのバージョンを表す情報だ。IPv4であれば「4(2進数で『0100』)」、IPv6だと「6(2進数で『0110』)」という値が入る。
「TTL(Time To Live)(IPv6での名称は『ホップリミット』)」は、IPパケットの最大転送数を示す値だ。インターネットでは、ネットワークとネットワークを「ルーター」という装置で接続する。ルーターがIPパケットを転送することで、ネットワーク越しの通信が可能になる。ルーターがIPパケットを転送するたびにTTLの値が1ずつ減少し、0になるとそのIPパケットは破棄される。
IPv4は32ビットの数字列
IPヘッダーの中でも重要な役割を担う、IPアドレスについて詳しく見ていこう。IPアドレスはIPv4とIPv6で表記が異なる。IPv4のIPアドレスは32ビットの数字列で表す。2進数では0と1が32個並ぶビット列だ。ただし、2進数だと人間には分かりにくい。そこで8桁ずつピリオドで区切り、10進数に変換して表記するのが一般的だ。この区切り部分をオクテットと呼ぶ。
例えば、「11000000101010000000000000000001」というIPアドレスを「11000000.10101000.00000000.00000001」と区切り、それぞれを10進数に変換して「192.168.0.1」と表記する。
IPv4アドレスは、ネットワークを識別するための「ネットワーク部」と、ネットワーク上の端末を識別するための「ホスト部」から成る。住所で例えると前者は都道府県市町村、ホスト部は番地に当たる。ネットワーク部の長さは固定ではないので、IPアドレスだけではどこまでがネットワーク部なのかが分からない。そこでサブネットマスクを使って、ネットワーク部の範囲を占めす。
サブネットマスクは、IPアドレスと同じく32ビットの数字列で表す。IPアドレスのネットワーク部のビットを「1」、ホスト部の部分を「0」にする。2進数では分かりにくいので、IPアドレスと同様に8桁ずつ区切って10進数で表記することが多い。
例えば、ネットワーク部が24ビットのサブネットマスクは「255.255.255.0」になる。IPアドレスの後ろに「/24」とネットワーク部のビット数を付記する方法もある。プレフィックス表記やCIDR(Classless Inter-Domain Routing)表記と呼ばれる。