- 回線交換は通話中ずっと1本の道を占有する。確実だが、黙っている時間まで占有するので無駄が出る。
- パケット交換は小さく切って札(ヘッダ)を貼り、他人の荷物と混ぜて流す。だから1本の線を多数で共有できる。
- 小分けの理由は2つ。壊れた分だけ再送すれば済む/長いデータの独占を防げる。ただしヘッダの分だけ必ず損をする。
こんにちは、数強塾代表の藤原進之介です。この記事は参考書『藤原進之介の最強120講義』の第69講「パケット交換の仕組み」のWeb版です。共通テスト「情報Ⅰ」での重要度はA(頻出。得点差がつく)、情報Ⅱでの接続先は(4)情報システムとプログラミングです。
階層モデルそのものは第68講「プロトコルとTCP/IPの4階層」で、速度と時間の計算は第73講「通信速度とデータ量の計算」で扱いました。この講が受け持つのは、その間にある「パケットという単位そのもの」です。なぜ切るのか。どこまで細かく切ってよいのか。切ったせいで何を失うのか。ここだけに絞ります。
1. 国の文書は「パケット」に何を求めているか
高等学校学習指導要領(平成30年告示)解説 情報編は、情報Ⅰの(4)ア(ア)についてこう書いています。
(文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月)
この1文に「安全」と「効率」という2語が並んでいます。これがそのままパケットの2つの存在理由です。安全=壊れても直せる。効率=回線を分け合える。 以下はこの2語の展開にすぎません。
ところが、文部科学省の「情報Ⅰ」教員研修用教材 第4章(情報通信ネットワークとデータの活用)を全文検索してみると、「回線交換」「パケット交換」「ヘッダ」はいずれも0件、「パケット」も1件だけです。しかもその1件は本文の解説ではなく、章末の総合演習の指導例に「データとパケット,プロトコルなどの関連性を意識し」と現れるだけでした。
つまり国の教材はここを説明していません。 説明が薄い場所ほど、原理から理解した人が差をつけられます。
2. 電話と郵便 ── 回線交換とパケット交換
比喩ではなく、実際に電話がそうでした。総務省「令和元年版 情報通信白書」の「通信ネットワークの進化」は、固定電話網(PSTN)をこう説明しています。
(総務省「令和元年版 情報通信白書」)
「通信している間その経路を専有する」。 ここが回線交換の本質であり、同時に弱点です。会話の途中で黙っている数秒も、資料を探している1分も、その道は他の誰にも使わせません。だから料金が「時間×距離」になる。私が子どもの頃の電話は、長話をすると親に怒られる料金体系でした。
同じ白書は、続けてパケット交換をこう説明します。
(同上)
これは郵便です。郵便局は、あなたの手紙のためにあなた専用の配達路を確保したりしません。宛先が書いてある封筒を、他人の封筒と一緒にトラックへ積むだけです。黙っている時間も、考えている時間も、回線交換ではすべて「専有」でしたが、パケット交換では他人の通信に回ります。多数の利用者の「使っていない時間」を寄せ集めて1本の回線に押し込めるから、1人あたりのコストが劇的に下がる。インターネットが安く広がった理由は、技術の速さではなくこの共有にあります。
代償もはっきりしています。同じ白書はこう続けます。
(同上)
確実さを捨てて安さを取ったのがパケット交換です。 試験で「どちらが優れているか」を問われることはありません。問われるのは常に「何を捨てて何を得たか」です。
同白書はさらに、携帯電話網も2G・3Gの時代は音声用の回線交換網とデータ用のパケット交換網が並存していたが、LTE以降は音声もパケット交換になった(オールIP化)と述べ、音声通話の定額制の実現はこのオールIP化によるところが大きいと書いています。従量制から定額制へという生活の変化そのものが、この移行の帰結でした。
3. なぜ「小分けにする」のか
回線を共有するだけなら、大きいデータを大きいまま流してもよさそうに見えます。それでも小分けにする理由が3つあります。
(a) 壊れた分だけ再送すればよい
3MBのファイルを1つの塊で送っている途中、たった1バイトが化けたとします。塊が1つしかないなら、3MBを全部やり直すしかありません。1,480バイトずつに切ってあれば、壊れた1個(ヘッダ込みで1,500バイト)だけを送り直せば済みます。後で計算しますが、この差は約2,000倍です。解説が言う「安全」はこれです。
(b) 長いデータが回線を独占するのを防げる
誰かが巨大な動画をアップロードしている最中、あなたのメッセージがその後ろに並ばされたらどうなるでしょう。塊が1つなら、動画が終わるまであなたの番は来ません。小分けにしてあれば、動画のパケットの合間にあなたのパケットを差し込めます。分割は、公平さを実現するための仕組みでもある。 解説が言う「効率」の半分はこれです。
(c) 途中の網ごとに運べる大きさが違う
インターネットは1つのネットワークではなく、無数のネットワークの継ぎ接ぎです。イーサネットで運べるIPデータグラムの最大長は1,500オクテットと定められています(RFC894、1984年4月、STD 41)。この上限は網ごとに違うので、IPは途中で断片に切り直す仕組み(フラグメンテーション)を最初から備えています。RFC791は「すべてのホストは576オクテットまでのデータグラムを、丸ごとであれ断片であれ受け取れなければならない」と定め、576という数は「512オクテットのデータブロックに64オクテットのヘッダ情報を加えたものが入る大きさ」として選んだと説明しています。「どんな網でもこれだけは通る」という最低保証がないと、相互接続そのものが成り立ちません。
4. 分割すると必ず損をする ── オーバーヘッド
ここが本講で最も落としてはいけない論点です。
パケットには必ずヘッダが付きます。宛先も、送信元も、何番目の断片かも、ヘッダに書かなければ届かないし復元できません。IPv4のヘッダについて、RFC791はIHL(ヘッダ長)フィールドの説明に「正しいヘッダの最小値は5である」と定めています。単位は32ビット語ですから、5語=20オクテット。オプションを付ければ最大60オクテットになります。
つまり1個パケットを増やすたびに、最低20バイトの「送りたくないもの」が増えるのです。
- 細かく切る → パケット数が増える → ヘッダ総量が増える → 効率が落ちる
- 粗く切る → 壊れたときの再送量が増える/回線の独占が起きる
両側に損があるから、真ん中に最適があります。 「小さく切るほど良い」でも「大きい方が得」でもない。これがパケットサイズの正体です。
ちなみにイーサネットのデータ部の最小長は46オクテットで、これより短いデータには詰め物(パディング)が入ります(RFC894)。それより細かく切っても線の上を流れる量は減りません。物理層の側からも下限が押さえられているわけです。
5. 順番は保証されない ── 後始末は上の層の仕事
パケットは独立に転送され、混雑の具合によって別の経路を通ることもあります。すると後から出したパケットが先に着くことが起こりえます。欠落することもあります。
IP(インターネット層)はここを面倒みません。並べ直し、欠落の検出、再送の指示は、トランスポート層のTCPが引き受けます。これは第68講で扱った階層モデルそのものです。「小分けにする」という決断が、上の層に「順序を直す」という仕事を生んだと考えてください。UDPを使えばその仕事を省ける代わりに、順序も到達も保証されません。
6. 手で確かめる
図:分割 → 共有された回線を通る → 並べ直して再構成。順序が入れ替わりうることに注意。
例題1(基本)
3,000,000バイトのファイルを、イーサネット上でMTUいっぱいまで使って送ります。IPヘッダは20バイトとします。
- 1パケットに載るデータ: バイト
- パケット数: 個
- 最後のパケットのデータ量: バイト
- ヘッダ総量: バイト
- 実際に流れる量: バイト
- 転送効率: すなわち約 98.67%
急所は切り上げです。 2027.02…を2027としたら、最後の40バイトが永久に届きません。共通テストでは、まず割り切れない数字が選ばれます。
例題2(パケットサイズを変えると効率はどうなるか)
データ量 、ヘッダ 、1パケットに載るデータ量(ペイロード) とすると、転送効率 は次のようになります。
、 で を動かしてみます。次のコードを実際に実行した出力が下の表です。
import math
# D: 送りたいデータ量 [byte] / H: IPヘッダ [byte]
# RFC791: IHL の最小値は 5 語 = 20 オクテット
D = 3000000
H = 20
print("payload packets header total efficiency")
for P in (20, 46, 100, 200, 500, 1000, 1480):
N = math.ceil(D / P) # 切り上げ。切り捨てると届かない分が出る
header = N * H
total = D + header
print("%7d %8d %8d %9d %11.2f%%" % (P, N, header, total, D / total * 100))
| ペイロード P | パケット数 N | ヘッダ総量 | 実際に流れる量 | 効率 |
|---|---|---|---|---|
| 20 | 150,000 | 3,000,000 | 6,000,000 | 50.00% |
| 46 | 65,218 | 1,304,360 | 4,304,360 | 69.70% |
| 100 | 30,000 | 600,000 | 3,600,000 | 83.33% |
| 200 | 15,000 | 300,000 | 3,300,000 | 90.91% |
| 500 | 6,000 | 120,000 | 3,120,000 | 96.15% |
| 1,000 | 3,000 | 60,000 | 3,060,000 | 98.04% |
| 1,480 | 2,028 | 40,560 | 3,040,560 | 98.67% |
ペイロードがヘッダと同じ20バイトなら効率はきっかり50%。半分がラベルの宅配便です。逆にMTUいっぱいの1,480バイトなら98.67%。「細かく切るほど良い」が完全に間違いであることが、この表1枚で分かります。
例題3(オーバーヘッド込みの転送時間)
100 Mbpsの回線で例題1のファイルを送ります。実際に流れるのは ビットです。
ヘッダを無視すると 0.2400000 秒。差は 0.0032448 秒=1.352%です。単位換算そのものは第73講の担当ですが、共通テストではこの「ヘッダを足したか」だけで選択肢が分かれることがあります。
例題4(1バイト壊れたときの再送量)
- 分割しない: バイトを再送
- 1,480バイト分割: バイトを再送
- 比: 倍
これが「安全」の中身です。小分けにするというのは、失敗の被害を小さく区切っておくということです。
例題5(最適点は本当に存在するか)
細かすぎると効率が落ち、粗すぎると再送が重い。では最適はどこか。私が置いた単純なモデルで確かめます。ビット誤り率を とすると1パケットが壊れる確率は 。成功するまで再送するとして期待される総転送量 を最小にする を数値的に探すと、(差が見えるように、かなり悪い回線にしています)のとき バイトで最小になりました。目安の式
は158を与えるので、ほぼ一致します。
| ペイロード P | パケット数 N | 1個が壊れる確率 q | 期待される総転送量 |
|---|---|---|---|
| 40 | 75,000 | 0.0469 | 4,721,279 |
| 100 | 30,000 | 0.0915 | 3,962,752 |
| 148 | 20,271 | 0.1258 | 3,895,440 |
| 300 | 10,000 | 0.2259 | 4,133,662 |
| 740 | 4,055 | 0.4556 | 5,660,681 |
| 1,480 | 2,028 | 0.6988 | 10,100,402 |
回線が汚いほど最適パケットは小さくなり、綺麗なほど大きくなる。 現実の回線では が桁違いに小さいので、最適はMTUの上限まで押し上げられます。「イーサネットの1,500いっぱいまで使う」のはそのためです。1,500という数字は暗記するものではなく、こうして決まった結果です。
7. 共通テストではこう出る(重要度 A)
型1:パケット数の計算
データ量とペイロードから個数を出す型。切り上げと最後の1個の中身が急所です。割り切れる数字で作られることはまずありません。
型2:オーバーヘッドを含む転送時間
ヘッダ総量を足してから時間に直す型。ヘッダを1個分しか数えない、bitとByteを取り違える、の2つが定番の失点です。
型3:回線交換との比較
大学入試センターが2021年3月に公表した『情報』サンプル問題の第1問問1は、2011年の東日本大震災の後にまとめられた報告書を題材にした先生と生徒の会話文で、固定電話の回線交換方式とインターネットのデータ通信の違いを空欄補充で選ばせる形式でした。選択肢の軸になっているのは「回線を占有するかどうか」と「欠落しても再送できるかどうか」の2点です。本記事の第2節と第3節を、そのまま問うています。
なおこのサンプル問題については、大学入試センター自身が「具体的なイメージの共有のために作成したもの」であり、実際の問題セットをイメージしたものではないと明記しています。形式に寄せた対策をするのではなく、論点の側を持って帰ってください。
引っかけの急所
- 切り上げを忘れる(最後の半端なパケットを数え落とす)
- ヘッダを1回しか足さない
- 「パケットが小さいほど効率がよい」と思い込む(逆です)
- 「パケット交換は必ず速い」と思い込む(ベストエフォートなので遅延しえます)
8. 情報Ⅱではこうなる
学習指導要領解説 情報編の情報Ⅱ(4)ア(ア)は、こう書いています。
なお,ここでいう情報システムとは,コンピュータやセンサ等を含むハードウェア,ネットワークなどのデータ通信,それらを制御するソフトウェア,その運用体制までを含み,それらがまとまって機能する仕組みのことである。
(文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月)
情報Ⅱでは、ネットワークは「勉強する対象」ではなく「情報システムの部品」になります。 設計する側に回るのです。
そして決定的な事実があります。文部科学省「情報Ⅱ」教員研修用教材 第4章(情報システムとプログラミング)を全文検索すると、「パケット」という語は学習20「情報システムの情報セキュリティ」のファイアウォールの節にしか現れません。 同教材はパケットフィルタリング方式をこう説明します。
(文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第4章 学習20)
情報Ⅰでのパケットは「効率よく運ぶための単位」でした。情報Ⅱでのパケットは「検査して通す/止めるための単位」になります。
そしてこの役割の交代は、本記事の第4節で「損」として扱ったヘッダのおかげで成立しています。データを分割してヘッダを貼ったからこそ、途中の機器は中身を開けずに札だけ読んで判断できる。 オーバーヘッドとして捨てていた20バイトが、情報Ⅱではセキュリティ設計の足場になるのです。
同じ教材の第1章「情報社会の進展と情報技術」でも、家庭のスマート家電やIoT機器の対策として、Wi-Fiルータの管理画面を有線接続の端末だけに限定することと並べて「パケットフィルタリングなどの設定を行う」ことが挙げられています。パケット単位の制御は、企業のサーバ室の話ではなく、家庭のルータの話にまで下りてきています。
接続先は第117講(情報システムの設計)です。情報Ⅰの第69講で「なぜ切るのか」を理解した人だけが、情報Ⅱで「どこで切って、どこで検査するか」を設計できます。 今日は、1,500という数字ではなく、その数字が決まった理由のほうを持って帰ってください。
文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月 https://www.mext.go.jp/content/1407073_11_1_2.pdf / 文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第4章 https://www.mext.go.jp/content/20200722-mxt_jogai02-100013300_006.pdf / 文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第4章 https://www.mext.go.jp/content/20200609-mxt_jogai01-000007843_005.pdf / 同 第1章 https://www.mext.go.jp/content/20200609-mxt_jogai01-000007843_002.pdf / 総務省「令和元年版 情報通信白書」通信ネットワークの進化 https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r01/html/nd111130.html / 大学入試センター『情報』サンプル問題(2021年3月公表・文部科学省サイト掲載) https://www.mext.go.jp/content/20211014-mxt_daigakuc02-000018441_9.pdf / RFC 791 Internet Protocol(1981年9月) https://www.rfc-editor.org/rfc/rfc791.txt / RFC 894 A Standard for the Transmission of IP Datagrams over Ethernet Networks(1984年4月・STD 41) https://www.rfc-editor.org/rfc/rfc894.txt
この記事を書いている講師に、直接習うことができます。
