
No314 パケット通信がインターネットを支えている
2023年現在、インターネットがあたり前の技術になりました。
また、「パケ死(パケット使い過ぎて死んだ)」などと俗に言われる程度にはパケットという言葉も一般化しました。
このパケットを使った通信の考え方は意外に古く、その基本アイデアは1960年代に生まれたそうです。(筆者はたいがいトシヨリですが、この時代の技術知識は後付けです)
今回は、かなり時間軸を巻き戻して、このパケット通信が生まれた経緯をお話します。
回線接続方式
パケット通信方式が考案されたのは、1960年代でしたが、当時はさほど共感を得られなかったようです。
もちろん、当時でも複数のコンピュータを接続してデータのやりとりをしたいという欲求はありましたし、そのための方式もいくつか存在していました。
一つはテープなどの物理メディアに保管して運ぶという単純明解な方式でこれは1950年代から使われていました。
もう一つは電話回線などを利用する方式で、コンピュータ同士が電話で会話をする方式でした。これは回線交換と呼ばれる通信方式で、現在でもFAXは回線交換を使って実現されています。
当時はネットワークと言えば、コンピュータが電話をかけて、先方のコンピュータとデータのやりとりをすることを指していました。
この回線接続方式は電話さえあれば通信が行えますので、都市部だけでなく田舎でも利用でき、お手軽に始められる点は大きなメリットでした。
実際、日本でもインターネットが普及する前に、パソコン通信と呼ばれる通信方式の時代がありましたが、これは固定電話回線を使った回線接続方式でした。
回線交換の限界
一対一でコンピュータが通信をしている限り、回線交換方式はトラブルも少なく便利な方式でした。
ですが、三台以上での同時通信したいとなると、かなり問題がありました。
回線交換方式だと通信できるのは発呼側(電話を掛ける側)と着呼側(電話を受ける側)の二台に限られます。三台以上のコンピュータで通信したければ、複数の回線契約が必要になります。
また、通信を受け付ける着呼側には通信したい台数分の受信設備(モデムなど)と回線が必要になり、数が多くなればなるほど設備負担の費用は大きくなります。
この場合のパソコンとサーバの関係はこんな感じです。
PC PC PC
↓ ↓ ↓
(電話回線網)
↓ ↓ ↓
Mo Mo Mo
+--------------------+
| BBSサ-バ |
+--------------------+
※PC=パソコン
Mo=モデム(受信設備)
この図でわかる通り、回線接続の分だけ受信設備(と通信費用)が必要になります。
実際、パソコン通信の後期では、人気のあるアマチュアBBS(Bulletin Board System:掲示板システム)では、回線接続しようにも、受信設備が既に満杯で、接続できないことが茶飯事でした。
アマチュアBBSは無料で提供していることも多く、費用負担にも限度があります。
この回線接続の不便さを克服するために、再呼(リダイヤル)・データやりとり・回線切断といった一連の作業を自動化させるアプリを利用して長時間接続しないのがある種のマナーでした。
こんなアプリが登場したこと自体が、多数同時接続を望んでいた人の多さをもの語っています。
余談
Teraterm(テラターム)というソフトがあります。
プログラマにはよく知られたソフトです。
現在はUNIXサーバへの接続ソフトの代表格ですが、
もともとは上記のBBS自動巡回ソフトの一つでした。
理想的な接続形態
BBSサーバの運営側としては相手が何台でも、一つの回線と一つの受信設備でまかなえる夢の装置が欲しいわけです。
下図のような形ですね。
PC PC PC
↓ ↓ ↓
(??通線網)
↓
Mo
+--------------------+
| BBSサ-バ |
+--------------------+
最初の図と違うのは、Moで示した受信設備が一つだけ(ということは通信費用も一回線分のみ))となっている点です。
BBSサーバを運用する側はそりゃこんな方式が実現されれば、何台でも同時接続できる上、コストも抑えられます。
ですが、この実現には問題があることが容易に想像できます。
回線接続方式では、その通信はどの受信装置から来たかを覚えておけば、通信相手を確実に識別できました。
実際には、受信装置に届いたデータは装置内の小さなメモリ(数百バイト程度)一時的に保管され、サーバのCPUはそれを読み取って依頼された処理を行います。
その処理結果は、同じ受信装置から逆方向にデータを送り返せばOKです。
ところが、上図ではパソコンからのリクエストが来た時、三台のパソコンのどれに結果を返せば良いのか判断できません。
また、同時に依頼が来て、その情報が混ぜこぜになると、何の依頼か判断ができなくなります。
ファーストフード店で皆が行列もせずに口々に注文を出している出している状況を考えてください。こんなのカオスでしかないですよね。
もちろん「??通信網」なんて夢のような通信網も存在しません。
こんなのを実現することは技術的に可能なのでしょうか?
パケット通信
上記はアマチュアBBSという極めて限られたシチュエーションの話ですが、同じことを違った視点で考えた方は昔から大勢おられました。
複数の依頼が同時に来ても、それを混在させることなく正しい送付先に情報を渡す方法、言い換えれば、物理的に1本の線で複数のコンピュータと接続する良い方法はないだろうか?ということです。
これまでの回線接続では、一対一ですから、対面での会話と同じく好きなやり方で会話ができます。異様にゆっくりしゃべろうと、一方的に演説をかましても良いわけです。(相手が嫌がるかは別問題)
ここでのポイントは、一対一だと会話の手順にはほとんどルールが要らず、両者が合意さえしていれば、何でもOKだということです。
ところが、パケット通信ではそうはいきません。
パケット通信は例えれば、教室の質疑応答のようなものです。
質問をする人は手を挙げ、名差しを受け、質問を(的確に短時間で)行う、という手順を踏みます。
知らない人が一堂に会している時は質問の前に所属や氏名を名乗ることもあるでしょう。
質問をする時には、その暗黙の様式(プロトコル)に従うことが前提になっています。
これに従わずに、各人が勝手に自己主張したり、質問なのか感想なのかわからないことを言い出したり、では質疑応答になりません。
パケット通信も同様です。
パケット通信を成立させるには、通信を行う双方がパケット通信のルールに従わなければならないのです。
通信相手をパケットで知る方法
パケット通信では、全てをパケット(packet:小包)と呼ばれる小さなデータ(通常は千バイト程度)に全て分割します。
各パケットにはデータに加えて、誰が誰にどんな形式のデータを送るのか?といったヘッダ情報が必ず付加されます。
つまり、全てのパケットは「ヘッダ+データ」形式になっています。
この形式に例外はありません。全てのパケットが対象です。
インターネット経由でやりとりされる全データには必ずヘッダが付いています。
従っていないデータは単に間違ったパケットとして無視されます。
このヘッダ部も細かく言うといろいろありますが、ここではIPヘッダに着目します。
このIPというのはInternet Protocol(インターネット通信手順)の略です。
ここにはインターネットでの通信に必要な情報がいろいろと入っています。
いろいろ、というのもアレですので、一部を示しましょう。
・パケットのサイズ(バイト数)
・ヘッダチェックサム
・送信元のIPアドレス
・宛先のIPアドレス
パケットのサイズやヘッダチェックサムというのはヘッダ部が壊れていたり、おかしな形式のパケットのチェック用です。
この値が正しくないパケットは捨てられます。
送信元IPが、まさに「誰が送ってきたのか?」を識別するための情報です。
この値を見て、依頼元を識別するわけです。
ちなみに、サーバ側からの返信時は、この内容が逆転します。
つまり、宛先IPアドレスには依頼元IPアドレスが、送信元IPにはサーバ自身のIPアドレスがセットされます。
いきなり、IPアドレスというものが出てきてとまどっている方もおられるかもしれません。
IPアドレスというのは、そのコンピュータを識別するための通し番号で、コンピュータの住所のようなもの、とよく言われます。
ここでは、コンピュータを識別するための番号と考えていただければOKです。
これも「どうやって番号がダブらないようにするんだ?」とか「使い切る心配はないのか?」とか、書き出すとキリがありません。
ご興味のある方は二年前に書いたバックナンバーがありますので、そちらをご覧ください。
No211 素朴な疑問:IPアドレスってナニ?(2021年6月配信)
https://note.com/egao_it/n/n7b33490bc619
夢の「??通信網」
さて、受信装置は上記のように一つのサーバに一つで済むようになりました。
ですが、複数のパソコンからの依頼を取りまとめてくれる夢の「??通信網」などありません。
どうやれば、実現できるのでしょうか?
読者の皆様もご想像の通り、これはインターネット通信網として実現されています。
各家庭や会社に入っている光通信設備やモバイル(Wi-Fi)ルータ、ケーブルテレビ設備などがインターネット通信網への入り口となります。
では、その先はどうなっているのか?どうやってパケットを別のサーバに渡すのか?という話になるのですが、今回は既にかなりの長文ですので、ここまでとさせていただきます。
続きは次回をお待ちください。
まとめ
インターネットの技術面から見た最大の特徴はパケット通信方式を採用したことにあります。これによって、回線の種別や特性に依存せず、世界中に広がる一大ネットワークが構築できるようになりました。
実際、インターネットはネットワークとネットワークを繋ぐことを目的としたため「インターネット」となったそうです。
道路と道路をつなぐインターチェンジ、国と国をつなぐインターナショナル、警察と警察をつなぐインターポール、ネットとネットをつなぐインターネット、というわけです。
そのため、インターネットでは、既存ネットワークの特徴を活かしつつ、新たな仕組みが次々と考案されてきました。
今回は、その入口としてパケット通信についてお話をしました。
次回は、複数のネットワークを差配する機器であるルータに視点をおいて、インターネットのパケット転送の仕組み(これをルーティングと言います)についてのお話をしたいと思います。
次回もお楽しみに。
(本稿は 2023年7月に作成しました)
このNoteは筆者が主宰するメルマガ「がんばりすぎないセキュリティ」からの転載です。
誰もが気になるセキュリティに関連するトピックを毎週月曜日の早朝に配信しています。
無料ですので、是非ご登録ください。
https://www.mag2.com/m/0001678731.html