コンピュータで扱うIPアドレスは、現行の32bit(4byte)、または128biteのサイズになっています。
しかし、我々人間が32ビットのIPアドレスを表記する場合、それぞれのバイトを10進数にして、コンマで区切って表現するのが一般的です。
例えば
01001010011111011110101110111000 の32ビットであれば
01001010 01111101 11101011 10111000
のバイトで区切り、10進数にして、
それを、ドットで区切って、74.125.235.184 という表記になります。
しかし、これでも一般の人にとっては、IPアドレスの番号は扱い難い番号といえます。
そこで、一般にインターネットを使う場合は、次のようにドメイン名を使います。
ドメイン名は、サーバーのIPアドレスを表現するためのもので、
IPアドレスに名前を付けたものと考えると分かりやすでしょう。
クライアントからサーバーに接続する時、コンピュータ内部ではIPアドレスを使います。
ですからインターネットブラウザでは、、次のようにIPアドレスの表記でも対応できます。
上記で分かるように、www.google.co.jpに対応するのが
74.125.235.184になっています。
なお上記のIPアドレスで、現在のwww.google.co.jpを閲覧できないかもしれません。(以前は閲覧できました。)
IPアドレスとドメイン名の対応表はDNSで管理され、それは以下で示すように「IPアドレス管理指定事業者」で管理され、
IPアドレスが変わることもあるのです。
windowsで調べる場合は「nslookup google.co.jp」、Linuxは「dig google.co.jp」のコマンドライン操作で
google.co.jpのIPアドレス情報が得られます。
それによると現在(2015年5月)は、「173.194.126.255」などが使えています。今後、また変わることでしょう。
上記例のwww.google.co.jp
において、正確には、google.co.jpの部分がドメイン名で、
wwwはサーバーの名前(ホスト名)になっています。
(ホスト名も含めたドメイン名は、完全修飾ドメイン名(FQDN:Fully Qualified Domain Name:フリー・クオリファイド・ドメイン・ネーム) と呼ばれます)。
そしてドメインは、階層化されていて、それぞれの階層をドット( . )で区切る形になっており、
後ろから順に『第1またはトップレベルドメイン(TLD:Top Level Domain)』、
『第2レベルドメイン』、『第3レベルドメイン』、第4、第5、...呼ばれます。
(階層的には、『トップレベルドメイン』が最上位になります)
ドメインの直訳は『領域』ですが、最も大きな領域指定が『トップレベルドメイン』で、
その領域の中にある次の大きさの領域を『第2レベルドメイン』で指定し、その中の次の領域を『第3レベルドメイン』
で指定します。(住所を順番に指定しているに似ています。)
各ドメインの使われ方は、上位のドメインによって異なりますが、jpのトップレベルでは次のようになります。
なお、この例における『トップレベルドメイン』は、国ごとに割り当てられるccTLD(country code Top Level Domain)に分類されますが、
他にgTLD(generic Top Level Domain)と呼ばれ名前(例:com、org、net、biz、info)が存在します。
そして、IPアドレスとドメイン名の割り当ては自由にでききるわけではなく、
ICANN
(Internet Corporation for Assigned Names and Numbers)及び、
その下部組織のNIC(Network Information Center)と呼ばれる非営利機関が管理しています。
日本の場合は、NICの下部組織に位置する
JPNIC
(JaPan Network Information Center)が、これら資源を管理しています。
(実質的には、「IPアドレス管理指定事業者」の管理を行っています。)
なお、「jp」トップレベルドメインは、「汎用JPドメイン」、「属性型JPドメイン」、「地域型JPドメイン」に分けることができます。
これは、セカンドレベルドメインで、汎用JP型、組織種別型JP、地域型JP、に分かれるからです。
「汎用JPドメイン」は、日本国内に住所があれば、個人・法人を問わず、ひらがなや漢字を使ったドメイン名でも登録できます。
(JPRS「株式会社日本レジストリサービス」が登録業務を行っています)
対して、「属性型JPドメイン」は、色々な制限があります。
この組織種別型JPのセカンドレベルドメイン名として、「co」、「ac」、「ne」などが有名ですね。
「co」セカンドレベルドメインは、会社組織用で、一つの組織に対して、一つのドメインしか登録できない規則になっています。
また、「ac」セカンドレベルドメインは教育機関用でしか使えません。
「ne」は、プロバイダなどのネットワークサービス用で、個々のサービスに対して一つのドメインが登録できます。
ちょうど現在、IP version 4 (IPv4)の番号割り当てが足りなくなり、IP version 6 (IPv6)に移行中の状況です。
(IPv4は、IANA(アイアナ)からRIR(Regional internal Registry)のIPアドレスの割り振りは2011年2月に枯渇しました。)
今後しばらくは、IPv4とIPv6が混在する形で運用するでしょう。
IPv4のアドレスは32bitに対してIPv6は16byte(128bit長)になります。
ですが、ネットワーク部とホスト部に分かれる構造や、あて先のネットワークに伝達するためにネットワーク部を使う考えは同じです。
ほとんど場合、IPv6のネットワーク部サイズは64ビット固定長にするため、ルータ内部のハードが簡単になる分だけ高速化しやすいようです。
この場合のネットワーク部に対応する64ビット部分が「ネットワークプレフィックス」、
ホスト部に対応する部分は「インターフェイスID」と呼び、共に64ビットになります。
(なおネットワークプレフィックスが64ビットに決まっているわけではありません。正確には、ネットワークプレフィックスをnビットとすると、
インターフェイスIDの範囲は、「128-n]のサイズと定義されています。)
IPv4と違って、全ノードがグローバルな接続性を持つので、環境が整えばNAT/NAPTを使わずに直接インターネットの接続が可能になる。
2バイトずつ“:”で区切って、16進数で表記しています。(rfc3986)
16バイト(128bit)あるので、“:”により8ブロックに分けた表現で、1つのブロックは4桁になります。
例を示します。 →2001:0000:4137:9e76:2878:289d:3f57:fffc
そして IPv6のアドレス表記では、次の簡略表現ができます。
各ブロックの先頭にある「0」は省略可能
0203なら203、0023なら23 と省略できます。
なお 0000の場合は 0 が一つと表現です。
0000が連続する場合は、一度だけ“::”に置き換え可能になっている。
(複数個所で略してしまうと、どちらにどれだけの0が省略されていたかが分からなくなるため
::が使えるのは1回だけです。)
0のブロックが複数個所で並ぶ場合は、連続がより長い方を::へと省略します。
もし同じ長さの場合は、前方の0の並びを::へと省略します。
また、最後に0が続いた場合は::で終端します。
例→2001:0137:0:0:0:0:0:0なら2001:137::です
IPv4とIPv6とを共存させて用いるための技術です。
具体的には、一つのホストの中で
IPv4とIPv6のアドレスをそれぞれ持って、相手に合わせてどちらでも使える方法です。
IPv4とIPv6のハードは全く違うため、IPv4からIPv6アドレスへの移行するに、相当な時間がかかると予想され、
しばらくはIPv4とIPv6を混在して使われるでしょう。
それを補う一つが「 デュアルスタック 」であり、他に「 トンネリング 」 と呼ばれる手法がある。
なおデュアルスタック環境では、IPv6通信が優先されることが多く、
始めにIPv6通信を試みてその通信が成立しない場合、IPv4通信で再送を試みることがあり、
それは「フォールバック」と呼ばれます。
このIPv4による再送のため遅延が発生ことがあります。
また、フォールバックしない機器も存在する時、通信は成立しないことも生じて
さまざま対策がとられています。