インターネットはいくつものネットワークテクノロジーを組み合わせて構成され、それにより世界中のコンピュータと通信ができるようになっている。ネットワークトポロジとしてはLANやWANはバス型もしくはスター型で構成し、インターネット網はリング型もしくはメッシュ型である。
インターネットの世界ではどのようにしてコンピューター同士が通信しているのでしょうか。ここではインターネットプロトコルバージョン4の仕組みを解説していきたいと思います。
コンピューターネットワークは規模によっていくつかの種類に分類することができます。ローカルエリアネットワーク、LANと、ワイドエリアネットワーク、WAN、そしてインターネットです。一般的にLANとWANではノードにプライベートIPアドレスを設定して、インターネットに接続しています。それに対しインターネット上のノードはグローバルIPアドレスを設定しています。インターネット上のノードとはウェブサイトなど、不特定多数の利用者がアクセスするコンピューターです。これに対してLANとWANのノードは企業や個人などが利用するコンピューターです。
プライベートIPアドレスとは、管理組織への届け出が不要なIPアドレスのことでどんなノードでも設定可能な反面、IPアドレスの重複が起こりえます。一方でグローバルIPアドレスのほうは管理組織が存在し、インターネット上で重複することがないようにしています。
同一サブネット内の青い点線で結ばれた二つのノードはお互いに相手のIPアドレスを指定することでネットワーク層での接続が可能です。
サブネットには二つの考え方があります。一つはルーターで区切られた範囲をサブネットとする考え方と、サブネットマスクにより設定された範囲を指す考え方です。
ルーターとはネットワーク上のノードの中でも特に二つ以上のIPアドレスを設定し、サブネットを中継する機能をもつ機器のことを指します。
サブネットマスクとはIPアドレスをネットワーク部を表す部分とホスト部を表す部分に分ける情報のことです。この場合はIPアドレスの上位24ビットがネットワーク部であることを意味します。IPアドレスは8ビット×4オクテット=32ビットで構成されているので上位3オクテットの24ビットがネットワーク部、下位1オクテットの8ビットがホスト部になります。
このようにしてネットワーク部が同一であればローカルサブネット内のホストとみなされ、違っていればリモートサブネットのホストとみなされます。
各ノードはIPアドレスのネットワーク部が同じである他のノードをローカルサブネットのホストとみなして相互通信を行うことができます。一方、ネットワーク部が異なれば、リモートサブネットのホストとみなすので、通信はできません。
また、ネットワーク部が同じであってもルーターによりデーターリンク層でサブネットが分離されているのであれば、リモートサブネットということになります。
ではどうやって異なるサブネットのコンピューターと通信をするのでしょうか?
まず、ルーターで区切られたリモートサブネットのノードとの接続には、ルーターに通信を中継してもらうことが必要になります。
論理アドレスと物理アドレスとは何でしょうか。論理アドレスとはこの場合IPアドレスのことで運用時にノードに設定されるアドレスのことを指します。これに対し物理アドレスはMACアドレスと呼ばれ、製造時にメーカーによって設定されています。物理アドレスは重複することがないように設定する必要があり、通信ユニットに対して世界でただ一つのアドレスが設定されます。
論理アドレスと物理アドレスそしてサブネットマスクはすべてコンピューター上に設定されておりこの情報をもとにしてネットワーク通信は実現されます。また、中継してもらうルーターもデフォルトゲートウェイとして設定されています。
最後に、インターネット上にあるウェブサーバーと、どのようにして接続するのか見てみたいと思います。
LAN上のノードはグローバルIPアドレスを指定してウェブサーバとの接続を試みます。しかし、このIPアドレスはネットワーク部が異なるのでサブネット外のホスト、ということになります。そのためデフォルトゲートウェイに設定されているルーターのMACアドレスを送信先の物理アドレスとして指定します。
デフォルトゲートウェイにたどり着いたデータは隣接するネットワーク内に対象となる論理アドレスを持ったノードがない場合に送信先物理アドレスを隣接するルーターの物理アドレスに書き換えて送信します。
このようにしてデータはルーターからルーターへと対象となるIPアドレスを持ったノードにたどり着くまでネットワークを巡っていくのです。
ご覧いただいたようにインターネットの世界ではローカルサブネットからルーターを経由してリモートサブネットへと接続先のグローバルIPアドレスを探していくことで世界中のサーバーと接続しています。ここで紹介した内容はそのプロセスを簡潔に説明しているにすぎませんが、この動画が少しでも皆さんの勉強のお役に立てれば幸いです。
- プライベートIPアドレスは誰が設定するのですか?
プライベートIPアドレスはコンピューターの利用者が設定することも可能です。しかし、同一サブネット内で参加者が各々IPアドレスを設定すると重複が発生する恐れがあります。そのような事態を避けるためDHCPサーバーを立ててプライベートIPアドレスを自動配信するのが一般的です。
- なぜグローバルなIPアドレスとプライベートなIPアドレスがあるのでしょうか?
グローバルIPアドレスに対しては通常、インターネットにアクセスできるどのノードからでも接続することが可能です。しかしプライベートIPアドレスはインターネット経由でアクセスすることはできません。また、IPv4アドレスは232個までしか全世界で利用できないためすべてのIPアドレスをグローバルIPアドレスにしてしまうとインターネットに接続できるPCやその他のノードの限界数が少なくなってしまうといった欠点があります。また、グローバルIPアドレスは重複を避ける必要があるためすべて組織的に管理する必要がありますが、個人のPCに付与するIPアドレスまで管理するのは非現実的と言えます。
- メッセンジャーアプリなどでプライベートIPアドレスが設定されているはずの個人のPCやスマートフォンに直接メッセージを送れるのはなぜですか?
メッセンジャーアプリなどは通常、サーバーを立てており各ノードはこのサーバーを経由して相互通信をしています。このサーバーはグローバルIPアドレスを持っているので各ノードは接続することが可能です。サーバー内では各ノードを識別する固有の識別子を持っているのでプライベートIPアドレス同士での通信が可能になっています。この場合OSI参照モデルにおけるネットワーク層では接続できないが、アプリケーション層では接続可能という考え方ができます。
- プライベートIPアドレスをもつノード同士では必ずサーバー経由でないと接続することはできないのでしょうか?
プライベートIPアドレスを持つノード同士の接続はルーターの設定とネットワークの構成が深くかかわっています。プライベートIPアドレスでもルーティングの設定次第で接続は可能です。ただし、IPアドレスが同じであれば相互接続はできません。この場合OSI参照モデルにおけるデータリンク層での接続はできないがネットワーク層での接続は可能という考え方ができます。
- グローバルIPアドレスは現在、全て利用されているということですが本当ですか?もうWebサーバなどを増やすことはできないということでしょうか?
グローバルIPアドレスは現在、全て利用されています。このためこれらのグローバルIPアドレスの権利保有者が手放さない限り新たにグローバルIPアドレスを取得することはできません。しかし、IPマスカレードという技術があるのでWebサーバなどグローバルIPアドレスを持ったサーバを増やすことは可能です。IPマスカレードは1つのグローバルIPアドレスに複数のプライベートアドレスを付与するというものです。この場合、OSI参照モデルのセッション層で一つのグローバルIPアドレスに対して複数のプライベートアドレスを振り分けているという考え方ができます。
- ホームページを検索する際にIPアドレスは指定していないのになぜインターネット上のホームページにアクセスすることが可能なのでしょうか?
まず、ホームページにはドメイン名が設定されていてそのドメイン名は「http://software-engineering-lab.com」のようにURL*で表現されます。これらのドメイン名はDNS*によって管理され、ドメイン名からグローバルIPアドレスへと変換されます。
- Macアドレスは世界で唯一のアドレスなのになぜIPアドレスを指定する必要があるのでしょうか?初めからMacアドレスを指定すればいいのではないでしょうか?
MacアドレスはNIC(Network Interface Card)に製造時に直接書き込まれているアドレスで、以後、書き換えはできません。このため、NICが故障して交換した場合やサーバのマシンをそのものを交換した場合には変更を余儀なくされてしまいます。その場合、この対象となるノードを参照するすべてのノードに新たなMacアドレスを通知しなければなりません。また、サーバーは通常、クラスタリングにより複数のマシンで構成されています。このため、必ずしもサーバーに対してMacアドレスが1つだけということではありません。IPアドレスであればクラスタ構成に対して1つのアドレスを済むうえに、マシンを交換してもまた、同じIPアドレスを設定することが可能になります。