インターネットのしくみ(3/4)~ IPアドレス編 ~
2016/12/15
インターネットのしくみ
~ IPアドレス編 ~
まず、通信のおさらいから
通信とは
通信とは、相手に伝え、わかってもらうこと。 <共通認識>
1本線の通信もありますが、多くの相手とつながれば、
低コストで、より便利になります。
ネットワーク
あらかじめ多くの相手とつながった伝送路をネットワークと言います。
ネットワーク上にいる相手の場所を指し示すデータのことをアドレスと言います。
アドレスは通常、データの先頭につけられ、宛先や経路の確認に使われます。
ネットワークで、特定の相手にだけデータを渡すために、
アドレスを見てスイッチングが行われます。
データリンク
ネットワーク内で、データを効率よく通すしくみをデータリンクと言います。
データリンクによって、物理的な道の上に、論理的な道がつくられます。
プロトコル
相手に共通認識を伝えるには、事前のルール決め(プロトコル)が大切です。
プロトコルは地層のように重なっており、これをプロトコルスタックと言います。
ルーティングのおさらい
インターネットは、いくつものネットワークが合体してできた巨大なネットワークです。
異なるデータリンク間も、IPをインターネット共通のルールとして、ルーターで橋渡しします。
IPは、プロトコルスタックの中で、データリンクの上にあるプロトコルです。
IPの宛先指定では、MACアドレスと変換できるIPアドレスを使います。
ルーターの、以下のような動作をルーティングと言います。
インターネットのデータのおさらい
TCPによるデータの分割
インターネットの通信では、いつでも多くの人が通信できるよう、データを細かく分割します。
送信側のTCPでは、データを分割して、先頭にTCPヘッダをつけ、TCPセグメントを作ります。
TCPヘッダには、ポート番号や、分割したデータの整列番号など、
データの管理情報が入ります。
TCPは、アプリとIPとの間で、きちんとデータを管理するためのプロトコルです。
受信側のTCPでは、TCPヘッダを見て、送信側アプリと同じデータに復元し、
受信側アプリに渡します。
IPヘッダとパケット、フレーム
IPでは、TCPセグメントにIPヘッダという荷札をつけ、パケットを作ります。
IPヘッダには、宛先や自分のIPアドレスなどの情報が入ります。
データリンクへパケットを送る時にも、パケットにヘッダをつけてフレームにします。
リクエストとキャッシュ
インターネットの通信は、クライアントからサーバーへのリクエストで始まります。
同じデータのリクエストを繰り返さないよう、クライアント内にキャッシュを残します。
世界に一つだけのIPアドレス
IPアドレスは、多くの機器がつながるインターネット内で、
宛先を1つの機器に絞り込むために必要なアドレスです。
このため、世界中で重複が無いように管理されています。
ただし、全てのアドレスを1ヶ所で管理するのは大変なので、
地域や組織ごとにグループ分けを行い、グループ別に管理が分担されています。
IPアドレスが足りない!
最近は、より多くの人、より多くの機器でインターネットを使うようになりました。
このため、32ビット(約43億番号)のIPアドレスも、
すべての機器に割り当てるにはすでに足りなくなってしまいました。
そこでその解決策として、
128ビットに拡張したIPアドレスを使用するIPv6
という新ルールが作られました。(1998年)
ただし、IPv6の普及にはまだ何年もかかるため、それまでの対応策として、
現在は主にローカルアドレスと、NAPTというしくみが使われています。
ローカルアドレス
ローカルアドレスは、内線番号のように、
限られたネットワーク範囲内でのみ使えるアドレスです。
インターネットのどこからでもアクセスできるIPアドレス(グローバルアドレス)
とは分けられており、あらかじめ使える番号が決められています。
このため、そのネットワーク範囲外の別のネットワークで
同じローカルアドレスがかぶっても問題なく、重複して困ることがありません。
よって、外との通信が無い機器にはローカルアドレスをつけておけば、
グローバルアドレスを節約できます。
ローカルアドレスは、外との通信が無い機器に、まず使用できますが、
外との通信が時々あるだけの機器にも、
普段はローカルアドレスを割り当てておけば、
さらにグローバルアドレスの節約になります。
ただし、外との通信がある時だけ、グローバルアドレスが必要です。
NAT
その外との通信がある時をスムーズにするのが、NAT(ナット)というしくみです。
※ NAT = Network Address Translation
NATでは、外との接点となるルーターで、
予備のグローバルアドレスを複数持っておき、
ローカルアドレスの機器が外との通信をする時だけ、
IPヘッダ内のローカルアドレスとグローバルアドレスを自動変換します。
NAPT
そして、このNATをさらに進化させ、1つのグローバルアドレスを
複数のローカルアドレスに変換できるようにしたのが、NAPT(ナプト)です。
※ NAPT = Network Address Port Translation
NAPTでは、1つのグローバルアドレスに続く、複数のTCPポート番号を、
複数のローカルアドレスとTCPポート番号に対応させてIPヘッダを変換します。
ポートなら、1つのアドレスで豊富に使えるからです。
グローバルアドレスが外線電話番号、ローカルアドレスが内線番号なら、
NAPTは、外線電話から内線番号へのダイヤルインのようなイメージです。
外線代表番号になるのが、NAPTルーターのグローバルアドレスで、
それに続ける付加番号が、NAPTルーターのポート番号です。
NAPTなら、どの機器でも外との通信が常時可能になります。
IPアドレスの申請と設定
IPアドレスは、元々は、
IPアドレスの管理者に申請し、
管理者から重複が無いように払い出されたIPアドレスを、
各自で機器に設定するものでした。
しかし、申請→払い出し→設定の処理は、人手では時間がかかりました。
また、IPアドレス枯渇問題のため、グローバルアドレスは簡単には払い出せなくなりました。
IPアドレスの自動設定
そこで、IPアドレスの自動設定が一般に使われるようになりました。
IPアドレスの自動設定には、次の2つの方式が主に使われています。
(1) PPP(ピーピーピー)
サーバーでパスワード認証や強制切断ができる …主にプロバイダで使われます
(2) DHCP(ディーエイチシーピー)
ネットワークに接続するだけで即設定される …主にLANやCATVで使われます
どちらも、最初はクライアント自身のアドレスを0.0.0.0 (仮設定)として、
ネットワーク内の全機器に向けIPアドレスの払い出しをリクエストします。
リクエストがサーバーに届くと、設定すべきアドレスを応答してくれます。
まとめ
IPアドレス枯渇問題とその対策
インターネットにつながる機器が増え、今、IPアドレスが不足しています。
IPv6が普及するまでの対応策としては、ローカルアドレスとNAPTがあります。
ローカルアドレスは、限られたネットワーク範囲内だけで使えるアドレスです。
ローカルアドレスは、ネットワークが異なれば、重複して使えます。
グローバルアドレスとローカルアドレスを変換するしくみをNATと言います。
NAPTは、豊富にあるポート番号を利用して、同時接続を可能にしたNATです。
IPアドレスの設定
機器へのIPアドレスの設定は、PPPまたはDHCPにより自動設定されます。
だからインターネットは…
プロバイダがIPアドレスを自動設定してくれています
使う人は知らなくても、インターネットに接続するPCやスマホにはIPアドレスが必要で、
通常、自動設定されています。
PCやスマホを使う人に、グローバルアドレスを有料で自動設定してくれている会社が、
いわゆるプロバイダなのです。
※ プロバイダによっては、ローカルアドレスを自動設定し、プロバイダのNATでグローバルアドレスに変換している場合もあります。
ADSLの時代までは、電話回線などのデータリンクを提供する会社と
プロバイダのそれぞれに契約する必要がありました。
現在は、携帯電話や光回線、ケーブルテレビなどを提供する通信会社が、
プロバイダも兼ねることが増えています。
1契約で複数機器を接続するのにルーターを使います
通常、プロバイダとの契約では、1契約につき1アドレス分しか自動設定できません。
(IPアドレス不足のため)
そのため、1契約でPCやスマホなど、複数機器をインターネット接続したい場合には、
ルーターを通して接続します。
ほとんどのルーターにはPPPとDHCPとNAPTの機能が付いていて、それらを利用し接続します。
①ルーターのPPP機能により、プロバイダからルーターに1つのグローバルアドレスが自動設定されます。
②PCやスマホなどをルーターにつなぐと、DHCPにより、それぞれにローカルアドレスが自動設定されます。
③ルーターのNAPT機能により、ローカルアドレスのPCやスマホも、インターネットに接続できます。