3-1TCP/IP
火曜の朝9時57分、こむぎ堂の電話が鳴りました。「10時受け取りで予約しようとしたら、もう締め切りって出たんですけど」。店長が予約システムの管理画面を開くと、サーバの時計は10時2分を指していました。壁の時計は、まだ9時57分です。同じころ、ミナトは新しく買った予約受付用のタブレットを前に首をひねっていました。Wi-Fiにつないだはずなのに、どのページも開きません。店長は受話器を置いて言います。「時計がずれるのも、ネットにつながらないのも、機械が勝手にやっていることでしょう。どこを見ればいいの」。ミナトは相棒に打ち込みました。「機械どうしって、どうやって話を合わせているんだろう」
相棒の返事は、話し方の決まりから始まりました。「人どうしでも、言葉と順番がそろっていないと話は通じない。機械どうしも同じで、何を、どの順で、どんな形で送るかを、前もって決めてある」。この決まりごとを通信プロトコル、略してプロトコルと呼びます。送る側と受ける側が同じプロトコルに従うから、作った会社の違う機器どうしでも話が通じます。
インターネットで使われているプロトコルの集まりは、中心にある2つのプロトコルの名前をとってTCP/IPと呼ばれます。TCP/IPのプロトコルを、受け持つ役割ごとに4つの層に分けて整理したものがTCP/IP階層モデルです。下から順に、ネットワークインタフェース層、インターネット層、トランスポート層、アプリケーション層と積み上がります。
いちばん下のネットワークインタフェース層は、同じLANの中にいる隣の機器まで、ケーブルや電波でデータを届けます。イーサネットや無線LANの決まりがここに入ります。その上のインターネット層は、IPアドレスを手がかりに、ルータからルータへとデータを中継して、別のネットワークにいる相手まで届けます。この層の主役がIPです。さらに上のトランスポート層は、届いたデータを機器の中のどのアプリケーションに渡すか、取りこぼしをどう扱うかを受け持ちます。いちばん上のアプリケーション層は、Webの閲覧、メール、時刻合わせといった、使う人の目的ごとのやり取りを決めます。
7つの層からなるOSI基本参照モデルと並べると、TCP/IP階層モデルは、OSIのいくつかの層を1つにまとめた形をしています。
| TCP/IP階層モデルの層 | 対応するOSI基本参照モデルの層 | 受け持つこと |
|---|---|---|
| アプリケーション層 | アプリケーション層・プレゼンテーション層・セション層 | Web、メール、時刻合わせなど、目的ごとのやり取り |
| トランスポート層 | トランスポート層 | どのアプリケーション宛てかの区別、届いたかの確認 |
| インターネット層 | ネットワーク層 | IPアドレスによる、ネットワークをまたぐ中継 |
| ネットワークインタフェース層 | データリンク層・物理層 | 同じLANの中で、隣の機器まで届ける |
層に分けておくと、ある層の中身を入れ替えても、ほかの層はそのまま使えます。店のパソコンをケーブルから無線LANに切り替えても、Webページを見る決まりは何も変わりません。下の層は「届ける」ことだけを引き受け、上の層は届け方を気にせずに自分の仕事をします。
ここから基本情報!層ごとに包んで送る
送る側では、データは上の層から下の層へ渡されるたびに、その層が使う制御の情報を先頭に付け足されます。この先頭の部分をヘッダといいます(シラバスの表記はヘッダー)。トランスポート層は宛先のアプリケーションを示す番号などを、インターネット層は送信元と宛先のIPアドレスなどを、ネットワークインタフェース層はMACアドレスなどを書いたヘッダを付けます。ネットワークインタフェース層では、末尾にも誤りを調べるための情報が付きます。
封筒を一回り大きな封筒に入れ、その外側に新しい宛名を書き足していくような重ね方で、これをカプセル化と呼びます。受け取った側は反対に、下の層から順に自分の層のヘッダを読んで外し、中身を上の層へ渡します。途中のルータは、インターネット層のヘッダまでを読めば、どこへ中継するかを決められます。
基本情報の範囲ここまで
時計のずれと、つながらないタブレット。どちらがどの層の話なのかは、まだ分かりません。ミナトは下の層から順に、店の機器が守っている決まりを確かめていくことにしました。
3-2データリンク層のプロトコル
2階の喫茶スペースには、お客さん用のWi-Fiがあります。ミナトが自分のスマートフォンをお客さんのつもりでつないでみると、プリンタの一覧に、厨房のラベルプリンタとレジのレシートプリンタの名前が出てきました。店長がのぞき込みます。「お客さんの側から、うちのレジが見えるってこと?」
見えてしまう理由は単純で、お客さん用のWi-Fiも、レジも、同じスイッチにつながった1つのLANの中にいるからです。スイッチを2台に分けて配線をやり直せば解決しますが、喫茶スペースのためだけに機器と配線を増やすのは大がかりです。
そこで使うのがVLAN(Virtual LAN)です。VLANは、1台のスイッチの中に、互いに独立した複数のLANを設定で作る技術です。スイッチのポートごとに所属するグループを決めるやり方と、データにグループの番号(タグ)を付けて見分けるやり方があります。同じスイッチにつながっていても、違うVLANにいる機器どうしは、ルータなどを通さない限りデータをやり取りできません。
こむぎ堂なら、レジ・予約のサーバ・ラベルプリンタをVLAN 10に、2階のお客さん用Wi-FiのアクセスポイントをVLAN 20に入れます。配線は1本も変えずに、お客さんのスマートフォンからはレジもプリンタも見えなくなりました。席替えのように、機器の所属は設定を変えるだけで入れ替えられます。
ここから基本情報!IPアドレスとMACアドレスを結ぶ
同じLANの中でデータを最後に届けるとき、頼りにするのはIPアドレスではなくMACアドレスです。ところが、送る側が知っているのは、たいてい相手のIPアドレスだけです。そこで送る側は「このIPアドレスを持っている機器は、MACアドレスを教えてください」とLANの全員に問い合わせます。この仕組みがARP(Address Resolution Protocol)です。当てはまる機器だけが自分のMACアドレスを返し、送る側はその対応をしばらく覚えておきます。
向きが逆の仕組みもあります。自分のMACアドレスしか分からない機器が、自分に割り当てられたIPアドレスを問い合わせるのがRARP(Reverse ARP)です。ディスクを持たず、起動のたびに設定を受け取る端末のために作られたものです。いまはIPアドレスを自動で配る、より多機能なプロトコルに役目を譲っています。
基本情報の範囲ここまで
店の外へ出ていく所にも、データリンク層の決まりがあります。こむぎ堂の光回線の契約書類を広げると、接続方式の欄に2つの名前が並んでいました。
ここから基本情報!光回線でプロバイダにつなぐ
PPP(Point to Point Protocol)は、2つの機器を1対1でつなぐためのデータリンク層のプロトコルです。つなぐ前に利用者のIDとパスワードで認証し、IPアドレスなどの設定を受け渡します。もとは電話回線を使ったダイヤルアップ接続で使われていました。
このPPPのやり取りを、イーサネットの上で行えるようにしたのがPPPoE(PPP over Ethernet)です。光回線でプロバイダに接続するとき、ルータにプロバイダのIDとパスワードを入力するのは、PPPoEで認証を受けるためです。これに対してIPoE(IP over Ethernet)は、PPPのような認証と接続の手続きを挟まずに、イーサネットの上で直接IPの通信を行う方式です。契約した回線かどうかは回線の側で見分けるので、ルータにIDとパスワードを入れなくてもつながります。PPPoEの接続を受け付ける装置を通らないため、利用者が集中する夜の時間帯にも速度が落ちにくいとされます。
基本情報の範囲ここまで
3-3ネットワーク層のプロトコル
先月、ミナトは厨房のラベルプリンタに、IPアドレスを手で設定しました。店のパソコンからの印刷は、その日からずっと問題なく出ています。それなのに、クラウドで動く通販サイトから届くはずの注文票だけが、一枚も出てきません。
インターネット層、OSI基本参照モデルでいうネットワーク層の中心はIPです。IPの仕事は、宛先のIPアドレスを見て、データを相手のネットワークまで中継していくことにあります。宛先が同じネットワークの中にいれば、直接届けられます。外にいる相手に送るには、ネットワークの出口になる機器に、まず渡さなければなりません。
自分のネットワークの外へ送るデータを、とりあえず渡す相手として設定しておくルータをデフォルトゲートウェイ(デフォルトルータ)といいます。宛先までの道を自分では知らないデータは、すべてここへ預けます。店のような小さなLANでは、たいていブロードバンドルータのIPアドレスを設定します。
ラベルプリンタの設定画面を開くと、デフォルトゲートウェイの欄が空のままでした。店のパソコンは同じネットワークの中にいるので、直接届きます。外のクラウドにある通販サイトとは、出口が分からないので話せません。印刷はできるのに注文票だけが届かなかったのは、このためでした。ミナトがルータのアドレスを書き込むと、たまっていた注文票が3枚続けて出てきました。
ここから基本情報!宛先の数と、アドレスの範囲
IPの通信は、宛先の数で3つに分けられます。1台の相手にだけ送るユニキャスト、同じネットワークにいる全員に送るブロードキャスト、あらかじめ決めたグループの機器にだけ送るマルチキャストです。Webページを見るのはユニキャスト、MACアドレスを全員に問い合わせるのはブロードキャストです。マルチキャストは、同じ映像を決まった何台かにだけ配るような場面で使い、IPv4では224.0.0.0から239.255.255.255までがマルチキャスト用のアドレスです。
「同じネットワークにいる」かどうかは、IPアドレスだけでは決まりません。IPv4アドレスは32ビットで、前半がネットワークを表すネットワーク部、後半がその中の1台を表すホスト部です。どこまでがネットワーク部かを示すのがサブネットマスクで、ネットワーク部のビットを1、ホスト部のビットを0にした32ビットの値です。IPアドレスとサブネットマスクをビットごとにANDすると、ホスト部が0になり、そのネットワークそのものを表すサブネットアドレスが求まります。
ネットワーク部のビット数を、アドレスの後ろに「/26」のように書く表し方をCIDR(Classless Inter-Domain Routing)といいます。以前のIPv4アドレスは、クラスA・B・Cのように、ネットワーク部の長さが8ビット単位で決まっていました。CIDRではそれを1ビット単位で決められるので、必要な台数に合わせて、アドレスを無駄なく割り当てられます。
ホスト部のビットがすべて1のアドレスはブロードキャストアドレスで、そのネットワークの全員に送るときの宛先です。ホスト部がすべて0のサブネットアドレスと、すべて1のブロードキャストアドレスは機器に割り当てられないので、使える台数は2ホスト部のビット数から2を引いた数になります。
例として、こむぎ堂の192.168.1.0/24を4つに区切り、2階の喫茶スペースの機器を独立したネットワークにしてみます。/26なのでネットワーク部は26ビット、ホスト部は6ビットです。2階のタブレットのアドレスを192.168.1.130とすると、次のように計算できます。
| 項目 | 求め方 | 結果 |
|---|---|---|
| サブネットマスク | 先頭から26ビットが1。最後の8ビットは11000000 | 255.255.255.192 |
| 最後の8ビットのAND | 130(10000010)AND 192(11000000)= 10000000 | 128 |
| サブネットアドレス | ホスト部の6ビットをすべて0にする | 192.168.1.128 |
| ブロードキャストアドレス | ホスト部の6ビットをすべて1にする(128+63) | 192.168.1.191 |
| 機器に割り当てられる数 | 26 − 2 = 64 − 2 | 62台 |
192.168.1.129から192.168.1.190までの62個が、2階の機器に使えるアドレスです。1階のレジが192.168.1.20なら、最後の8ビットのANDは0になり、サブネットアドレスは192.168.1.0です。サブネットアドレスが違うので、1階と2階は別のネットワークとして扱われます。
基本情報の範囲ここまで
こむぎ堂のデータは、店のルータを出たあと、プロバイダや通信事業者のルータをいくつも渡って、通販サイトのサーバにたどり着きます。途中のルータも、宛先のIPアドレスを見て、次に渡す相手を一台ずつ決めています。
ここから基本情報!道を選ぶ、届かないときに知らせる
宛先のネットワークまでの経路を選び、次に渡すルータを決める処理をルーティングといいます。ルータは、宛先のネットワークと次に渡す相手を組にした経路表(ルーティングテーブル)を持っていて、届いたデータの宛先を表と照らし合わせて転送します。表に載っていない宛先は、デフォルトゲートウェイに当たる相手へ送ります。経路表は、管理者が手で書くこともあれば、ルータどうしが情報を交換して自動で作ることもあります。
自動で作るときのプロトコルの一つがRIP(Routing Information Protocol)です。RIPは、宛先までに通るルータの数(ホップ数)を距離とみなし、いちばん少ない経路を選びます。隣のルータと経路表を定期的に教え合う、距離ベクトル型と呼ばれるやり方です。ホップ数は15までしか扱えず、16は「届かない」の意味になるので、大きなネットワークには向きません。
IPには、通信の調子を知らせ合うための、対になるプロトコルがあります。ICMP(Internet Control Message Protocol)は、宛先に届かなかった、途中で寿命が尽きた、といった誤りを送り主に知らせたり、相手に届くかどうかを確かめたりするためのプロトコルです。IPのヘッダには、ルータを1台通るたびに1ずつ減る生存時間(TTL)があり、0になったデータは捨てられて、送り主にはICMPで知らせが返ります。
IPのヘッダには、中身がどのプロトコルのデータなのかを示すプロトコル番号も入っています。ICMPは1、TCPは6、UDPは17です。受け取った機器は、この番号を見て、中身をどのプロトコルの処理に渡すかを決めます。
基本情報の範囲ここまで
3-4トランスポート層のプロトコル
厨房には、オーブンの中を映す見守りカメラがあり、その映像をレジ横のタブレットで見られます。予約の確認も同じタブレットで、同じWi-Fiを通ります。それなのに、カメラの映像はときどき一瞬止まって飛ぶのに、予約の数字が欠けたことは一度もありません。ミナトは不思議に思いました。
違いを生んでいるのは、トランスポート層のプロトコルの選び方です。代表はTCP(Transmission Control Protocol)とUDP(User Datagram Protocol)の2つです。
TCPは、送り始める前に相手と接続を確立し、届いたかどうかを確かめながら送ります。届かなかった分は送り直し、順番が入れ替わって届いた分は並べ直してから、アプリケーションに渡します。予約の「食パン2斤」が「食パン斤」になっては困るので、予約の画面のような通信はTCPを使います。
一方のUDPは、接続の手続きをせず、送りっぱなしにします。届いたかどうかの確認も、送り直しもしません。そのぶん手順が少なく、遅れも小さくなります。1秒前の映像を送り直してもらっても、そのときにはもう次の場面が映っているので役に立ちません。見守りカメラの映像が一瞬飛ぶのは、取りこぼした分をあきらめて先へ進んでいるからです。動画や音声のように遅れない方が大事な通信、1往復で済む短い問い合わせには、UDPが向いています。
もう一つ、トランスポート層には大事な役目があります。IPアドレスで届けられるのは、機器までです。1台のサーバの中では、Webのサーバ、メールのサーバ、時刻を配るサーバなど、いくつものアプリケーションが同時に動いています。届いたデータをどのアプリケーションに渡すかを区別するのがポート番号で、0から65535までの番号です。Webの通信(HTTP)は80番、暗号化したWebの通信(HTTPS)は443番がふつうです。
ここから基本情報!番号で順番と行き先を管理する
ポート番号のうち0番から1023番は、主なプロトコルのために、インターネットの番号を管理するIANAが割り当てた番号で、ウェルノウンポート番号と呼ばれます。HTTPの80番、HTTPSの443番、メールを送るSMTPの25番、DNSの53番などがこれに当たります。サーバは決まった番号で待ち受け、利用者の側は、通信のたびに空いている大きな番号を一時的に使います。
TCPが順番の入れ替わりと抜けに気づけるのは、送るデータにシーケンス番号を付けているからです。シーケンス番号は、データが全体の何バイト目から始まるかを示す番号で、受け取った側はこれを見て並べ直し、抜けている所があれば分かります。受け取った側は「ここまで受け取った、次は何バイト目から」と確認応答を返し、返事の来ない分を送る側が送り直します。
UDPの上にも、順番を見る仕組みを足したプロトコルがあります。RTP(Real-time Transport Protocol)は、音声や動画をリアルタイムに送るためのプロトコルで、ふつうUDPの上で使います。パケットごとに通し番号と時刻の情報を付けるので、受け取った側は順番をそろえ、決まった間隔で再生できます。抜けたパケットに気づいても、TCPのように送り直しを求めることはしません。IP電話やビデオ会議の音声が、この仕組みで運ばれています。
基本情報の範囲ここまで
3-5アプリケーション層のプロトコル
火曜の朝の2つの困りごとに、ミナトはようやく戻ってきました。ルータの管理画面を開くと、「割り当て済み」の一覧に10台の機器が並んでいます。レジ、タブレット、店長とスタッフのスマートフォン、そして先週お客さん用に貸し出したタブレット。新しいタブレットの名前は、どこにもありません。
店の機器のIPアドレスは、ルータが自動で配っています。このとき使われるのがDHCP(Dynamic Host Configuration Protocol)です。DHCPは、ネットワークにつないだ機器に、IPアドレス、外へ出るときのデフォルトゲートウェイ、名前を引くDNSサーバのアドレスといった設定を、まとめて自動で配ります。配るアドレスには使ってよい期間があり、期間が過ぎて使われていないアドレスは回収され、ほかの機器に回されます。
こむぎ堂のルータは、配るアドレスの範囲を192.168.1.100から192.168.1.109までの10個にしていました。10個がすべて貸し出し中だったので、11台目の新しいタブレットに渡すアドレスが残っていなかったのです。Wi-Fiにはつながるのに、どのページも開かなかったのは、このためでした。
ここから基本情報!DHCPの前身
DHCPには前身があります。BOOTP(Bootstrap Protocol)は、ディスクを持たない端末が、起動するときにIPアドレスや、起動に使うファイルの置き場所を受け取るためのプロトコルです。BOOTPでは、どの機器にどのアドレスを渡すかを、管理者が前もって1台ずつ登録しておく必要がありました。DHCPはBOOTPを拡張して作られ、アドレスを期間付きで貸し出して回収する仕組みが加わりました。
基本情報の範囲ここまで
時計の方は、別のプロトコルの出番です。コンピュータの時計は、中の水晶が振動する回数を数えて進むので、放っておくと少しずつずれます。NTP(Network Time Protocol)は、ネットワークを通じて正確な時刻を持つサーバに問い合わせ、機器の時計を合わせるプロトコルです。時刻を配るサーバは、原子時計などの基準に近いものから順に階層をなしていて、下の階層のサーバは上の階層から時刻を受け取ります。日本では、情報通信研究機構(NICT)が公開しているNTPサーバがよく使われます。予約のサーバは、このNTPの設定が切れていて、数か月かけて5分進んでいました。
毎日いちばん多く使われているアプリケーション層のプロトコルは、Webのものでしょう。HTTP(HyperText Transfer Protocol)は、ブラウザがWebサーバにページを要求し、サーバが中身を返すためのプロトコルです。HTTPS(HTTP over TLS)は、HTTPの通信をTLSで暗号化したもので、途中で中身を盗み見られたり、書き換えられたりするのを防ぎます。予約の画面のように個人の情報を扱うページは、HTTPSで送ります。
ここから基本情報!Webの新しい版と、ほかのプロトコル
Webページ1枚を表示するには、文章、画像、スタイルなど、何十ものファイルを受け取ります。HTTP/2は、1本の接続の中で複数の要求と応答を同時に並行してやり取りする多重化や、毎回ほぼ同じになるヘッダの圧縮によって、表示を速くした版です。HTTP/3はさらに、TCPの代わりに、UDPの上で動くQUICというプロトコルを使います。接続を始めるときの往復を減らし、1つのファイルの取りこぼしが、ほかのファイルの受け取りを待たせないようにしています。
Web以外にも、アプリケーション層のプロトコルはたくさんあります。TELNETは、離れた場所にあるコンピュータにログインし、手元からコマンドで操作するためのプロトコルです。パスワードも含めて中身を暗号化せずに送るので、いまは暗号化して送るSSHが使われます。NNTP(Network News Transfer Protocol)は、話題ごとの掲示板に投稿された記事を配る「ネットニュース」のサーバどうしで、記事をやり取りするためのプロトコルです。
プログラムどうしの呼び出しにも、ネットワークをまたぐ決まりがあります。分散オブジェクト技術は、ネットワーク上の別々のコンピュータに置かれたオブジェクト(データと処理をひとまとめにしたもの)を、まるで手元にあるかのようにメソッドを呼び出して連携させる技術です。その代表的な規格がCORBA(Common Object Request Broker Architecture)で、標準化団体のOMGが定めました。仲介役のORBが呼び出しを相手に届けるので、作った言語やOSが違うプログラムどうしでも呼び出し合えます。
基本情報の範囲ここまで
3-6LANとWANのインタフェース
新しいタブレットの箱には「Wi-Fi 6対応」と書いてありました。ミナトがルータを裏返すと、こちらにも小さな文字で「Wi-Fi 5」「1000BASE-T」と並んでいます。店長が言います。「6の方が新しいなら、ルータも買い替えた方がいいの?」
無線LANの規格は、IEEEという団体が「IEEE 802.11」に続く記号で定めています。ところが記号の並びからは、どれが新しいのか分かりにくい。そこで、業界団体のWi-Fi Allianceが、世代ごとに覚えやすい番号を付けました。それがWi-Fi 6のような世代の名前です。
| 世代の名前 | IEEEの規格 | 使う周波数帯 | 規格上の最大の速さ |
|---|---|---|---|
| Wi-Fi 4 | IEEE 802.11n | 2.4GHz帯・5GHz帯 | 600Mbps |
| Wi-Fi 5 | IEEE 802.11ac | 5GHz帯 | 6.9Gbps |
| Wi-Fi 6 | IEEE 802.11ax | 2.4GHz帯・5GHz帯 | 9.6Gbps |
| Wi-Fi 6E | IEEE 802.11ax | Wi-Fi 6に6GHz帯を加えたもの | 9.6Gbps |
IEEE 802.11nは、複数のアンテナで同時に送受信するMIMOという技術を取り入れて、それまでより大きく速くなった規格で、Wi-Fi 4に当たります。表の最大の速さは、規格が決めている上限です。実際の速さは、電波の届き具合や、同時につないでいる台数で大きく変わります。また、通信は両方が対応している世代で行われるので、タブレットがWi-Fi 6でも、ルータがWi-Fi 5ならWi-Fi 5でつながります。店長の質問には、「2階の電波が弱いことの方が先の問題」とミナトは答えました。
2階の電波が弱いとき、アクセスポイントをもう1台置く手があります。ただ、別々のアクセスポイントを置くと、つなぎ先を手で切り替えたり、遠い方にしがみついたままになったりします。メッシュWi-Fiは、複数のアクセスポイントが互いに連携して網の目のようにつながり、建物全体を1つの無線LANとして覆う仕組みです。どのアクセスポイントも同じネットワークの名前を名乗り、端末は移動に合わせて近い方へ自然に切り替わります。アクセスポイントどうしの中継を無線で行える製品が多く、2階までケーブルを引かずに済みます。
ここから基本情報!WANの側の規格
店の外へつながる回線、つまりWANの側にも規格があります。ISDN(Integrated Services Digital Network)は、電話回線をデジタル化し、音声とデータを同じ回線で送れるようにした通信網です。日本ではNTTが「INSネット64」として提供し、64kbpsの通信路を2本同時に使えました。電話をしながらデータを送れることが売りでしたが、光回線が広まったいまでは、新しく使う場面はほとんどありません。
基本情報の範囲ここまで
ここから基本情報!有線LANと無線LANの規格の名前
ルータの裏の「1000BASE-T」は、有線LAN(イーサネット)の規格の名前です。先頭の数字は速さ(Mbps、10Gは10Gbps)、BASEは信号をそのまま送るベースバンド方式、最後のTはより対線(ツイストペアケーブル)を使うことを表します。どれもケーブルの長さは最大100mです。速い規格ほど、ノイズに強い上のカテゴリのケーブルが必要になります。
| 規格 | 最大の速さ | ケーブルのカテゴリの目安 |
|---|---|---|
| 10BASE-T | 10Mbps | カテゴリ3以上 |
| 100BASE-TX | 100Mbps | カテゴリ5以上 |
| 1000BASE-T | 1Gbps | カテゴリ5以上(いまは5eがふつう) |
| 10GBASE-T | 10Gbps | カテゴリ6A以上 |
無線LANの規格の全体はIEEE 802.11と呼ばれ、後ろの記号で版を区別します。世代の名前が付く前の規格には、5GHz帯で最大54Mbpsの802.11a、2.4GHz帯で最大11Mbpsの802.11b、2.4GHz帯で最大54Mbpsの802.11gがあります。2.4GHz帯は壁を回り込みやすく遠くまで届く一方、電子レンジなどと同じ周波数帯なので、干渉を受けやすいという違いがあります。
基本情報の範囲ここまで
3-7ネットワーク運用管理
土曜の午後2時、厨房のタブレットに通販の注文が出なくなりました。「どこがおかしいの? ルータ? 回線? 通販の会社?」と店長は次々に聞きます。ミナトは、まず何から手をつければいいのかで迷いました。
障害が起きたとき、最初にするのは情報収集です。いつから、どの機器で、何ができなくなったのか。画面に出たエラーの文、機器のランプの色、残っているログ、直前に誰かが変えた設定や配置。思いつきで機器を再起動する前に、手がかりを集めておきます。再起動すると、原因の手がかりになる状態やログが消えてしまうことがあるからです。
ミナトが集めた手がかりは四つでした。注文が出なくなったのは1時40分ごろから。レジのパソコンでは、通販の管理画面に新しい注文が届いている。おかしいのは厨房のタブレットだけ。お昼に、厨房の棚の位置を動かしていた。
ここから基本情報!構成の記録と、障害対応の流れ
ネットワークを管理する仕事は、構成管理、障害管理、性能管理などに分けられます。構成管理は、ネットワークの今の姿を記録し、変えたら記録も直す仕事です。記録しておくものには、どの機器がどこに置かれ、どの機器とどうつながっているかというネットワーク構成と、各機器で動いているソフトウェアやファームウェアのバージョンがあります。バージョンが分かっていれば、ある版に不具合が見つかったとき、更新が要る機器をすぐに挙げられます。
障害管理は、情報収集のあと、次の順に進みます。まず障害の切り分けで、障害がネットワークのどの部分で起きているのかを絞り込みます。レジのパソコンには注文が届いているので、回線や通販の会社の側は正常で、問題は厨房のタブレットか、そこまでの間にある、と絞れます。手元の構成の記録を見ると、厨房のタブレットは、棚の上にある厨房用のアクセスポイントを通っていました。
次に障害原因の特定で、絞り込んだ所の、具体的な原因を突き止めます。棚の裏をのぞくと、アクセスポイントの電源アダプタが、棚を動かしたときにコンセントから半分抜けていました。原因が分かったら復旧措置として、機器の再起動や交換、設定の変更などで、元どおりに使える状態に戻します。ここではアダプタを差し直し、タブレットに注文が出ることを確かめました。
最後が記録です。起きた日時、現象、切り分けの経緯、原因、復旧のためにしたことを書き残します。同じ障害がまた起きたときに早く直せ、再発を防ぐ手も考えられます。ミナトは記録に「電源アダプタを棚に結束バンドで留めた」と書き足しました。
基本情報の範囲ここまで
直ったあとも、店長には気になることが残りました。「注文が出ないことに、お客さんからの電話より先に気づけないものかな」
ここから基本情報!止まる前に気づくための監視
機器やサービスが動いているかどうかを、定期的に確かめ続けることを死活監視といいます。数分おきに相手へ応答を求めるパケットを送り、返事が来なければ、管理者に通知します。厨房のアクセスポイントを死活監視の対象にしておけば、電源が抜けた時点で、ミナトのスマートフォンに知らせが届きます。
光回線そのものが止まったときの備えもあります。主に使う回線に障害が起きたとき、代わりに使う予備の回線をバックアップ回線といいます。こむぎ堂の規模なら、ふだんは光回線を使い、止まったときだけモバイル回線に切り替わるルータにする、という備え方が考えられます。
止まってはいないものの、遅くなることもあります。性能管理の中心はトラフィック監視で、どの時間帯に、どれだけの通信量が流れているかを観測し続けます。ふだんの量を知っていれば、混雑で遅くなる前に手を打てますし、深夜に急に通信が増えるといった、いつもと違う動きにも気づけます。
通信量を、誰と誰の、どんな種類の通信かという単位で集める仕組みもあります。送信元と宛先のアドレス、ポート番号、プロトコルが同じ一連の通信をフローと呼び、ルータなどがフローごとの量を記録して、集計するサーバに送ります。そのための標準のプロトコルがIPFIX(IP Flow Information Export)で、Cisco社のNetFlowをもとに、IETFが標準化しました。
流れている量ではなく、中身まで見たいときにはLANアナライザを使います。ネットワークを流れるパケットを捕まえて記録し、ヘッダや中身を解析する装置やソフトウェアです。どの機器が、どんな要求を出して、どんな返事を受け取っているのかを1つずつ追えるので、障害の切り分けに役立ちます。パケットの中身まで見られるので、使うのは自分たちが管理するネットワークに限ります。
基本情報の範囲ここまで
3-8運用管理のコマンド
火曜の夕方、ミナトは予約のサーバに入り、黒い画面に文字を打ち込みました。相棒は、ネットワークの様子を確かめる短い命令を、目的ごとに教えてくれます。「画面を眺めるより、機器に直接聞いた方が早いよ」
ネットワークの調子は、OSに用意されたコマンドで確かめられます。Linuxで使われるipは、ネットワークの設定を表示し、変更するためのコマンドです。「ip address」と打てば機器に付いているIPアドレスの一覧が、「ip route」と打てば経路の設定が表示されます。以前は、アドレスを見るコマンドと経路を見るコマンドが別々にあり、ipはそれらの役目をまとめて受け持つコマンドです。予約のサーバで確かめると、IPアドレスもデフォルトゲートウェイも、正しく設定されていました。
ここから基本情報!自分の設定と、隣の機器を確かめる
自分の機器のIPアドレスなどの設定を表示するコマンドは、OSによって名前が違うので、ipconfig/ifconfigと並べて呼ばれることがあります。Windowsではipconfigを使い、IPアドレス、サブネットマスク、デフォルトゲートウェイを表示します。「ipconfig /all」でDHCPサーバのアドレスなどの詳しい情報も、「ipconfig /renew」でDHCPからアドレスをもらい直すこともできます。UNIX系のOSではifconfigが、ネットワークインタフェースの情報の表示と設定に使われてきました。いまのLinuxでは、ifconfigに代わってipコマンドを使うのが主流です。
arpは、ARPで調べたIPアドレスとMACアドレスの対応表を表示したり、書き換えたりするコマンドです。「arp -a」で、最近やり取りした同じLANの機器の一覧が出ます。同じIPアドレスに覚えのないMACアドレスが対応していれば、設定の重なりや、なりすましに気づくきっかけになります。
基本情報の範囲ここまで
相手に届くかどうか、どこで止まっているかを調べるコマンドもあります。通販のサーバが遅いと感じた日に、ミナトはその道筋を一つずつたどってみました。
ここから基本情報!相手まで届くか、どこを通るか
pingは、相手にICMPのエコー要求を送り、エコー応答が返ってくるかを確かめるコマンドです。返事が来れば、相手までIPの通信が届いていると分かります。返事までにかかった往復の時間(ミリ秒)も表示されるので、回線の混み具合の目安にもなります。ただし、セキュリティのためにICMPに返事をしない設定の機器もあり、返事が無いことが、すなわち止まっていることを意味するとは限りません。
tracerouteは、相手までの道筋で、どのルータを通っているかを調べるコマンドです(Windowsではtracert)。生存時間(TTL)を1にしたパケットを送ると、1台目のルータでTTLが0になり、そのルータからICMPで「寿命が尽きた」と返事が来ます。次にTTLを2にすると2台目から、3にすると3台目から返事が来ます。こうしてTTLを1ずつ増やしていくと、通ったルータを順に並べられ、どこで返事が途切れるか、どこから急に遅くなるかが分かります。
基本情報の範囲ここまで
名前とアドレスの対応や、いま開いている通信の窓口を調べるコマンドもあります。外からの通信を待ち受けている窓口が、知らないうちに増えていないかを確かめるのも、運用の仕事の一つです。
ここから基本情報!開いている窓口と、名前の問い合わせ
netstatは、機器がいまどの相手とどのポートで通信しているか、どのポートで待ち受けているかといった、ネットワークの状態を一覧にするコマンドです。予約のサーバで、使っていないはずのポートが待ち受けになっていれば、不要なソフトウェアが動いていないかを確かめます。Linuxでは、netstatに代わってssが使われるようになりました。ssも通信の一覧(ソケットの情報)を表示するコマンドで、netstatより速く表示できます。
digは、ドメイン名をDNSに問い合わせ、返ってきた答えを詳しく表示するコマンドです。通販サイトの名前に対してどのIPアドレスが返ってくるか、どのDNSサーバが答えたかが分かるので、「名前では開けないのに、IPアドレスなら開ける」といった障害の切り分けに使います。
基本情報の範囲ここまで
3-9SNMP
ミナトは、店のネットワーク機器を数えてみました。ルータ、スイッチ、アクセスポイントが3台、プリンタが2台。毎朝1台ずつ管理画面を開いて調子を見るのは、仕込みの前にはとても無理です。
ネットワークにつながった機器の状態を、1か所から集めて見守るためのプロトコルがSNMP(Simple Network Management Protocol)です。多くのルータやスイッチ、業務用のプリンタは、SNMPで問い合わせに答える機能を持っています。
ここから基本情報!問い合わせる側、答える側、答えの目録
SNMPの登場人物は2つです。見守られる側の機器の中では、SNMPエージェントというプログラムが動いています。エージェントは、問い合わせが来ると機器の状態を答え、異常が起きたときには、問い合わせを待たずに自分から知らせを送ります。この自分から送る知らせをトラップと呼びます。
見守る側はSNMP管理ステーション(SNMPマネージャ)です。管理ステーションは、各機器のエージェントに定期的に問い合わせて情報を集め、トラップを受け取ったら管理者に知らせます。問い合わせはUDPの161番ポート、トラップはUDPの162番ポートを使うのがふつうです。
問い合わせで何を聞けるかは、MIB(Management Information Base:管理情報ベース)で決まっています。MIBは、機器の名前、動いている時間、ポートごとに送受信した量といった管理項目を、木の形に整理した目録です。項目の一つ一つに、木の根からたどる番号(OID)が付いていて、管理ステーションはこの番号を指定して値を問い合わせます。
こむぎ堂では、予約のサーバに管理ステーションのソフトウェアを入れ、7台の機器を5分ごとに問い合わせるように設定しました。応答が無い機器や、送受信の量がふだんより急に増えた機器があれば、ミナトのスマートフォンに通知が届きます。
基本情報の範囲ここまで
3-10仮想ネットワーク
店長は、夜に家から予約の状況を見たいと言い出しました。ところが予約のサーバは、安全のため、店のLANの中からしか開けないようにしてあります。「家から見るためだけに、サーバを外に丸見えにするのは嫌だな」と店長。ミナトは、店のLANを家まで延ばす方法がないかを相棒と考え始めました。
インターネットを通っていながら、まるで専用の線でつながっているかのように使える仮想の通信路をVPN(Virtual Private Network)といいます。家のパソコンと店のルータの間にVPNを張れば、家のパソコンは店のLANの一員として扱われ、予約のサーバをインターネットに公開しないまま開けます。通り道のデータは暗号化されるので、途中で中身を読まれる心配もありません。
ここから基本情報!パケットの中にパケットを入れる
VPNはトンネリングという技術で作られています。トンネリングは、あるネットワークのパケットを丸ごと別のパケットの中身として包み(カプセル化し)、別のネットワークを通して運ぶ技術です。家のパソコンが店のLAN宛てに作ったパケットは、暗号化されたうえで、インターネット用のヘッダを付けた外側のパケットに入れられます。店のルータで外側を外すと、元のパケットが店のLANの中に出てきます。途中のインターネットからは外側の宛名しか見えず、中を通るトンネルのように見えることから、この名前があります。
基本情報の範囲ここまで
ネットワークそのものを、ソフトウェアで組み立てる考え方もあります。これまでのネットワーク機器は、1台1台が「どこへ転送するか」を決める頭脳と、実際にデータを転送する手足の両方を持ち、設定も1台ずつ変えていました。SDN(Software-Defined Networking)は、この頭脳の部分を機器から切り離し、ソフトウェアで動く制御装置に集めて、ネットワーク全体の構成や経路をまとめて設定する考え方です。機器を配線し直さずに、画面からネットワークの形を変えられます。大きな会社のデータセンターや、通信事業者のネットワークで使われています。
ここから基本情報!SDNを動かすプロトコルと、機器の機能の仮想化
SDNで、制御装置(コントローラ)とスイッチの間のやり取りを決めた代表的なプロトコルがOpenFlowです。コントローラは、OpenFlowを使ってスイッチの転送表(フローテーブル)を書き込みます。スイッチは「この条件に合うパケットは、このポートへ送る」という表に従って転送するだけで、自分では経路を考えません。表に無いパケットをどうするかは、表に書いておく決まりです。「コントローラに問い合わせる」と書いておけば、判断をコントローラに任せられます(何も書いていなければ捨てられます)。
機器の中身を、ソフトウェアに置き換える流れもあります。NFV(Network Functions Virtualization)は、ルータやファイアウォール、負荷分散装置など、専用の機器で動いていたネットワークの機能を、仮想化の技術で汎用のサーバの上で動かす技術です。機能を増やすときに専用の機器を買って運び込まずに済み、必要な数だけ素早く立ち上げられます。SDNが「ネットワークのつなぎ方」をソフトウェアで決めるのに対し、NFVは「ネットワークの機器そのもの」をソフトウェアにする、と分けると区別しやすくなります。
基本情報の範囲ここまで
次の火曜の朝9時57分、予約のサーバの時計は、壁の時計と同じ9時57分を指していました。NTPの設定を直してから、ずれは1秒もありません。新しいタブレットは、配るアドレスを192.168.1.100から192.168.1.199までの100個に広げたルータから、すぐにアドレスを受け取りました。その朝、10時受け取りの予約が2件、9時58分と9時59分に入りました。
あの火曜の朝の2つの困りごとは、どちらもアプリケーション層の決まりの中で起きていました。時刻を合わせる決まりが働いていなかったこと、アドレスを配る決まりの数が足りなかったこと。機械が勝手にやっていたように見えたのは、どの層のどの決まりが、何を受け持っているのかを、誰も見ていなかったからです。いまでは、店の機器の様子はSNMPで1か所から見守られ、止まればお客さんの電話より先にミナトのスマートフォンが鳴ります。
夜、家で予約の一覧を眺めていた店長から、メッセージが届きました。「家から見られるなら、週末に駅前で移動販売をするときも、車からこの予約を見られるのかな。あと、売り切れたら常連さんにメールで知らせたいんだけど」。ミナトは、まだその答えを持っていませんでした。