【ネットワーク基礎】 TCP/IP カプセル化
はじめに
TCP/IPにおいて、データはそのまま送信元から送信先に送信されるわけではありません。4つの層(レイヤー)でそれぞれ必要な情報を付け足していきながら、最終的に目的地に届けられます。
今回は、その際に行われるカプセル化と各層の役割について、ざっくりまとめていきます。
カプセル化とは?
カプセル化とは、データが送信元から宛先に届くまでに、各階層で必要な制御情報(ヘッダ)を付加していくプロセスです。
逆に、受信側ではこのヘッダを順次剥がしていくことで、元のデータを取り出します。
カプセル化のフロー
TCP/IPモデルは4つの階層で構成され、上から下に向かってカプセル化が行われます。
※以下で使用される主要フィールドとは、各層のヘッダに実際に追加される具体的な制御情報のことを指します。ビット単位で厳密に定義されたフォーマットに従ってパケットに埋め込まれます。
アプリケーション層
HTTPリクエスト、メール本文など実際のデータ(メッセージ)を生成します。
これらが生のデータで、ここに必要な制御情報を付加していきます。
アプリケーション層におけるヘッダは、HTTPならHost:
やUser-Agent:
などのHTTPヘッダ、
SMTPならFrom:
やTo:
などのメールヘッダ のように、使用しているプロトコルに依存します。
トランスポート層(TCP/UDP)
通信の信頼性を重視したTCPヘッダ または 通信の速度を重視したUDPヘッダを付加し、データにポート番号などの情報を追加します。
「どのアプリケーションにデータを届けるか」ポート番号で指定する役割を果たします。
※ポート番号:マシン内のアプリケーションの住所として機能している。マンションの中の具体的な部屋のようなもの。
主要フィールド
・TCPヘッダ:送信元/宛先ポート、シーケンス番号、確認応答番号など
・UDPヘッダ:送信元/宛先ポート、長さ、チェックサム
インターネット層(IP)
IPアドレス情報を追加を追加し、「どこに届けるか」を決める役割を果たします。
IPヘッダの主要フィールド
・送信元IPアドレス:データを送ったデバイスのIPアドレス
・宛先IPアドレス:データを送るべきデバイスのIPアドレス
・TTL(Time To Live):データが何回ルータを通過できるか(0になると廃棄)
・プロトコル種別:上位のプロトコル(例:TCP, UDP)を識別する番号
ネットワークインターフェース層
物理的な送信に必要な情報を追加し、物理的な機器(MACアドレス)を識別して、データを直接届ける役割を果たします。
イーサネットヘッダの主要フィールド
・送信元MACアドレス:データを送る機器のMACアドレス
・宛先MACアドレス:データを受け取る機器のMACアドレス
・タイプ(EtherType):上位のプロトコル(例:IPv4, IPv6)を識別する番号
・FCS(Frame Check Sequence):エラー検出のためのチェックサム
データの流れ
※以下、ChatGPT解説より引用
1.IP層からデータを受け取る
・IP層で追加されたIPヘッダの情報を元に、適切な宛先へデータを送る準備をする
2. MACアドレスで同じネットワーク内の機器を特定
・宛先IPアドレスに対応するMACアドレスを取得(ARPなどを利用)
・イーサネットヘッダを付与してフレームを作成
3. 物理的な通信でデータを送信
・有線(Ethernet)や無線(Wi-Fi)を通じて、ルータやスイッチへデータを送る。
4. 次の機器で再びMACアドレスを決定し転送
・ルータやスイッチは、次の機器に適切なMACアドレスを設定し、データを転送。
5. 最終的に宛先の端末へ到達
・宛先の端末がデータを受け取ると、イーサネットヘッダを削除し、上位層へデータを渡す。
このような流れで、各層で必要な制御情報であるヘッダを追加していき、データが送信先に送られます。
そして、データの受信側では、これらと逆の動きをしていくことで、アプリケーションでデータを受け取る仕組みになっています。
まとめ
データの送受信はよく郵便で手紙を送るときを例として挙げられます。手紙に宛先を書いて、自分と相手を仲介する郵便局を介して手紙のやりとりが行われる例です。そのフローと似ているため、理解が難しい場合は、そちらのフローを参考にするのも有効だと思います。
データはそのまま送られず、階層ごとに情報の付け足しと剥がしを経て相手に届くのでした。
今回の解説が理解の補助に役立てば幸いです。
最後までお読みいただき、ありがとうございました。
参考・画像引用元URL
他、『【プロトコル】TCP/IPの役割』で掲載した「参考・画像引用元URL」と重複するものもあったため、そちらもご参照ください。
Discussion