IPv4 - IPアドレスとは、どういうものなのか?IPv4×IPv6で調べよう!!

あなたのIPアドレスは38.107.191.86で、ホスト名は38.107.191.86です

現在のIPアドレスの規格IPv4とは?

Internet Protocol version 4(インターネットプロトコルバージョン4、IPv4、アイピーブイヨン)は、OSI参照モデルにおいてネットワーク層に位置付けられるプロトコルです。転送の単位であるパケットの経路選択と、その断片化と再統合を主な機能とします。TCP/IPの基本機能としてインターネットなどで世界中広く用いられています。

IPv4 - パケット

IPパケットの先頭には必ずIPヘッダが付加され、それにより経路選択などのIPの機能が実現されています。以下にパケット形式図とそれぞれの領域の役割などを記します。
■バージョン(Version)IPのバージョンであり、IPv4の場合は4が格納されます。
■ヘッダ長(Internet Header Length、IHL)IPヘッダの長さで、4オクテット単位で表されます。この値によりデータの開始位置を知る事が出来ます。
■サービス種別(Type Of Service、TOS)パケットが転送される際に重視するサービスを指定します。ただし、ルータの実装においてパケット毎にサービスを区別する事は容易ではありません。送信元が全てを重視とする設定を行う場合や、ネットワークの運用方針によっては境界に位置するルータが値を書き換える場合もあります。優先度はパケットの優先度を8段階で示します。パケットの送信待ち行列を8個用いて実現する実装もあります。遅延度はパケットを早く宛先へと到達させる事を求めます。転送量はパケットを多く宛先へと到達させる事を求めます。信頼性はパケットを失わず宛先へと到達させる事を求めます。
■全長(Total Length)IPヘッダを含むパケットの全長。
■識別子(Identification)パケットの送信元が一意な値を格納します。断片化したパケットの復元に用いられます。
■フラグ(Various Control Flags)断片化の制御に用います。ビット0は使用しません。ビット1は1の場合に断片化の禁止を意味します。ビット2は断片化された各パケットにおいて、0の場合は最終パケットを意味します。
■断片位置(Fragment Offset)ルータなどがパケットを断片化した際に、その位置を8オクテット単位で格納します。断片化したパケットの復元に用いられます。
■生存時間(Time to Live、TTL)パケットの余命を示す値です。送信元はパケットが経由できるルータ数の上限を設定し、ルータはパケットを転送する毎に値を一つ減らし、値が0になるとパケットは破棄されます。パケットがネットワーク上で無限に巡回する問題を防ぐ効果が有ります。
■プロトコル(Protocol)TCPなどの上位プロトコルを示す値が設定されます。パケットの宛先である装置がパケットを受信すると、この値を用いて上位プロトコルを識別し、その実装へペイロードを渡します。
■チェックサム(検査合計、Header Checksum)IPヘッダの誤り検査に用いられます。転送毎に生存時間の値が変わるため、ルータはチェックサムも転送毎に再計算する必要があります。
■送信元アドレス(Source Address)パケットの送信元アドレスが設定されます。
■宛先アドレス(Destination Address) パケットの送信先アドレスが設定されます。
■拡張情報(Options)可変長の拡張情報が32ビット単位で設定されます。
■データ パケットが伝達すべきペイロードです。

IPv4 - アドレス

IPで用いられる32ビットのアドレスはIPアドレスと呼ばれ、IPアドレスはネットワークアドレスとホストアドレスに分けて用いられます。RFC791において、ネットワークアドレスとホストアドレスの境界は、IPアドレスの先頭のビット列で定められ、境界の位置によりIPアドレスはクラス(class)として分類されました。しかしRFC791の方式は、ホストアドレスの割り当て数が、クラスaでは16777215、クラスbでは65535にものぼります。これ程の膨大な数のホストを収容するネットワークは一般に存在せず、アドレスの利用に無駄を生じました。そこでRFC950においてサブネット(subnet)が定められました。サブネットはホストアドレスの一部をアドレスマスク(address mask)を用いて分割する事により得られ、あるネットワークアドレスを与えられた組織内において、更にネットワークを分割するために用いられます。
RFC1597においては、ある組織内で私的に用いられる下記のプライベートアドレスが定められました。
10.0.0.0~10.255.255.255(10.0.0.0/8)
172.16.0.0~172.31.255.255(172.16.0.0/12)
192.168.0.0~192.168.255.255(192.168.0.0/16)
上記のアドレス以外はグローバルアドレスとも呼ばれるようになります。

IPv4経路選択

ルーティング(routing)とも呼ばれ、パケットを宛先へと転送する機能です。この機能はルータに集約され、多くのホストはデフォルト経路としてルータのアドレスを記述するスタイルを取ることが多いです。
ルータは経路表(ルーティングテーブル、routing table)に基づき経路選択を行います。あるネットワークの構成図とその中心に位置するルータの経路表を右に示します。図中において中心のルータは二つの送受信口を持っており、上の口はether0と名付けられアドレスは192.168.1.1が割り振られています。下の口はether1と名付けられアドレスは10.1.1.1が割り振られています。ルータ内部においてloopbackとはルータ自身を示す送受信口であり、127.0.0.1はルータ自身を現すアドレスです。表中においてdestinationは宛先、nexthopは転送先、interfaceは送信口を意味する。このルータがパケットを受信した際の動作を解説します。192.168.1.1宛のパケットを受信すると、ルータは経路表の宛先を検索し、192.168.1.1/32の行を見つけ、その転送先はルータ自身である事から、自身に宛てられたパケットである事を判別します。192.168.1.2宛のパケットを受信すると、ルータは経路表を検索し、ether0から192.168.1.2に向けてパケットを送出します。10.1.1.2宛のパケットを受信すると、同様にether1から10.1.1.2に向けてパケットを送出します。172.16.1.1宛のパケットを受信すると、ルータは最長一致する172.16/16の行を見つけ、10.1.1.2が172.16.1.1へと到る経路であると判別し、ether1から10.1.1.2に向けてパケットを送出します。10.255.255.255宛のパケットを受信します。このアドレスはブロードキャストアドレスと呼ばれ、10/8のネットワークに接続された全ての装置を宛先とするアドレスです。ether1から10/8のネットワークに接続された全ての装置に向けてパケットを送出します。7.7.7.7宛のパケットを受信します。このアドレスは経路表には存在しないため、defaultの行に最長一致し、ネクストホップである192.168.1.2に向かってパケットを送出します。192.168.1.2はデフォルトゲートウェイやデフォルトルートなどと呼ばれ、通常は端末から見てより中心に位置するルータが設定されます。経路表の構築はルータの管理者が手動で設定する場合と、RIP、OSPFなどのルーティングプロトコルを用いて自動で設定する場合があります。前者は静的経路、後者は動的経路などとも呼ばれます。経路表はパソコンなどにも存在し、Windowsであれば「route print」、UNIX系であれば「netstat -r」で見る事が出来ます。

IPv4の断片化と再統合

プロトコルが転送する単位の最大長を、MTU(最大転送単位、Max Transfer Unit)と呼びます。IPパケットの最大長は65535オクテットですが、IPパケットを伝送すべきデータリンク層のMTUは、IPの最大長と較べると短い場合が多く、例えば通常のイーサネットのMTUは1500オクテットです。断片化(Fragmentation)は、IPパケットがパケットを送出する伝送路のMTUよりも長い場合に発生します。断片化を行う装置はIPパケットを伝送路のMTUに収まる長さに分割し、分割されたパケットのIPヘッダは、全長が分割された長さになり、断片位置には分割された位置が記され、最後のパケット以外は継続フラグが設定されます。識別子は分割された全てのパケットに分割前のパケットのそれが写されます。断片化したパケットの再統合(Reassembly)は、パケットの宛先である装置が行います。ある識別子を持つパケットの断片を受信した宛先は、さらに同じ識別子を持つパケットの断片を受信し、それぞれの断片位置から断片化前のパケットを再統合します。IPヘッダのフラグの禁止ビットを設定すれば、パケットの断片化を禁止できます。この場合は断片化の代わりにICMPの宛先到達不可通知がパケットの送信元に返されます。送信元はこれを利用して宛先に至る経路の最小MTUを調査する事も可能です。パケットの長さを1オクテットずつ減らし、宛先到達不可通知が返らなくなる長さを調べれば良い。断片化は帯域やルータの負荷に無駄(オーバーヘッド)を生じ、スループットの低下となるため好まれません。経路MTU探索を行いMTUを調整するとよい。なお、IPv6では経路上のルータで断片化・再構成を行うことはなく、送信ホストのみで行われます。