はじめに
本シリーズでは、なるべく多くの具体例を通じてネットワークの基礎理解を目指します。前回のOracleDBシリーズ同様に初学者を対象としながらも、より深い理解ができるような記事になれば良いなと思っています!
今回は現在の通信ネットワークを扱う上で重要となるNetworkとNetwork of networksの2つの概念について扱います。
現代の通信ネットワークとはどういうものなのか?
まずネットワークの詳細についてみていく前に、現代のネットワークがどのように構成されているものなのかを歴史的な背景から考察していきます(以下の考察はフィクションを含みます)。
Network
まず、通信技術が今のように発達する前は、インターネットのように、世界的に大規模な通信というものは存在していなかったはずです。初期の通信というのは、ある会社や団体等の小規模な組織で情報のやり取りができれば十分でした。この場合、組織内のコンピュータが互いに異なる名前を持っていて、そこに電気信号を伝達できれば通信としては十分です。
上の図の場合、それぞれのPCにPC1〜PC5という固有の名前と、物理的な接続(ケーブル)さえあれば何らかの方法を用いて通信できそうです。
さてここで、上の図ではPCの名前がPC1〜PC5という連番になっていますが、実際はどうでしょうか?組織はあるベンダーからPCを購入しているはずなので、このような連番なPC名を持っているとは限らないでしょう。そのため、以下の図のような状況になることが考えられます。
PCベンダーは、PCごとに固有な番号をつけてくれていることを保証しますが、それらが連番になっているとは限らない状況です。この状況の場合、組織はそれぞれのPCの番号1,8,19,23,80をしっかり覚えておけば、各PCに通信を行うことができそうです。
ここまでで重要なことは、小さな組織の場合、組織内のPCに固有の名前がついていれば通信を行うことが可能であるということです。この通信可能な小規模な組織のことをNetworkと呼ぶことにしましょう。
Network of networks
さて、時代が進むと組織はより大きなネットワークを求めるようになりました。例えば、「一つのネットワークに数百台のPCを起きたい」、「部署ごとに小さなネットワークを作ってそれらを繋ぎたい」、「世界中の人と通信ができるようになりたい」といったことです。しかし、このような要望を満たそうとすると、これまでのNetworkの考え方では不便が生じてしまいます。以下からはその問題について見ていきましょう。
一つのネットワークに数百台のPCを起きたい
Networkの中に数百台のPCを接続したらどうなるでしょうか?おそらく以下の図のような状況になってしまいます。
PCが数百台あって、与えられたPC名もバラバラだったら一体どこに通信すればいいのかわからなくなってしまいそうです。ここに新しいPCが入ってきたりしたら、さらに大変です。できればこれらのPCにより管理しやすい番号をつけられたら嬉しそうです。
部署ごとに小さなネットワークを作ってそれらを繋ぎたい
「部署ごとにネットワークを管理したい!」というような状況もあるかもしれません。この場合もNetworkの概念では、どのPCがどの部署に属するのかをしっかり覚えておかなくてはならず、管理が大変になってしまいます。できれば部署ごとにPCのグループを作成できれば嬉しそうです。
Networkの課題
上記で見てきたように、時代が進むにつれてネットワークの大規模化や分割などにおいて、様々な問題が発生するようになってきました。これらの問題をどうやって解決すれば良いでしょうか?
その回答として、先人たちは「PCに人や組織が扱いやすい住所のようなものを付けてしまおう」と考えました。この住所によって、これまでのNetworkは以下の図のような構成に進化します。
このように部署ごとに番号(1,2,3)を与え、さらに部署内のPCに管理しやすい番号(.1や.2)を与えることによって、各PCを「1.1」や「3.2」のような住所で表すことができるようになりました。これにより、ネットワークの大規模化や分割の問題へ対応できるようになります。
ここで、上の図の構造はもはや1つのNetworkではありません。部署ごとにNetworkが存在し、それらがさらに互いに通信するような構造となっています。このように、現代のネットワークは、階層的なNetworkによって構成されています。これをNetwork of networksと呼ぶことにします。
重要な点は、「現代のネットワークは、小規模なネットワークがより大きなネットワークでつながるような階層構造になっている」という点です。
このように、通信ネットワークは初期のNetworkから進化を経て、Network of networksの形をとるようになりました。特にInternetは最も大きなNetwork of networksであると言えるでしょう!
LANとWAN
ここまでで、現在のネットワークの構成は階層化しており、それがネットワークの大規模化や分割に関して重要な利点を生んでいることを説明しました。このネットワークの階層化については、より一般的な名前が付けられています。それがLANやWANです。つまり、前の図でいう小規模のネットワーク部分をLAN、そしてLANを繋ぐ大きなネットワーク部分をWANというわけです。
リンク層とインターネット層
これらについても触れておかなければいけません!
ネットワークを勉強すると必ず最初に出てくるOSI参照モデルやTCP/IPプロトコルスタックというやつです。ここではTCP/IPプロトコルスタックの中で、特に下位層であるリンク層とインターネット層について、先ほどの歴史的背景を用いて説明します。
まず、初期の頃の小規模なNetworkの構成で良かった時代では、Network内部のための通信ルールを定めました(この通信ルールのことをプロトコルといいます)。このNetworkにおける通信プロトコルを実装しているのがリンク層です。
そしてNetworkの時代はPC1、PC8、PC19などの名前を識別して通信を行なっていましたね!これがリンク層で出てくるMACアドレスへと標準化されます。
時代が進むとNetworkはNetwork of Networksに進化します。この際、階層化したネットワークを扱うための通信プロトコルが追加で必要になりました。その部分を実装しているのがインターネット層です。
Network of networksの時代になってからは、階層化されたネットワークごとに住所のような番号を人工的につけると嬉しいのでした!これがインターネット層で出てくるIPアドレスへと標準化されます。
その後も、通信の要件やサービスを複雑化に伴って、トランスポート層・アプリケーション層が追加実装されていきます。このように、通信ネットワークやその実装方法は、通信システムの複雑化に伴ってプロトコルスタックという形で進化していくのです!
まとめ
本パートでは以下のことについて説明しました。
- 通信ネットワークの構造は小規模な「Network」から大規模な「Network of networks」へ進化した
- ネットワークの進化に伴って、LANとWANという概念ができた
- まずLANでの通信プロトコルを扱うリンク層が実装され、その後WANでの通信を扱うインターネット層が追加実装された
- LANで扱う「PCの固有名」はMACアドレスに、WANで扱う「住所」はIPアドレスに標準化された
【補足】プロトコルスタックは常に最適か?
通信システムのモデルはOSI参照モデルという形で整理され、TCP/IPプロトコルスタックとして実装されてきました。ではこのような階層的なモデルを用いるのはなぜでしょうか。そこには明確なメリットがあるはずです。
実は、プロトコルスタックを用いるメリットは、プログラムをオブジェクト指向で書く時のメリットとよく似ています。つまり、モジュール化によってシステムの修正がしやすいこと、システムを使う人はモジュール間のインターフェースだけを意識すれば良いということです。
このような利点があることで、例えばシステム利用者は有線LANや4G通信の違いを意識せずに使うことができます。
上の図は、有線LANと4Gのプロトコルスタックを示しており、特にリンク層の部分を細かく書いています。この図から有線LANと4Gでは、インターネット層より上のプロトコルは共通したものを用い、リンク層のみ別のプロトコルを用いていることがわかります。これは、有線LANがケーブルを用いた通信、4Gが無線を用いた通信であることから、リンク層に同じプロトコルが使えないためです。しかし、インターネット層より上のプロトコルについては、リンクが有線であろうが無線であろうが関係ないため、同じプロトコルを採用することができます。
このように、通信システムがプロトコルスタックという形をとることによって、同じ部分は同じものを用いて、違う部分だけを変更するという柔軟な構築ができるようになっています。このような利点のために、プロトコルスタックという形が取られているわけです。
しかし、最近ではこのプロトコルスタックというのも最適な形ではなくなってきています。例えば、複数の層に同じような機能が実装されていたり、下の層の機能のせいで上の層の機能がうまく働かなくなったりというようなことが発生する場合もあります。このように、現在のプロトコルスタックが常に最適な構成をとっているとは限りません。そして、このことがネットワークの理解の難易度を上げる1つの原因になっていると考えています。
ネットワークについて学習する際は、その内容にいまいち納得できない部分があっても、「歴史的に様々な経緯や努力があり、このような形に落ち着いたのだな」と理解してあげることも必要なのかもしれません、、、