2-1ネットワークトポロジ
木曜の朝7時、こむぎ堂のレジが動かなくなりました。予約受付のタブレットも、厨房のオーブンの温度センサの画面も、店のネットワークにつながる機器が丸ごと止まっています。レジの横では、前の晩にミナトが足したばかりのハブのランプが、全部そろって激しく点滅していました。開店は8時です。店長は時計とミナトの顔を交互に見て、「昨日まで動いていたのに、箱を1個増やしただけで全部止まるものなの?」と聞きます。ミナトにも分かりません。ケーブルを手でたどっていくと、新しいハブと古いハブのあいだが、なぜか2本のケーブルでつながっていました。ミナトは相棒に打ち込みます。「線が1本多いだけで、どうして全部止まるの」
相棒の返事は、すぐに答えを出すものではありませんでした。「まず、店の機器がどんな形でつながっているかを紙に描いてみよう。データがどこを通って、どの機器がそれを次へ送っているのかが分かれば、輪のどこで何が起きたかも見えてくる」。ミナトはレジ、タブレット、オーブンのセンサ、ルータを四角で描き、ケーブルを線で結んでいきました。
描いてみると、こむぎ堂の機器はどれもハブに1本ずつつながり、ハブがルータを通って外のインターネットへつながっています。どの機器も、隣の機器へ直接話しかけているわけではありません。あいだに立つ装置がデータを受け取り、次へ渡しています。ネットワークが止まったとき、どの装置がどこまでの仕事をしているのかを知らなければ、調べる順番も決められません。
ここから基本情報!つなぎ方の形
ミナトが紙に描いたような、コンピュータや通信機器のつなぎ方の形をネットワークトポロジといいます。形が違うと、1本の線が切れたときにどこまで止まるか、機器を足すときにどこへつなぐかが変わります。
いちばん単純な形は、2つの地点の装置を、ほかのどこも通らずに1本の回線で直接結ぶポイントツーポイント(2地点間接続)です。本店と工場を専用の回線で結ぶような使い方で、相手が1つに決まっているので宛先の区別がいりません。3台以上をつなぐときに、次の4つの形が出てきます。
スター型は、中央のハブなどの集線装置に、各機器を1本ずつ放射状につなぐ形です。いまのこむぎ堂の形で、1本のケーブルが切れても止まるのはその先の1台だけです。そのかわり、中央の装置が止まると全体が止まります。
バス型は、1本の共通の伝送路(バス)に、すべての機器を枝のようにつなぐ形です。線が1本で済むので構成は単純ですが、その幹線が途中で切れると全体に響きます。リング型は、機器を1本の線で輪のようにつなぎ、データが機器を順番に回って届く形です。送る順番を回していく方式(2-9で見るトークンパッシング)と組み合わせて使われてきました。
ツリー型は、中心の機器から枝分かれするように、中継装置と機器を階層的につないでいく形です。ハブの先にさらにハブをつなぐと、スター型が段になったツリー型になります。ミナトが前の晩にしたのも、本来はツリー型に1段足すことでした。ところが2本目のケーブルのせいで、木の枝がどこかで輪になってしまっていたのです。
基本情報の範囲ここまで
こむぎ堂のつなぎ方は、紙の上では単純です。それでも1本の余分なケーブルで店じゅうが止まりました。なぜそうなるのかは、ハブがデータをどう扱っているかを知らないと説明できません。
2-2OSI基本参照モデル
ミナトがハブのランプを見つめていると、相棒が聞いてきました。「レジから予約サーバへ『食パン2斤』のデータが届くまでに、何が決まっていないといけないと思う?」。ミナトは指を折ります。線の差し込み口の形、隣の機器への渡し方、遠くの相手までの道、届いたかの確認。数えるうちに、指が足りなくなりました。
通信には、決めておくことが山ほどあります。それを一つの約束事にまとめて書くと、一部を変えたいときに全部を書き直すことになります。そこで、通信の働きを役割ごとの層に分け、各層は自分の仕事だけを受け持ち、上下の層とは決まった形でデータを受け渡す、という整理の仕方が生まれました。国際標準化機構(ISO)が定めた、この7つの層からなる整理の型がOSI参照モデルです。いまのシラバスではOSI基本参照モデルと呼んでいます。
送る側では、データは上の層から下の層へ渡され、層ごとに必要な情報を書き足されて線の上に出ていきます。受け取る側では逆に、下の層から上の層へ渡りながら、書き足された情報が取り除かれていきます。層が分かれているので、ケーブルを無線に替えても、上の層のWebやメールの仕組みはそのまま使えます。
| 層 | 名前 | 受け持つこと |
|---|---|---|
| 第7層 | アプリケーション層 | Webの閲覧や電子メールなど、利用者が使うサービスごとの通信の決まり |
| 第6層 | プレゼンテーション層 | 文字コードや圧縮、暗号化など、データの表し方をそろえる |
| 第5層 | セション層 | 通信相手との対話(セッション)を始め、続け、終える手順を管理する |
| 第4層 | トランスポート層 | 送り手と受け手のプログラムのあいだで、データが確実に届くようにする |
| 第3層 | ネットワーク層 | IPアドレスを使い、別のネットワークにいる相手までの経路を選ぶ |
| 第2層 | データリンク層 | 直接つながった隣の機器とのあいだで、データを受け渡し、誤りを調べる |
| 第1層 | 物理層 | ケーブルやコネクタの形、データを電気や光の信号に変える方法 |
下の3つの層は「隣まで、そして相手のネットワークまで運ぶ」仕事です。物理層は0と1を信号にして線に流すだけで、中身が何かは見ません。データリンク層は、同じネットワークの中で隣の機器に確実に渡す仕事で、機器ごとに割り当てられたMACアドレスで相手を見分けます。ネットワーク層は、別のネットワークをいくつもまたいで遠くの相手へ届けるための経路を選びます。
上の4つの層は、届いたデータを使う側の仕事です。トランスポート層は、届かなかった分を送り直したり、届いたデータを正しい順に並べたりして、送り手と受け手のプログラムどうしの通信を確かなものにします。セション層は、通信の始まりから終わりまでの対話の流れを管理し、プレゼンテーション層は文字コードなどのデータの表し方をそろえます。いちばん上のアプリケーション層が、予約の画面やメールといった、利用者の目に見えるサービスの決まりを受け持ちます。
ミナトはこの表を見て、止まった原因の場所に見当をつけました。ケーブルが輪になっているのは物理的なつなぎ方の話で、データを隣へ渡しているハブは、第1層か第2層の装置のはずです。
2-3伝送方式と回線
店長が思い出したように言いました。「そういえば、2号店を出すなら、本店とのあいだに専用の線を引いたほうがいいって、電話会社の人に言われたことがあるよ」。ミナトは、線にもいろいろな種類と使い方があることに気づきます。1本の線や1つの電波を、何人で、どう分け合って使うのか。
ここから基本情報!分け合い方と、送る向き
携帯電話の基地局は、同じ周波数帯の電波を、近くにいる大勢の利用者で同時に使っています。混線しないのは、利用者ごとに異なる符号を割り当て、その符号で信号を区別しているからです。この方法をCDMA(符号分割多元接続)といいます。受け取る側は、自分に割り当てられた符号で信号を取り出すので、ほかの人の信号と重なって届いても自分の分だけを読み出せます。CDMAは、第3世代の携帯電話の方式に使われました。
1つの回線を複数の利用者で分け合う方法は、符号のほかにもあります。回線を使える時間を細かく区切り、利用者が自分の順番の時間だけ交代で使うのがTDMA(時分割多元接続)です。光ファイバでは、色(波長)の違う光を何本も束ね、1本のファイバで同時に別々の信号を送ります。これをWDM(波長分割多重)といいます。分ける軸が、CDMAは符号、TDMAは時間、WDMは光の波長です。
データを送る向きにも3つの型があります。一方からもう一方へ、片方向にしか送らないのが単方向、両方向に送れるけれど同時には送れず交互に送るのが半二重、両方向に同時に送れるのが全二重です。トランシーバは半二重、電話は全二重にあたります。
これに関わるのが線の数です。送りと受けに同じ1対の線を使う2線式は、一般の電話回線などで使われています。データ通信では、同じ線を行きと帰りで使うので、交互に送る半二重と組み合わせるのが基本になります(回線の両端で送りと受けの信号を分ける回路を使えば、2線式でも全二重にできます)。送り用と受け用に別々の1対ずつを用意する4線式なら、行きと帰りが別の線なので、全二重の通信がしやすくなります。
回線の借り方にも2通りあります。通信事業者が不特定多数の利用者に共用で提供する回線が公衆回線で、一般の電話回線がその例です。安く使えますが、ほかの利用者と設備を分け合います。特定の2地点のあいだを契約して、ほかの通信と共有せずに専用で使えるのが専用線です。電話会社の人が勧めたのはこちらで、いつでも決まった速さで使えるかわりに、距離や速さに応じて料金が高くなります。
線の上に0と1を並べて送るとき、受け取る側は、どこからどこまでが1文字なのかを知る必要があります。送る側と受ける側で時計を合わせず、1文字ごとに始まりの合図(スタートビット)と終わりの合図(ストップビット)を付けて送るのが非同期通信で、調歩同期式とも呼ばれます。1文字ごとに合図が付くので仕組みは簡単ですが、合図の分だけ送る量が増えます。まとまったデータを合図なしに続けて送る方法は、2-7で見ます。
基本情報の範囲ここまで
線の種類や使い方は、ふだん目にすることはありません。ただ、こむぎ堂が契約している光回線も、携帯電話の電波も、1本の線や1つの周波数を大勢で分け合う工夫の上に成り立っています。
2-4LANの中をつなぐ装置
ミナトは、前の晩に買ってきたハブの箱を手に取りました。箱には「スイッチングハブ」と書いてあります。古いほうのハブも同じ種類でした。相棒が聞きます。「そのハブ、受け取ったデータをどこへ送っていると思う?」
LANの中で機器をまとめてつなぐ集線装置を、ハブと呼びます。いま店やオフィスで使われているハブのほとんどは、受け取ったデータの宛先を見て、その宛先の機器がつながっている差し込み口(ポート)にだけ送り出す装置です。これをスイッチングハブ(スイッチ)といい、LANスイッチとも呼びます。データリンク層で働くので、L2スイッチ(レイヤー2スイッチ)という呼び方もあります。四つの名前は、ほぼ同じ装置を指しています。
スイッチングハブが宛先を見分けるのに使うのは、データリンク層の住所であるMACアドレスです。データが流れてくるたびに、送り主のMACアドレスとそれが届いたポートを組にして覚えていき、次からはその宛先へのデータを覚えたポートにだけ送ります。宛先がまだ分からないデータや、全員宛てのデータ(ブロードキャスト)は、受け取ったポート以外の全部のポートへ送り出します。
ポートが足りなくなったら、ハブの先にもう1台ハブをつないで台数を増やせます。ハブとハブを数珠つなぎにするこのつなぎ方をカスケード接続といいます。ミナトが前の晩にしたのは、このカスケード接続でした。ただし、ハブどうしをつなぐケーブルは1本だけにしなければなりません。2本つなぐと、全員宛てのデータが一方のケーブルで隣のハブへ行き、もう一方のケーブルで戻ってきて、また全部のポートへ送り出されます。データは輪の中を回り続け、回るたびに増えていきます。ランプが一斉に点滅していたのは、この増え続けるデータのせいでした。
ここから基本情報!層ごとの中継装置と、輪を断つ仕組み
スイッチングハブより下の層で働く装置もあります。リピータは、ケーブルを流れるうちに弱まった電気信号を増幅し、形を整えて中継する物理層の装置です。ケーブルの長さには限りがあるので、それより遠くへ届けたいときに使います。中身を見ずに信号を整えて送り出すだけなので、宛先は気にしません。
同じ物理層で働くハブがリピータハブです。受け取った信号を増幅・整形して、全部のポートへそのまま送り出します。どの機器宛てのデータも全員に届くので、つながった機器が同時に送ると信号がぶつかります。スイッチングハブは、宛先のポートにだけ送ることで、このぶつかり合いを減らしました。
ブリッジは、2つのLANの区切り(セグメント)をつなぎ、MACアドレスを見て、向こう側に渡す必要のあるデータだけを中継するデータリンク層の装置です。ポートの多いブリッジがスイッチングハブだと考えると、両者の関係がつかめます。
店の端から端まで、ケーブルが届かないこともあります。光ファイバと銅線のように、種類の違う伝送媒体のあいだで信号を変換してつなぐ物理層の装置をメディアコンバータといいます。
こむぎ堂を止めた輪には、装置の側に備えがあります。ブリッジやL2スイッチが輪の形につながっていても、装置どうしが情報をやり取りして輪を見つけ、一部のポートを論理的に止めて、輪のない木の形の経路を自動で作る仕組みがスパニングツリー(STP)です。止めたポートは予備として残るので、使っている経路が切れたときには、止めていたポートを開いて別の経路に切り替えられます。わざと2本つないで経路を二重にしておく場合には、この仕組みが欠かせません。
ネットワークの調子を調べるときには、流れているデータを実際に見たくなります。スイッチの設定で、ほかのポートを通る通信をそのまま複製して出力するポートをミラーポートといいます。ここに解析用の機器をつなげば、ほかの通信を止めずに中身を確かめられます。
基本情報の範囲ここまで
原因の見当はつきました。開店まではあと40分です。ミナトは余分なケーブルを抜く前に、店から外へ出ていく側の装置も確かめておくことにしました。
2-5LANとWANをつなぐ装置
ハブの奥には、店のルータと、光回線の業者が置いていった白い箱が並んでいます。どちらもランプは落ち着いていました。店長が言います。「こっちは外とつなぐ箱でしょう。中の箱とは何が違うの」
店の中のLANと、外のインターネットは、別々のネットワークです。異なるネットワークのあいだでデータを中継するのがルータです。ルータはネットワーク層の装置で、データの宛先のIPアドレスを見て、どの方向へ送れば相手に近づくかという経路を選び、次の中継先へ渡します。スイッチングハブがMACアドレスを見て同じLANの中で配るのに対し、ルータはIPアドレスを見てネットワークの外へ運びます。
家庭や小さな店で使うルータの多くはブロードバンドルータです。光回線などの高速な回線(ブロードバンド回線)につなぎ、1本の回線を店の中の複数の機器で共有できるようにします。こむぎ堂のルータもこれで、レジもタブレットもこのルータを通ってインターネットに出ていきます。
ルータは同じ決まり(プロトコル)を使うネットワークどうしをつなぎます。決まりそのものが違うネットワークどうしをつなぐときは、トランスポート層より上の層で決まりを変換して橋渡しする装置が要ります。これがゲートウェイです。たとえば、電子メールの形式が違う2つのシステムのあいだで、形式を変換してメールを受け渡す装置がゲートウェイにあたります。
回線の種類によっては、機器の信号をそのまま線に流せません。コンピュータが扱うデジタル信号を、電話回線を流れるアナログ信号に変えて送り(変調)、受け取ったアナログ信号をデジタル信号に戻す(復調)装置がモデムです。名前は変調(modulation)と復調(demodulation)を合わせたものです。アナログの電話機などの端末を、ISDNのようなデジタル回線につなぐために信号を変換する装置はターミナルアダプタ(TA)と呼びます。どちらも、電話回線でインターネットにつないでいたころによく使われた装置で、いまでは使う場面が減っています。
ここから基本情報!LANの外とつなぐ装置の分け方
モデムやターミナルアダプタのように、端末と通信回線のあいだに置き、信号を回線に合った形に変換して両者をつなぐ装置を、まとめて回線接続装置と呼びます。データ回線終端装置(DCE)とも呼ばれ、光回線の業者が置いていった白い箱(光回線終端装置、ONU)も、光の信号と電気の信号を変換する回線接続装置の一つです。
ふだんは回線をつないでおかず、通信が必要になったときだけ電話回線やISDNで相手に接続し、終わったら切断するルータをダイヤルアップルータといいます。つないでいる時間に応じて料金がかかる回線で、料金を抑えるために使われました。
ルータの働きをLANの中で速く行うための装置もあります。L3スイッチ(レイヤー3スイッチ)は、スイッチングハブにネットワーク層の経路選択の機能を持たせた装置で、IPアドレスを見てパケットを中継します。中継の処理を専用の回路で行うので、社内の部署ごとに分けたネットワークのあいだを速くつなぐ用途に向いています。
リピータ、ブリッジ、ルータ、ゲートウェイのように、複数のLANを互いにつなぐ装置を総称してLAN間接続装置と呼びます。基本情報のシラバスでは、各装置がOSI基本参照モデルのどの層に対応するかを理解することが求められています。リピータは物理層、ブリッジとL2スイッチはデータリンク層、ルータとL3スイッチはネットワーク層、ゲートウェイはトランスポート層から上の層です。
基本情報の範囲ここまで
2-6代理と振り分けのサーバ
ルータの設定画面を開いたミナトは、見慣れない項目に目を留めました。「プロキシ:使わない」。店長に聞くと、前に通販サイトを作った業者が、会社ではこれを使っていると話していたそうです。
会社のパソコンがWebサイトを見るとき、外のWebサーバへ直接つなぐのではなく、社内に置いた中継役のサーバに頼んで代わりにアクセスしてもらうことがあります。この中継役がプロキシサーバです。プロキシ、Proxyサーバとも書きます。プロキシ(proxy)は「代理」という意味です。
代理を立てると、いくつかの利点が生まれます。外のサーバから見えるのはプロキシサーバだけなので、社内のパソコンの構成を外に知られにくくなります。一度取りに行ったWebページを手元に保存(キャッシュ)しておけば、同じページを別の人が見るときに速く返せます。どのサイトへのアクセスを許すかを一か所で決めて、業務に関係のないサイトへの接続を止めることもできます。
ここから基本情報!サーバの側に立つ代理
代理は、サーバの側に立てることもできます。こむぎ堂の通販サイトのように外から大勢がアクセスするサーバでは、Webサーバの手前に代理役のサーバを置き、利用者からの要求をいったんすべて受け取って、背後にある本来のWebサーバへ中継します。この代理役をリバースプロキシサーバといいます。利用者から見えるのはリバースプロキシサーバだけなので、本来のWebサーバを外から直接攻撃されにくくなります。
背後にWebサーバを何台も並べておけば、リバースプロキシサーバが要求を各サーバへ振り分けて、1台に負荷が集中しないようにできます。複数のサーバへ処理の要求を振り分け、負荷を分散させることをロードバランシング(負荷分散)と呼びます。クリスマス前に予約が殺到しても、1台が止まるのを防げます。
HTTPSの通信では、サーバは暗号化と復号の計算を受け持つので、アクセスが多いと処理が重くなります。SSL/TLSの暗号化と復号を専用のハードウェアで肩代わりし、Webサーバの負荷を軽くする装置がSSLアクセラレータです。Webサーバの手前に置かれ、暗号を解いた後の通信を背後のサーバへ渡します。
基本情報の範囲ここまで
2-7伝送制御
ミナトはふと思いました。輪の中でデータが増え続けたのなら、レジや予約サーバは、届くデータの洪水をどう受け止めていたのだろう。そもそもふだんは、送る側と受ける側が、どうやって息を合わせているのか。相棒は「ケーブルの両端で、データを確実に渡すための決まりがある」と返しました。
データを送る側と受ける側のあいだでは、送りっぱなしにせず、届いたかを確かめ、化けていたら送り直し、受け手が追いつかなければ待つ、といったやり取りが行われています。データを相手に確実に届けるための、こうした制御の仕組みをまとめて伝送制御と呼びます。こむぎ堂のレジが「注文を送ったのに予約サーバに届いていない」という事態にならないのは、層ごとにこの制御が働いているからです。
ここから基本情報!隣の機器へ確実に渡す手順
直接つながった隣の装置とのあいだで、データをフレームというまとまりに区切って送り、同期の取り方、誤りの調べ方、順番の確かめ方を決めて、正しく受け渡す制御をデータリンク制御といいます。OSI基本参照モデルのデータリンク層の仕事です。データリンク制御の手順には、古くから使われてきた2つの代表があります。
一つはベーシック手順です。データを文字(キャラクタ)の単位で扱い、SOH(ヘッダの始まり)、STX(本文の始まり)、ETX(本文の終わり)のような伝送制御文字でデータの区切りや応答を表します。受け取る側と同期を取るには、データの前にSYNという同期用の文字を続けて送り、受け取る側はそれを見つけて文字の区切りに合わせます。これをSYN同期(キャラクタ同期)といいます。
もう一つがHDLC(High-level Data Link Control)です。HDLCはデータを文字ではなくビットの並びとして扱うので、どんな種類のデータでも送れます。フレームの始まりと終わりには、01111110という決まったビットの並び(フラグシーケンス)を置き、受け取る側はこのフラグを見つけてフレームの区切りを知ります。これをフラグ同期といいます。データの中に同じ並びが現れてフラグと見間違えないよう、送る側は1が5個続いたら0を1個はさみ、受け取る側がそれを取り除きます。フレームの中には、フラグのほかに宛先(アドレス)、制御の情報、本文、誤りを調べるための符号(FCS)が並びます。
SYN同期もフラグ同期も、受け取る側がまとまりの区切りを見つけて、送る側に合わせるための方法です。データをフレームの単位で区切り、その始まりと終わりを受信側が見分けて合わせることをフレーム同期と呼びます。2-3の非同期通信が1文字ごとに合図を付けたのに対し、これらの方式は、まとまったデータを合図なしに続けて送れます。
HDLCを広げた手順にマルチリンク手順があります。複数の物理的な回線を束ね、論理的には1本の回線として扱うことで、使える帯域を広げます。束ねた回線の1本が切れても、残りの回線で通信を続けられます。
基本情報の範囲ここまで
隣の装置に確実に渡せても、遠くの相手に届くとは限りません。途中にはいくつものルータがあり、受け取る側の処理が追いつかないこともあります。
ここから基本情報!道の選び方と、送る速さの調整
送り主から宛先までに通れる経路が何通りもあるとき、その中から適した経路を選んでデータを転送する制御をルーティング制御といいます。ルータが受け持つ仕事で、ある経路が混んでいたり切れていたりすれば、別の経路を選びます。
こむぎ堂では、予約が入ると厨房の小さなプリンタに注文票が出ます。予約が一度に50件届いても、プリンタは1枚ずつしか印刷できません。受け取る側の処理の速さや、受け取ったデータを一時的にためておく場所(バッファ)の空き具合に合わせて、送る側が送る量や速さを調整する制御をフロー制御といいます。受け取る側が「いまは待って」「次を送って」と伝え、送る側がそれに従うことで、データの取りこぼしを防ぎます。
データを送る前に、相手とのあいだに論理的な通り道(コネクション)を作るかどうかでも、伝送の方法は2つに分かれます。送る前に相手と接続を確立し、届いたことの確認や順番の保証、送り直しをしながら送るのがコネクション方式です。トランスポート層のTCPがこの方式で、予約データのように1件も欠けてはいけない通信に使われます。事前に接続を確立せず、データのまとまり(パケット)を一つずつ送り出すのがコネクションレス方式です。UDPがこの方式で、届いたかの確認をしない分、手順が少なく速く送れます。少し欠けても止まらないほうがよい音声や動画の通信に向いています。
基本情報の範囲ここまで
1本の線を何台もの機器で共有しているときには、もう一つ決めることがあります。いま誰が送ってよいのか、という順番です。
ここから基本情報!送る順番の決め方
送りたい機器が、回線が空いているかを確かめ、空いていれば早い者勝ちで送り始める方式をコンテンション方式といいます。順番を管理する装置がいらず仕組みは簡単ですが、2台が同時に送り始めると信号がぶつかることがあります。2-9で見るCSMA方式が、この仲間です。
これに対して、管理役の主局が順番を集中して管理するのがポーリング/セレクティング方式です。主局が従局に順に「送るデータはある?」と問い合わせ、あれば送らせるのがポーリングです。主局から従局へ送りたいときに、先に「受け取れる?」と問い合わせ、準備ができていれば送るのがセレクティングです。主局が順番を決めるので信号はぶつかりませんが、送るものがない従局にも問い合わせる分、待ち時間が生まれます。
基本情報の範囲ここまで
2-8誤りの検出
厨房のオーブンは大きな電気を使います。オーブンの横を通るケーブルでは、ときどきデータが化けることがある、と相棒は言いました。「0が1に化けた注文が届いたら、食パン2斤が3斤になるかもしれないよ」。ミナトは笑えませんでした。
線の上を流れる信号は、雑音や機器の不具合で乱れることがあります。0として送ったビットが、受け取る側で1と読まれてしまうと、届いたデータは送ったものと違ってしまいます。そこで、送る側はデータに確かめ用の情報を少し足して送り、受け取る側はその情報を使って、届いたデータが途中で変わっていないかを調べます。
ここから基本情報!パリティチェックとCRC
いちばん簡単な方法は、データの中の1の個数を数え、その個数に合わせて確かめ用のビット(パリティビット)を1個足すことです。これをパリティチェックといいます。データとパリティビットを合わせた1の個数が偶数になるように決めるのが偶数パリティ、奇数になるように決めるのが奇数パリティです。
たとえば、4ビットのデータ1011を送るとします。1は3個です。偶数パリティならパリティビットを1にして、全体の1を4個(偶数)にします。奇数パリティならパリティビットは0で、1は3個(奇数)のままです。受け取る側が数えて偶数・奇数が合わなければ、途中でどこかのビットが化けたと分かります。ただし、2個のビットが同時に化けると1の個数の偶奇は元に戻るので、パリティビット1個では見逃してしまいます。
パリティビットを付ける向きにも2つあります。1文字(1バイト)ごとに1個ずつパリティビットを付けて調べるのが垂直パリティチェック方式(VRC)です。複数の文字をまとめたブロックの中で、同じビットの位置ごとに横に数えてパリティビットを求め、ブロックの最後に確かめ用の1文字として付けるのが水平パリティチェック方式(LRC)です。文字を縦に並べて書いたとき、1文字ずつ縦に付けるのが垂直、ビットの位置ごとに横に付けるのが水平です。
2つを組み合わせると、化けたビットの場所まで分かります。3文字のデータ1011、0110、1100に、偶数パリティで縦と横のパリティビットを付けてみます。
| 文字 | 1ビット目 | 2ビット目 | 3ビット目 | 4ビット目 | 垂直パリティ |
|---|---|---|---|---|---|
| 文字1 | 1 | 0 | 1 | 1 | 1 |
| 文字2 | 0 | 1 | 1 | 0 | 0 |
| 文字3 | 1 | 1 | 0 | 0 | 0 |
| 水平パリティ | 0 | 0 | 0 | 1 | - |
文字2の3ビット目が化けて0100と届いたとします。文字2の1は1個になり、垂直パリティの0と合わせても奇数なので、文字2のどこかがおかしいと分かります。3ビット目の列を縦に数えると、1・0・0と水平パリティの0で1が1個になり、こちらも合いません。行と列の交わる所、つまり文字2の3ビット目が化けたと突き止められるので、そのビットを反転させれば元に戻せます。
パリティチェックより強い方法がCRC(巡回冗長検査)です。CRCでは、送るビット列を、送る側と受ける側であらかじめ決めておいたビット列で割り算し、その余りを確かめ用の符号として付けて送ります。割る数として決めておく式を生成多項式といいます。割り算は、繰り上がりと繰り下がりのない、各桁の排他的論理和で行います。
小さな例で試します。生成多項式を x3+x+1(ビット列で1011)とし、データ1101を送ります。生成多項式の最高次数が3なので、データの後ろに0を3個付けた1101000を1011で割ると、余りは001になります。送る側は1101の後ろにこの余りを付けて、1101001を送ります。受け取る側が1101001を1011で割ると、余りは000で割り切れます。途中で3ビット目が化けて1111001と届けば、余りは110になり、割り切れないことから誤りに気づけます。CRCは、連続した何ビットかがまとめて化ける誤り(バースト誤り)に強く、有線LANのフレームの誤り検出にも使われています。
基本情報の範囲ここまで
誤りが見つかったときは、受け取る側がそのデータを捨て、送り直してもらうのが基本です。こむぎ堂の注文が化けても、確かめ用の情報のおかげで、3斤の注文として届く前に止められます。
2-9メディアアクセス制御
開店20分前。ミナトは最後に、店の無線LANのことを相棒に聞きました。「タブレットもスマートフォンも、同じ電波を使っているよね。何台も同時にしゃべったら、どうなるの」
1本の線や1つの電波を複数の機器で分け合っているとき、それぞれの機器がいつ送ってよいかを決めておかないと、通信は成り立ちません。複数の機器が同じ伝送媒体を共有するときに、送るタイミングを調整する仕組みをメディアアクセス制御(MAC:Media Access Control)といいます。データリンク層の仕事の一つで、MACアドレスの「MAC」もこの名前から来ています。
ここから基本情報!ぶつかったときと、ぶつけない工夫
複数の機器が同時に送ると、信号が重なり合って、どちらのデータも正しく届かなくなります。この現象を衝突(コリジョン)といいます。メディアアクセス制御の方式は、衝突が起きてから対処するか、起こさないように工夫するか、そもそも起きない形にするかで分かれます。
有線LAN(イーサネット)で使われてきたのがCSMA/CDです。送る前に回線を聞いて、誰も送っていなければ送り始めます。送っている最中に衝突を検出(Collision Detection)したら、送るのをやめ、機器ごとにばらばらな時間だけ待ってから送り直します。待ち時間をばらばらにするのは、同じ時間だけ待つと、送り直しどうしがまたぶつかるからです。スイッチングハブで機器ごとに線が分かれ、全二重で通信するいまの有線LANでは、衝突はほとんど起きなくなっています。
無線LANでは、自分が電波を出しているあいだは、ほかの機器の電波を聞き取れないので、衝突を検出できません。そこで、送る前に電波が使われていないかを確かめ、使われていれば、空いたあともすぐには送らず、機器ごとにばらばらな時間だけ待ってから送ります。空いたとたんに何台もが一斉に送り出してぶつかるのを、こうして避けます。これがCSMA/CA(Collision Avoidance:衝突回避)で、こむぎ堂のタブレットもこの方式で電波を分け合っています。
衝突が起きない方式もあります。トークンパッシングは、送る権利を表すトークンという特別なデータを機器のあいだで順番に回し、トークンを受け取った機器だけが送れる方式です。送れるのは常に1台なので、衝突は起きません。リング型のLANと組み合わせて使われてきました。
基本情報の範囲ここまで
7時50分、ミナトは2台のハブをつないでいた2本のケーブルのうち、1本を抜きました。数秒でランプの点滅が落ち着き、レジの画面に予約の一覧が戻ってきます。店長はトレーを置いて大きく息をつきました。ミナトはさらに、新しく買う予定のスイッチの説明書を開き、輪を見つけたら自動で一部のポートを止めるスパニングツリーの機能を有効にする手順に印を付けました。「次に誰かが同じつなぎ方をしても、店は止まらないようにしておきます」
木曜の朝に止まったのは、ハブが「宛先の分からないデータは全部のポートへ送る」という、ふだんは正しい仕事をしていたからでした。1本の余分なケーブルが輪を作り、全員宛てのデータが輪を回り続けて、どの機器も本当のデータを受け取れなくなったのです。どの装置がどの層で、何を見てデータを運んでいるかが分かっていたから、ミナトは開店前に原因までたどり着けました。
ただ、店長には一つ、気になることが残っています。「ルータはIPアドレスを見て道を決めるって言ったよね。そのアドレスって、誰がどうやってレジに配っているの?」。その答えは、層ごとの決まりごと(プロトコル)の中にあります。