タグ : ネットワーク講座

IPアドレス「IPv4枯渇時計」

IPv4枯渇時計
世界中であとどのくらいIPアドレスが残っているか?を表す時計です。

少し前にIPアドレスの枯渇問題についてふれましたが、今の時点でIPアドレス(IPv4)がどれだけ残っているでしょうか?

IPv4枯渇時計

IPv4枯渇時計


(2010年8月24日時点)

ここでのX-dayは、IPv4が枯渇する日。
数ヶ月前、NHKの番組「IPアドレスについて」やっていたのですが、そのときはX-dayが2011年9月だったハズ。
上記の画像では、X-dayまで2011年5月30日になっています。
2011年5月30日までもつ保証はないということですね。
あと9ヶ月で世界中のIPアドレス(IPv4)がなくなってしまいます。

IPv4アドレスブロックの推移

追記:2011年1月13日
X-dayが2011年2月14日で残り29日となっています。

IPアドレスとドメイン名

IPアドレスとドメイン名の関係についてです。
ドメインといえば、「xxx.com」という形でサイトのURLに使われていますよね。

IPアドレスは人間にとってはわかりづらいので、グローバルIPを文字に置き換えてデータをやり取りします。
その際、DNSという仕組みを使いドメイン名に対応するグローバルIPを取得しています。

グローバルIPとドメイン名は1対1とは限りません。
1つのグローバルIPに複数のドメインを関連付けたり、逆に複数のグローバルIPに対して1つのドメインを関連付けたりすることもできます。

ドメイン名は4つのブロックで分けられています。

トップレベルドメイン 国を表す。jp(日本)、uk(イギリス)、ca(カナダ)
第2レベルドメイン 組織の種類 ac(教育機関)、co(企業)、go(政府機関)など
第3レベルドメイン 組織の名称
第4レベルドメイン ホスト名やサブドメインなどドメイン名を取得した団体・個人が自由に決め管理

com(アメリカ)は、商業用として第2レベルに登録されています。

ドメイン名・サブドメイン名・ホスト名を省略せずにすべて指定した記述形式のことをFQDN(完全修飾ドメイン名)といいます。
たとえば、「www.google.co.jp」はFQDN。「google.co.jp」は省略しているのでFQDNではありません。

IPアドレス「VLSMとCIDR」

IPアドレスを効率的に使うために、可変長サブネットマスク(VLSM)が考えだされました。

IPアドレスとサブネットマスクの組み合わせでは、1つのネットワーク内ではすべて同じサブネットマスクを使います。
サブネットごとに必要なIPアドレスの数が違うことも多く効率的ではありません。

VLSMを使えば、ネットワーク構成に応じてサブネットマスクを変更し、効率よくIPアドレスを使うことができます。

さらに、IPアドレスのクラスで分ける概念をなくして自由にIPアドレスの数を決められる「クラスレスアドレッシング」というものがありあmす。
クラスレスアドレッシングを実現するために、「CIDR」が使われてます。
CIDRでは、全体の32ビットのうち、先頭から何ビットがネットワークアドレスなのかというプレフィックス長を「/」とビットで表します。
クラスレスのCIDRは、どこまでがネットワークアドレスの部分なのかを判断するために、IPアドレスに加え、プレフィックス長が必要になります。

クラス プライベートIPアドレス サブネットマスク CIDR表記
クラスA 10.0.0.0~010.255.255.255 255.0.0.0 10.0.0.0/8
クラスB 172.016.0.0~172.031.255.255 255.240.0.0 172.16.0.0/12
クラスC 192.168.0.0~192.168.255.255 255.255.0.0 192.168.0.0/16

IPアドレスのクラスとサブネットマスク

IPアドレスのクラス

クラスA 「10.0.0.0~10.255.255.255」
クラスB 「172.16.0.0~172.31.255.255」
クラスC 「192.168.0.0~192.168.255.255」
クラスD 「224.0.0.0~239.255.255.255」
クラスE 「240.0.0.0~255.255.255.255」

クラスAはネットワークアドレス部は8ビット、ホスト部は24ビットです。
クラスBはネットワークアドレス部は16ビット、ホスト部は16ビット。
クラスCはネットワークアドレス部は24ビット、ホスト部は8ビットです。
クラスDはマルチキャストアドレス。
クラスEはIANAが実験用に使っています。

マルチキャストアドレスは、複数の宛先にデータを送るときに使われます。

サブネットマスク

先頭からどこまでがネットワークアドレスかを表すため「サブネットマスク」と組み合わせて使う「サブネッティング」という方法があります。
サブネットマスクは2進数でネットワークアドレスを1、ホストアドレスを0とし、IPアドレスと同様10進数で表します。
サブネットマスクが2進数で先頭から1が24個、残りが0なら、ネットワークアドレスが先頭から24ビットという意味になります。
10進数にすると「255.255.255.0」となります。

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

IPアドレスには、インターネットで通用する「プライベートIP」と「グローバルIP」があります。

プライベートIPは、1つのネットワークの中だけで有効なIPアドレスです。
ローカルIPとも言われます。
(外部から利用できない社内LANなど)

プライベートIPは、ネットワーク管理者が自由に割り当てることができるIPアドレスです。
クラスA~Eの5つに分けられます。
クラスA 「10.0.0.0~10.255.255.255」
クラスB 「172.16.0.0~172.31.255.255」
クラスC 「192.168.0.0~192.168.255.255」
クラスD 「224.0.0.0~239.255.255.255」
クラスE 「240.0.0.0~255.255.255.255」
が指定されています。

グローバルIPは、インターネットに参加しているコンピュータや機器に割り当てられているIPアドレスです。
インターネットの中では、重複したIPが使われないように、ICANNというところが管理しています。
日本では、ICANNから管理を委託されているJPNICが管理しています。
個人や企業はISPからグローバルIPを貸してもらっています。

プライベートIPでは、自分が参加しているネットワークやインターネットでは通用しません。
そこで「ルーター」というネットワーク機器を使います。
ルーターを介して、ほかのネットワークやインターネットとデータのやり取りを行います。

「なぜ、プライベートIPとグローバルIPに分けなければいけないのでしょうか?」
「すべてグローバルIPをつけてしまえばよいのではないのか?」
という疑問が浮かびませんでしたか?

グローバルIPの数は限られています。
なので、グローバルIPを無駄に消費してしまわないような仕組みになっているのです。
前回のIPアドレスでもふれた枯渇問題は、無駄な消費をしないようにしていても起こってしまっているのです。
約43億個ですから、世界の人口60億人超え、発展途上国の経済が先進国を上回ってきた今、足りなくなって当然ですね。

また、あなたが今使っているパソコンの他に、1台パソコンを買い増したら、いちいちISPに申請してグローバルIPを追加してもらうなんて面倒だし嫌ですよね。
プライベートIPなら、自分で買ってきたパソコンに割り当てればよいだけで済みます。
(ルーターから自動的にプライベートIPが割り当てられているなら意識しないかもしれませんが)

また、セキュリティの問題もあったりします。
直接グローバルIPが割り当てられえいると、外部の侵入者を許しやすくなり攻撃されてしまうかもしれません。

こういう様々な問題をルーターが解消してくれているのです。
ルーターはグローバルIPを1つ割り当ててもらい、LAN上のコンピュータが複数あってもは、ルーターを介してデータのやり取りを行うことができるようにしています。
ルーターよりも手前(たとえばあなたが参加しているLAN)では、プライベートIPを使用します。
ルーターよりも先(インターネットなど)ではグローバルIPを借りてデータのやり取りを行っています。

プライベートIPとグローバルIPは、うまく使い分けられているんです。

IPアドレス(インターネット層)

TCP/IPプロトコル「インターネット層」IPアドレスをもう少し詳しく。

IPアドレスは、インターネット層のIPプロトコルが最終的にデータのやりとりをするPCなどの機器を特定するための識別子です。
TCP/IPに参加している機器はIPアドレスが付けられます。
クライアントは1台につき1つのIPアドレスを付けるのが一般的です。
サーバーやネッワーク機器などは、複数のIPアドレスが付けられることもあります。

IPプロトコルがつくるデータグラムのヘッダには、自分のIPアドレスと通信相手のIPアドレスの情報が含まれています。
IPプロトコルは、通信相手のIPアドレスの情報を参照し、「どのネットワークを経由していくか」ということを決定することがルーティングを行います。

IPアドレスには、べージョンがあり、現在普及している「IPv4
IPv4は、現在普及している全32ビットのIPアドレスを使用した通信方式のことです。
「192.168.0.1」
のように表記します。

アドレス資源を32ビットで管理しているため、識別できるコンピュータの最大数は42億9496万7296台です。
IPv4のIPアドレス約43億個なので、アドレス資源の枯渇が問題になりました。
2010年8月時点で、残り5%ということろまできています。(IPv4枯渇時計

そこで、IPアドレスを128ビットで管理する「IPv6」に移行を進めています。
IPv6の表記は
「2031:0000:130F:0000:0204:76ff:fe9c:c041」
のようにします。

IPv6では、約340澗(340兆の1兆倍の1兆倍)個のアドレスが使えるようになります。(2の128乗)
「澗」という単位までいってしまいます。
これから、枯渇の心配はなさそうですね。(うまく普及がすすんでいないようですが・・・)

IPv6の普及状況

ポート番号の種類

ポート番号の種類

ポート番号は0~65535番まであります。

0~1023番は「ウェルノウンポート番号(the Well Known Ports)
1024~49151番は「予約済みポート番号(the Registered Ports)
49152~65535番は「動的・プライベートポート番号(the Dynamic and / or Private Ports)

各範囲のポート番号の役割

ウェルノウンポート番号は、特定の用途に使用するポート番号としてICANNの一部であるIANAという組織が管理しています。

予約済みポート番号は、サービスやアプリケーションごとに割り当てられたポート番号です。IANAが登録を受け付けています。

動的・プライベートポート番号は、自由に使えるポート番号です。クライアントはこの範囲のポート番号を使います。
クライアント側はこの範囲を使います。
「ポート解放」をするのも、動的・プライベートポート番号の49152~65535番を使います。

主なウェルノウンポート番号

ポート番号 TCP/IP プロトコル(Protocol) 用途
20 TCP ftp-data ファイル転送(データ本体)
21 TCP ftp ファイル転送(コントロール)
22 TCP ssh リモートログイン(セキュア)
23 TCP telnet リモートログイン
25 TCP SMTP メール送信
53 TCP/UDP domain DNS(名前解決はUDP,ゾーン転送はTCP)
67 UDP BOOT/DHCP Server IPアドレスの自動取得
68 UDP BOOT/DHCP Client IPアドレスの自動取得
69 UDP TFTP ファイル転送
80 TCP HTTP www
110 TCP POP3 メール受信
123 UDP NTP 時刻合わせ
143 TCP imap メール受信
443 TCP https www(セキュア)
520 UDP RIP ルーティングプロトコル

ポート番号って??

「○番のポートを解放してください。」ってなんだろう?って思ったことある人いませんか?
P2Pソフトを使っていた人は、ポート解放をしていたと思いますが、ポートってなんでしょうか?

ポートとは

アプリケーション層のソフトウェアとトランスポート層(TCPとUDP)でデータをやりとりするための仮想的な通路の出入口ことです。
いろいろな出入口(ポート)がたくさんあるので、番号をつけて識別しています。

ネットでメールやウェブ閲覧などを同時に行えるのも、ポートが複数存在しているからです。
例えば、SMTP(メール)は25番だったり、HTTP(ウェブ)は80番といったふうに割り振られています。
主なポート番号はこちらを参照)

プログラムでポートを用いて通信するには、一般にソケットと呼ばれる仕組みを使います。
ソケットとは、通信の端点のことで、2台のコンピュータが通信しているとき、その通信路の両端、すなわちそれぞれのコンピュータにソケットが存在します。

「トランスポート層」の働きはこちらを参照してください。

サーバーとのデータのやり取りを考えてみましょう。
クライアント側からの要求(データ)をサーバーに送るときにTCPセグメントで、ヘッダを付け加えます。
この一連の流れは『TCP/IP「各レイヤの動き・カプセル化」』を参照)
このヘッダには、ポート番号の情報を宛先として加えています。
サーバーは、ヘッダをみて、どのポート番号に要求されたデータを送ればよいのかを判断しています。

普段何気なくインターネットを楽しんでいたりしますが、ネットワークだけみても裏では多くの処理がされているのですね。

TCP/IP「各レイヤの動き・カプセル化」

TCP/IPがどのように働いているのか、各レイヤごとにみてみよう。

「メールを送信」を例にしてみていきます。

各レイヤの動き

ユーザーがメーラーを使ってメールを作成します。
一般的なメーラーはアプリケーション層のプロトコルSMTPに対応していますので、SMTPの決まりごとに沿って「メール」に必要な情報をヘッダとして付けます。
下位のレイヤに渡されます。

アプリケーション層(SMTP)からトランスポート層(TCP)に渡され処理が行われます。
データを分割し、メール受信側のTCPが処理できるように必要な情報をヘッダに付けます。
このとき、「TCPセグメント」と呼ばれます。

さらに、下位のレイヤに渡されます。

トランスポート層(TCP)からインターネット層(IP)に渡され処理が行われます。
データを分割し、必要な情報をヘッダに付けます。
このとき、「IPデータグラム」と呼ばれます。

さらに、下位のレイヤに渡されます。

ネットワークインターフェイス層(イーサネット)で受け取ったIPデータグラムを処理が行われます。
イーサネットでは、ヘッダとトレーラが付けられます。
このとき「フレーム」と呼ばれます。
電気信号に変換されてネットワークへと送られます。

受信側は、この手順と逆にネットワークインターフェイス層から上位レイヤへ処理が行われます。

ヘッダには、データの宛先や送信元情報、エラーチェック情報といった管理用のデータが格納されます。

セグメント、データグラム、フレームなどの呼び分けは以下を参照してください。
TCP/IPの各層における一般的な呼び方

カプセル化

各レイヤで作成した「セグメント」や「データグラム」などは、ヘッダと本体データを1つのかたまりとして扱われ、上位層のデータを順々に下位層の情報で包み込んでいきます。
これを「カプセル化」と呼びます。

「パケット」の呼び分け

携帯電話が普及して「パケット」って名称は一般的になってきました。
「パケット」にも、細かく各階層(レイヤ)で呼び方が違うこと知っていますか?

TCP/IPとOSI参照モデルでも、パケットの呼び方が違います。
OSI参照モデルでは「PDU」と呼んでいます。

TCP/IP内でも、レイヤごとに作るパケットを呼び分けることもあります。
それぞれのレイヤごとに固有の呼び名があるのです。

TCP/IPプロトコル 取り扱われるデータの単位(PDU)
アプリケーション層 データ/メッセージ
トランスポート層 セグメント
インターネット層 パケット/データグラム
データリンク層 フレーム
物理層 ビット(電気信号)

また、「IPパケット」や「TCPパケット」とプロトコル名を最初に加える呼び方も使われたりします。

「パケット」にも、いろいろと呼び方が違っていたりしますが、「違う呼び方で呼ぶことがあるんだ。」程度に覚えておけばあまりこだわる必要はないかもしれません。