ITの教科書検索

第1章 ネットワークの全体像|1-4|コース全体 19本中4本目

入門読了 約8分更新日 2026-09-27

カプセル化とは ― ヘッダが増えるしくみ

カプセル化とは、送信側が第4・3・2層でヘッダを1枚ずつ足し、受信側が逆順にはがす仕組みです。各層で足されるヘッダの中身と、受信側がはがす順番が分かります。

目次
  1. 降りるときは足す、昇るときははがす
  2. カプセル化を1段ずつ見る
  3. 各層で何が足されるか
  4. 受信側は逆順(非カプセル化)
  5. PDUの呼び名が層ごとに変わる理由
  6. MTUとフラグメンテーション
  7. 練習問題

ヘッダを足す層を通るたびに、ヘッダが1枚増える

送信側では、データがアプリケーション層から物理層へ降りるあいだに、包みが1枚ずつ増えていきます。この包み方をカプセル化と呼びます。包みは、トランスポート層、ネットワーク層、データリンク層を通るたびに増えます。

手紙を封筒に入れ、さらに配送用の箱に入れる場面を思い浮かべてください。外側の包みが1段ずつ増えていきます。

受信側では、届いたフレームから、まったく逆の順番でヘッダが1枚ずつはがされます。これを非カプセル化と呼びます。降りるときは足し、昇るときははがすという、対称の関係です。包む順番が分かると、Wiresharkでパケットを開いたときに、各行がどの層の情報かを読み取れます。

下の図は、隣の機器までの1つの区間だけを描いています。この1つの区間を、1ホップと呼びます。PCからサーバまで複数のルータを経由するときに何が書き換わるかは、MACアドレスとIPアドレスの記事で説明しています。

カプセル化を1段ずつ見る

例として、ブラウザがWebサーバへHTTPリクエストを送る場面を使います。データが層を降りながら包まれていく様子を、1段ずつ確認してください。

STEP 1 / 5
HTTPリクエストアプリのデータ
アプリケーション層:データ
ブラウザが、GET /index.html HTTP/1.1 というHTTPリクエストを作りました。この時点では、まだただの文字列です。どこへどう届けるかの情報は何も付いていません。

各層で何が足されるか

足されるヘッダの中身を層ごとに整理すると、次のとおりです。TCPヘッダとIPヘッダのサイズは、オプションが付かない場合の値です。オプションが付くと、最大60バイトまで伸びます。

一方、Ethernetヘッダは固定14バイトです。VLANタグが付くと18バイトになります。末尾のFCSも、固定4バイトです。

層追加されるヘッダ/トレーラサイズの目安主な情報
トランスポート層TCPヘッダ20バイト送信元/宛先ポート番号、シーケンス番号など
ネットワーク層IPヘッダ20バイト送信元/宛先IPアドレス、TTLなど
データリンク層Ethernetヘッダ(先頭)+ FCS(末尾のトレーラ)14バイト + 4バイト宛先/送信元MACアドレス、上位プロトコルの種別(EtherType)、誤り検査(FCS)

宛先の粒度は、層ごとに違う

3つのヘッダは、どれも宛先の情報を持ちます。ただし、指し示す範囲の細かさがまったく違います。この細かさを粒度と呼びます。

この区間で、次に渡す相手

意味を持つのは、同じネットワーク内だけです。区間が変われば、渡す相手も変わります。

世界のどこにある、どの機器か

最終目的地までの住所です。ネットワークをまたいでも変わりません。

その機器の中の、どのアプリか

機器に届いたあと、どのアプリに渡すかを決めます。渡す先は、WebサーバやSSHなどです。

複数のルータを経由するとき、MACアドレスは区間ごとに書き換わります。書き換わる様子は、MACアドレスとIPアドレスの記事の図で確かめられます。

受信側は逆順(非カプセル化)

受信側では、カプセル化とまったく逆の順番で、届いたフレームからヘッダがはがされます。中身は、1つ上の層へ順に渡されていきます。

  1. 1

    Ethernetヘッダを確認するデータリンク層

    まず、末尾のFCSで、フレームが壊れていないかを検査します。壊れていれば破棄します。問題なければ、宛先MACアドレスが自分宛かを確認します。

    自分宛なら、Ethernetヘッダと末尾のFCSを外して、中身を上の層へ渡します。末尾に付くFCSのような部分を、トレーラと呼びます。渡す前に、EthernetヘッダのEtherTypeという項目を見ます。中身がIPパケットなのかARPなのかを、ここで判断します。

    FCSは、CRC-32というしくみで誤りを検出しています。その仕組みはパリティチェックとCRCとは ― 誤り検出の仕組みで解説しています。

  2. 2

    IPヘッダを確認するネットワーク層

    宛先IPアドレスが自分宛かを確認します。自分宛なら、IPヘッダを外して中身を上の層へ渡します。渡す前に、IPヘッダのプロトコル番号という項目を見ます。中身がTCPなのかUDPなのかを、ここで判断します。

  3. 3

    TCPヘッダを確認するトランスポート層

    宛先ポート番号を確認します。そのあと、TCPヘッダを外して、該当するアプリケーションにデータを渡します。

  4. 4

    データを処理するアプリケーション層

    最後に残ったデータを、Webサーバのアプリケーションが処理します。今回の例では、このデータはHTTPリクエストです。

カプセル化では、データにTCP、IP、Ethernetの順にヘッダが足されます。非カプセル化では、Ethernet、IP、TCPの順にはがされます。最後に、データが残ります。足す順序と、はがす順序はちょうど逆です。

左右を並べて見ると、この対称性がより分かりやすくなります。

送信側 ↓ 足す受信側 ↑ はがすL7データ(HTTPリクエスト)L7データを処理するL4+ TCPヘッダ → セグメントL4TCPヘッダを確認→はがすL3+ IPヘッダ → パケットL3IPヘッダを確認→はがすL2+ Ethernetヘッダ+FCS → フレームL2Ethernetヘッダを確認→はがすL10/1のビット列として送出L10/1のビット列として受信ケーブルを伝わる
左は送信側です。ヘッダを足す第4・3・2層を通るたびに、ヘッダが1枚増えます。右は受信側で、まったく逆の順に1枚ずつはがします。ケーブル上を流れるのは、両方ともビットです。ビットは、0と1を表す電気信号や電波です。

PDUの呼び名が層ごとに変わる理由

セグメント、パケット、フレームは、どれもデータの単位を指す言葉です。この単位をPDU(Protocol Data Unit)と呼びます。どの呼び名でも、中身のデータそのものは同じです。どこまでヘッダが付いた状態かによって、呼び名だけが変わります。

層PDU(呼び名)足されているヘッダ/トレーラ
アプリケーション層メッセージ(データ)なし(まだ元のデータのまま)
トランスポート層セグメント(UDPはデータグラム)TCPヘッダ(UDPならUDPヘッダ)
ネットワーク層パケットIPヘッダ
データリンク層フレームEthernetヘッダ + FCS
物理層ビットなし(電気信号・電波に変換されるだけ)
「パケットを送る」と言うとき、正確にはIPヘッダまで付いた状態を指しています。ヘッダが付く前のデータをパケットと呼ぶのは、厳密には層を混同した言い方です。Ethernetヘッダまで付いたあとの状態も同じです。
「HTTPヘッダ」は、このカプセル化のヘッダとは別物:HTTPのリクエストとレスポンスにも、Content-Type などのHTTPヘッダがあります。HTTPヘッダは、アプリケーション層の中身の一部です。つまり、データそのものの一部です。TCP、IP、Ethernetのヘッダは、第4・3・2層を通るたびに足されます。HTTPヘッダはそれらとは違い、下位の層から見れば単なるデータの一部として扱われます。

MTUとフラグメンテーション

1つのフレームには、運べるデータ量に上限があります。この上限をMTU(Maximum Transmission Unit)と呼びます。Ethernetでは通常1500バイトです。

IPv4では、送りたいパケットがMTUを超えることがあります。このときの動きは、IPヘッダのDFビット(Don't Fragment)で変わります。DFビットは、分割を禁じる印です。DFビットが立っていなければ、送信元または途中のルータがパケットを複数に分割します。

この分割をフラグメンテーションと呼びます。分割された断片は、最終的な宛先で元の1つのデータに再構成されます。

DFビットが立っている場合、パケットは分割されずに破棄されます。そして、ICMPで送信元に通知されます。この動きはRFC 1191にあります。ICMPは、到達確認やエラー通知を運ぶプロトコルです。このとき返るメッセージの種類は、ICMPの記事にまとめています。

IPv6では、途中のルータはパケットを分割しません(RFC 8200)。経路の途中でMTUを超えたパケットは、分割されずに破棄されます。そして、ICMPv6 Packet Too Big というエラーが送信元に返ります。

送信元はこのエラーを見て、パケットのサイズを下げます。この仕組みを経路MTU探索(Path MTU Discovery)と呼びます。規定はRFC 8201です。この探索を行わない場合は、IPv6の最小MTUである1280バイト以下で送ります。

TCPは、接続時にMSS(Maximum Segment Size)という値をやり取りします。MSSで、セグメントの大きさをあらかじめMTUに収まるよう調整しています。そのため、通常のTCP通信ではこの分割はほとんど起こりません。MSSの求め方と、断片が分かれる様子は、MTUとMSSの記事で説明しています。

カプセル化の応用:VPNのトンネリングここで見た、ヘッダを足して包む考え方は、VPNのトンネリングでも使われています。VPNは Virtual Private Network の略です。VPNでは、元のパケットを暗号化したうえで、さらに別のIPヘッダで包みます。詳しくはVPNとは ― 仕組みとトンネリングを読んでください。

実際の通信で、足されたヘッダが並ぶ様子は、パケットキャプチャのソフトで確かめられます。Wiresharkの記事では、疑似パケット一覧でEthernet・IP・TCPのヘッダを層ごとに見ます。

練習問題(全5問)

Q1カプセル化でヘッダが足される順番として正しいものは?
Q2TCPヘッダに入っていて、「どのアプリ宛か」を示す情報はどれ?
Q3受信側が非カプセル化するとき、届いたフレームに対して最初に確認するヘッダはどれ?
Q4TCPヘッダが付いた状態のデータは、PDU(データの単位)として何と呼ばれる?
Q5Ethernetの標準的なMTU(1500バイト)を超えるサイズのIPv4パケットを送ろうとすると、どうなる?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

おすすめの本 PR

この記事の内容を扱っている本です。

目的別の本の選び方を見る

入門コースを読み進める

入門コース 全19本中4本目