通信の階層モデル — 役割ごとの層に分ける

概要 — まず全体をつかむ

初級では通信を「役割ごとの層に分ける」と捉えました。中級では、代表的な2つのモデル——OSI 7層TCP/IP 4層——の対応と、層をまたぐときのカプセル化を見ます。

詳細 — 1段階ずつ追う

これは何をする係?

階層モデルには、教科書的なOSI参照モデル(7層)と、実際のインターネットに沿ったTCP/IPモデル(4層)があります。層の数は違いますが、指しているものは対応します。

アニメーション『OSI 7層とTCP/IP 4層の対応』を開く
通信を「役割ごとの層」に分ける上位の層は、下位が有線か無線かを気にしない。下を差し替えても上はそのまま。OSI 参照モデル(7層)TCP/IP モデル(4層)アプリケーションプレゼンテーションセッショントランスポートネットワークデータリンク物理アプリケーションHTTP・DNS などトランスポートTCP・UDPインターネットIPリンクEthernet・Wi-Fi上位下位OSIの上位3層(アプリ・プレゼン・セッション)は、TCP/IPでは1つの「アプリ層」にまとまる

代表的なプロトコルを層ごとに押さえると、地図が一気に読めます。

  • アプリ層HTTP(Web)・DNS・SMTP など、アプリ同士の会話の約束
  • トランスポート層TCP/UDP。相手まで確実に/速く届ける担当(3ウェイハンドシェイクはTCPの話)
  • ネットワーク(インターネット)層IP。どこへ届けるかの住所と経路
  • リンク層Ethernet/Wi-Fi。目の前の1区間を実際に運ぶ

対応の勘所は、OSIの上位3層がTCP/IPの1つのアプリ層にまとまること、下位2層がリンク層にまとまることです。

登場人物メモ:

  • ※1 OSI参照モデル — 通信を7層に細かく分けた、理解・整理のための標準モデル
  • ※2 TCP/IPモデル — 実際のインターネットが従う、4層の実務的なモデル
  • ※3 ヘッダ — 各層が付け足す「宛先や制御の情報」の見出し部分
この部分をもっと深く(上級

中級では層ごとの代表プロトコルを並べました。ここでは「その層が何を保証し 何を保証しないか」を責務として捉え直します。

アニメーション『OSI 7層とTCP/IP 4層の対応』を開く
通信を「役割ごとの層」に分ける上位の層は、下位が有線か無線かを気にしない。下を差し替えても上はそのまま。OSI 参照モデル(7層)TCP/IP モデル(4層)アプリケーションプレゼンテーションセッショントランスポートネットワークデータリンク物理アプリケーションHTTP・DNS などトランスポートTCP・UDPインターネットIPリンクEthernet・Wi-Fi上位下位OSIの上位3層(アプリ・プレゼン・セッション)は、TCP/IPでは1つの「アプリ層」にまとまる
  • リンク層(L2) — 目の前の1区間だけを運ぶ。宛先は MAC ※1。同一ネットワーク内で「隣の機器へ渡す」ことだけを約束し 遠くのことは知らない
  • ネットワーク層(L3)IPアドレスで「最終的にどのネットワークのどの機器か」を指し ルータ ※2 がネットワークをまたいで中継する。ただし届く保証はしない(ベストエフォート)
  • トランスポート層(L4) — 端末の中のどのアプリかをポート番号で見分け TCPなら順序と到達まで面倒を見る
  • アプリ層(L7) — HTTPやDNSなど 中身の意味を扱う

ここで効いてくるのが L2とL3の分業です。L2のスイッチはMACを見て同一ネット内を転送し L3のルータはIPを見てネット間を中継します。だから1つのパケットは「ルータからルータへ」IPで大きく運ばれつつ 各区間ではL2フレームに包み直されて隣へ渡される という二段構えで進みます。

登場人物メモ:

  • ※1 MACアドレス — NICに焼かれた機器固有の番号。L2で「目の前の1区間の宛先」を示す。詳しくはNIC
  • ※2 ルータ — L3でIPを見てネットワーク間を中継する機器。区間ごとに次の渡し先を決める
やさしく言うと(初級

通信を、役割ごとの層に分けて整理する——これが階層モデルです。

郵便にたとえると分かりやすいでしょう。

  • 手紙の中身 — 相手に伝えたい本文(=アプリのデータ)
  • 封筒の宛先 — どこの誰に届けるかの情報(=あて先の情報)
  • 配送トラック — 実際に運ぶ手段(=回線や電波)

この3つはそれぞれ別の担当です。中身を書く人は、トラックが軽自動車か大型かを気にしません。トラックの運転手は、中身が何であれ「宛先へ運ぶ」だけです。

登場人物メモ:

  • ※1 層(レイヤ) — 通信の役割を分けた1段。上の層ほど「中身」寄り、下の層ほど「運ぶ」寄り
  • ※2 プロトコル — 各層での「約束ごと(手順)」。同じ層同士が同じ約束で会話する

カプセル化

層をまたぐとき、データはどう変わるのか。鍵はカプセル化です。送信側では、下の層へ渡すたびに、その層のヘッダで包んでいきます。

アニメーション『カプセル化(層ごとに包む)』を開く
下の層へ行くほど、ヘッダで包まれる(入れ子)内側=上の層(アプリ)/外側=下の層(イーサ)。同じデータが層ごとに包み直される。④ イーサ層 / フレーム③ IP層 / パケット② TCP層 / セグメント① アプリ層 / データイーサヘッダIPヘッダTCPヘッダFCS送信:アプリ → TCP → IP → イーサ と下るほど、各層がヘッダで包む(カプセル化)受信:イーサ → IP → TCP → アプリ と上るほど、各層がヘッダをはがす(非カプセル化)
  1. アプリがデータを作る(例:HTTPの中身)
  2. トランスポート層がTCPヘッダを付け、セグメントにする
  3. ネットワーク層がIPヘッダを付け、パケットにする
  4. リンク層がヘッダを付け、フレームにして送り出す

受信側は、これを逆順にはがしていきます(非カプセル化)。各層は、相手側の同じ層が付けたヘッダだけを読みます。だから下の層がどう運んだかを、上の層は気にしなくてよいのです。

この部分をもっと深く(上級

中級では「層ごとにヘッダで包む」と見ました。上級では 各ヘッダに何が書かれ 受信側でどう剥がされるかまで追います。

アニメーション『カプセル化(層ごとに包む)』を開く
下の層へ行くほど、ヘッダで包まれる(入れ子)内側=上の層(アプリ)/外側=下の層(イーサ)。同じデータが層ごとに包み直される。④ イーサ層 / フレーム③ IP層 / パケット② TCP層 / セグメント① アプリ層 / データイーサヘッダIPヘッダTCPヘッダFCS送信:アプリ → TCP → IP → イーサ と下るほど、各層がヘッダで包む(カプセル化)受信:イーサ → IP → TCP → アプリ と上るほど、各層がヘッダをはがす(非カプセル化)

送信側では上から下へ包んでいきます。

  1. アプリがデータを作る(例 HTTPの本文)
  2. TCPがTCPヘッダを付けてセグメントにする。ここに載るのが送信元・宛先ポートとシーケンス番号(後で順序を直すため)
  3. IPがIPヘッダを付けてパケットにする。載るのは送信元・宛先IPとTTL(回り続けを止める寿命)
  4. リンク層がフレームにする。載るのは次の1区間の宛先MAC

受信側は逆順に剥がします。各層は相手側の同じ層が付けたヘッダだけを読みます。ルータはL3まで開けてIPを見て次へ回し(TCPの中身は読まない) スイッチはL2までしか開けません。だから途中の機器は「自分の層の見出し」だけで仕事ができ 上の層の事情を知らずに済むのです。

MTUとMSSもここで理解できます。

  • MTU — 1つのL2フレームで運べるデータ量の上限(Ethernetなら概ね1500バイト)
  • MSS — 1つのTCPセグメントに載せられる中身の上限。MTUからIPヘッダとTCPヘッダの分を引いた残りとして決まる
  • MTUを超えるIPパケットはフラグメント(分割)されるが 分割は効率が悪く途中で詰まる原因にもなる。だからTCPは最初にMSSを決めて「はみ出さないサイズ」で送る
やさしく言うと(初級

分ける利点は、はっきりしています。

  1. 各層が自分の仕事に集中できる — 中身担当・宛先担当・運搬担当が分かれる
  2. 下を差し替えても上は無事 — 運ぶ手段を有線から無線に変えても、中身や宛先はそのまま
  3. 組み合わせが自由 — 「この中身を、この運び方で」と部品のように差し替えられる

だから、家のWi-Fiでも、外のモバイル回線でも、上のアプリは同じまま使えるのです。運ぶ下の層が違うだけ。

なぜこの分業が効くのか

層に分ける最大の恩恵は、独立して差し替えられることです。

  • リンク層を有線からWi-Fiに変えても、上のIPやHTTPはそのまま
  • 同じIPの上で、TCP(確実)とUDP(速い)を用途で選べる
  • アプリを新しくしても、下の運搬層はいじらなくてよい

この独立性のおかげで、通信は部品ごとに進化できます。実際の機器では、NICがリンク層と物理の橋渡しを担い、ネットワーク全体図の各機器がそれぞれ担当の層で仕事をしています。

この部分をもっと深く(上級

層の最大の恩恵は 中級でも触れた独立した差し替えです。上級の語彙で捉え直すと理由がはっきりします。

  • 各層は上下と決められた見出し(ヘッダ)だけでやり取りし 中身の詳細に踏み込まない。だから片方を変えても契約が同じなら壊れない
  • リンク層を有線からWi-Fiへ変えても 上のIPやTCPは同じ。IPパケットはどんなL2にも「包み直して」運べるから
  • 同じIPの上で TCPとUDPを用途で選べる。L4を差し替えてもL3以下は無関係
  • この独立性が インターネットという「バラバラな機器と回線の集まり」を1つの網として動かす土台になっている
やさしく言うと(初級

この分業のいちばんの気持ちよさは、上位の層が下位の詳しい事情を知らなくていいことです。

  • Webサイトを見るアプリは、電波の周波数を知りません
  • 電波を飛ばす部品は、中身がメールか動画かを知りません

お互いが「自分の層の約束」だけ守れば、通信は成り立ちます。この独立性のおかげで、片方だけを新しくしても全体が壊れない——通信技術が少しずつ進歩できてきた理由です。

⚠️ うまくいかないとき

  • 層の取り違え — 「届かない」原因がIP(住所)かリンク(配線)か、層で切り分ける
  • MTU超過 — 1フレームに載る上限を超えると分割が要る。リンク層の制約が上に効く例
  • モデルは地図 — OSIとTCP/IPは分け方が違うだけ。現実がどちらかにきっちり従うわけではない
  • ヘッダの分だけ増える — カプセル化で毎回ヘッダが付くので、運ぶ総量は中身より少し大きくなる
この部分をもっと深く(上級
  • どの層の問題か切り分けない — 「遅い・繋がらない」の原因がL2(配線)かL3(IP・経路)かL4(ポート・ファイアウォール)かL7(DNS・証明書)かを層で分けて考える
  • MTUの不一致 — 経路の途中でMTUが小さい区間があると大きなパケットが通らない。PMTUD(経路MTU探索)が塞がれると通信が詰まる
  • ヘッダの分だけ増える — カプセル化で毎回ヘッダが付くので 運ぶ総量は中身より必ず大きい。小さなデータを大量に送るとヘッダの割合(オーバーヘッド)が効いてくる
  • 層は地図であって現実そのものではない — 実機では層がきれいに分かれて動くとは限らない。あくまで切り分けと理解のための道具と捉える
やさしく言うと(初級
  • 層をまたいで考えすぎる — 「アプリが遅い」原因が下の回線にある、など切り分けが必要
  • どの層の話か迷子になる — 用語が出てきたら「これは中身・宛先・運搬のどれ?」と当てはめる
  • 層は便利な整理 — 現実の通信がきっちり層に分かれて動くわけではなく、理解のための地図だと捉える

関連する知識

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. カプセル化とは何を指す?

2. OSIモデルとTCP/IPモデルの対応で正しいのは?

3. トランスポート層でTCPヘッダを付けたデータの単位を何と呼ぶ?

4. 受信側でヘッダを外していく「非カプセル化」の説明として正しいのは?

5. 同じIPの上でTCPとUDPを用途で選び分けられるのは、階層モデルのどんな性質のおかげ?

6. 次のうち「アプリ層」に属するプロトコルの組み合わせはどれ?

7. リンク層がヘッダを付けて送り出す、最終的な送信単位を何と呼ぶ?(カタカナ)

8. 確認を省いて速さを優先する、トランスポート層のプロトコルを英字3文字で答えてください。