TCP/IPモデルのリンク層は、ローカルネットワークセグメント上の通信を担う基盤となる層です。この層はハードウェア固有であり、ネットワークインターフェースカードや物理アドレスに直接関与します。
フレームとリンク層ヘッダー
リンク層では、ネットワーク層からのパケットはフレームと呼ばれる構造にカプセル化されます。このプロセスで重要なのがリンク層ヘッダーの追加です。このヘッダーには、ホストの送信元および宛先 MAC アドレス、エラー検出のためのチェックサム、そして受信デバイスがフレームの終わりと次の開始を識別できるようにするためのパケット区切り文字が含まれます。
リンク層ヘッダーを構築するために、システムは送信元と宛先の両方の MAC アドレスを知る必要があります。送信元 MAC アドレスはわかっていますが、同じローカルネットワーク上の IP アドレスの宛先 MAC アドレスを見つける必要があります。ここでアドレス解決プロトコル(ARP)が登場します。
ARP(アドレス解決プロトコル)
ARP は、同じネットワーク内で特定の IP アドレスに関連付けられた MAC アドレスを見つけるために使用されるリンク層プロトコルです。宛先ホストが別のネットワーク上にある場合、パケットはデフォルトゲートウェイ(ルーター)に送信され、ARP はそのルーターの MAC アドレスを見つけるために使用されます。
システムはまず、既知の IP アドレスから MAC アドレスへのマッピングをキャッシュする ARP ルックアップテーブルを参照します。必要なアドレスがキャッシュにない場合、システムはネットワーク全体に ARP リクエストをブロードキャストします。この特別なメッセージは、「特定の IP アドレス(例:10.10.1.4)を持つホストはどれか」と尋ねます。その IP アドレスを持つホストは、自身の IP アドレスと MAC アドレスを含む ARP 応答を送信します。
必要な IP アドレスと MAC アドレスが揃ったので、リンク層はネットワークインターフェースカードを介してフレームを転送できるようになります。パケットの旅は、送信側と受信側の両方で TCP/IP スタックを上下に移動する際のカプセル化と非カプセル化の多段階プロセスです。
パケットの移動
送信者(ピート)から受信者(パティ)へパケットが移動する手順は次のとおりです。
- ピートはパティにメールを送信します。このデータはトランスポート層に送られます。
- トランスポート層はデータを TCP または UDP ヘッダーでカプセル化し、セグメントを形成します。宛先および送信元ポートを付加し、セグメントをネットワーク層に送信します。
- ネットワーク層はセグメントを IP パケット内にカプセル化し、送信元および宛先 IP アドレスを付加します。その後、パケットをリンク層にルーティングします。
- パケットはリンク層に到達し、そこでフレームにカプセル化されます。送信元および宛先 MAC アドレスを含むリンク層ヘッダーが追加されます。
- パティは物理層を介してこのデータフレームを受信し、データ整合性をチェックした後、非カプセル化して IP パケットをネットワーク層に送信します。
- ネットワーク層はパケットを読み取り、送信元および宛先 IP アドレスを確認します。宛先 IP が自身の IP と一致することを確認し、パケットを非カプセル化してセグメントをトランスポート層に送信します。
- トランスポート層はセグメントを非カプセル化し、TCP または UDP ポート番号を確認し、それらのポートに基づいてアプリケーション層への接続を確立します。
- アプリケーション層はトランスポート層から指定されたポートでデータを受信し、それをパティに最終的なメールメッセージとして提示します。