PR

TCP/IP通信の仕組みとは?送信から受信までの流れを分かりやすく解説

ネットワーク
スポンサーリンク

はじめに

Webサイトの閲覧やメッセージの送信では、アプリケーションが作ったデータがそのまま相手へ届くわけではありません。送信端末ではTCP/IPの各層が必要な情報を順に付け、ネットワークを通過した後、受信端末が逆順に情報を読み取ります。

送信時の処理をカプセル化、受信時の処理を非カプセル化と呼びます。この記事では、送信端末からルーターを経由し、受信側のアプリケーションへ届くまでの流れを解説します。

この記事で分かること

  • TCP/IP通信を階層ごとに処理する理由
  • 送信時のカプセル化と受信時の非カプセル化
  • ルーターを通過するときにフレームが作り直される理由
  • データ、セグメント、パケット、フレームの違い

TCP/IP通信ではデータを階層ごとに処理する

TCP/IP通信では、通信に必要な役割をアプリケーション層、トランスポート層、インターネット層、ネットワークインターフェース層へ分けます。各層は必要な情報だけを扱い、処理後のデータを隣の層へ渡します。

アプリケーション層は送る内容を作り、トランスポート層はポート番号などを使って、データを渡す通信先を識別します。インターネット層はIPアドレスで宛先と次ホップを判断し、ネットワークインターフェース層は同じリンク上へ届けるフレームを作ります。

OSI参照モデルとTCP/IPモデルの対応関係は、OSI参照モデルとは?TCP/IPモデルとの違いと7階層の役割で解説しています。本記事では階層名の比較ではなく、実際にデータが移動する順序へ注目します。

送信側でデータをカプセル化する

送信端末では、アプリケーション層からネットワークインターフェース層へ向かってデータを渡します。各層が制御情報をヘッダーなどとして付けるため、下位層へ進むほど通信に必要な情報が加わります。

アプリケーション層でデータを作る

最初に、アプリケーションが文字列、ファイル、サーバーへの要求などのデータを作ります。この段階では、IPアドレスやMACアドレスをデータ本体へ直接書き込むわけではありません。

トランスポート層で通信を識別する

トランスポート層では、TCPまたはUDPがアプリケーションデータを受け取ります。TCPはポート番号、シーケンス番号などを含むヘッダーを付けてTCPセグメントとし、UDPはポート番号、長さ、チェックサムを含むヘッダーを付けてUDPデータグラムとします。両者の違いは、トランスポート層とは?役割とTCP・UDPの違いを分かりやすく解説を参照してください。

インターネット層で宛先と経路を決める

インターネット層ではIPヘッダーを付け、IPパケットとして扱います。送信端末は宛先IPアドレスとルーティングテーブルから、宛先へ直接送るか、ルーターなどの次ホップへ送るかを決めます。詳しくは、IPとは?ネットワーク層の役割やルーティングを初心者向けに分かりやすく解説を参照してください。

ネットワークインターフェース層でフレームに包む

ネットワークインターフェース層では、IPパケットをEthernetなどのフレームへ格納し、同じリンク上の宛先端末または次ホップへ送ります。必要なら、IPv4ではARP、IPv6ではNeighbor Discoveryを使って次ホップのリンク層アドレスを確認します。詳しくは、データリンク層とは?MACアドレスやフレームの役割を分かりやすく解説を参照してください。

最後に、フレームを構成するビット列を電気、光、無線などの信号へ変換して送信します。信号と通信媒体の役割は、物理層とは?OSI参照モデルの基礎と通信方式の重要性を解説で確認できます。

データはネットワークを1ホップずつ進む

送信端末から出たフレームは、L2スイッチやルーターを通って宛先へ進みます。L2スイッチはMACアドレスを基に同じL2ネットワーク内で転送し、ルーターは宛先IPアドレスとルーティングテーブルから次ホップを決めます。

ルーターは受信フレームからIPパケットを取り出し、送出先リンク用の新しいフレームへ包み直します。IPパケットは宛先へ向かって進みますが、Ethernetではフレームの送信元・宛先MACアドレスがリンクごとに変わります。

送信端末でデータをカプセル化し、ルーターでフレームを作り直し、受信端末で非カプセル化するTCP/IP通信の流れ
図1 TCP/IP通信における送信・中継・受信の流れ

各機器が見る情報と中継範囲の違いは、ネットワーク機器の種類と違い|OSI階層と役割を分かりやすく解説で整理しています。

受信側でデータを非カプセル化する

受信端末では、ネットワークインターフェース層からアプリケーション層へ向かって処理します。各層は自分が担当するヘッダーを確認し、必要な情報を上位層へ渡します。

フレームを確認してIPパケットを取り出す

ネットワークインターフェース層は、受信フレームが処理対象か、破損がないか、どの上位プロトコルへ渡すかを確認します。条件を満たしたフレームからIPパケットを取り出します。

IPパケットの宛先と上位プロトコルを確認する

インターネット層は宛先IPアドレスを確認し、IPヘッダーの情報からTCP、UDP、ICMPなどの上位プロトコルを識別してデータを渡します。

ポート番号などから対応する通信を識別する

トランスポート層は宛先ポート番号などを使って、受信データを渡す通信先を識別します。TCPでは、送信元・宛先のIPアドレスとポート番号の組み合わせで接続を区別し、シーケンス番号で順序を整えます。確認応答や再送制御を通じて順序どおりのバイト列をアプリケーションへ渡します。受信側が単純な再送要求を送るのではなく、送信側が確認応答や再送タイマーを基に未確認データを再送します。UDPは順序制御や再送制御を提供せず、受信したデータグラムをアプリケーションへ渡します。

各層でデータの呼び方が変わる

処理する層主な呼び方付加・確認する主な情報
アプリケーション層アプリケーションデータアプリケーション固有の内容
トランスポート層TCPセグメント/UDPデータグラムポート番号、TCPのシーケンス番号など
インターネット層IPパケット送信元・宛先IPアドレスなど
ネットワークインターフェース層フレームリンク上の送信元・宛先アドレスなど
物理的な伝送信号電気・光・無線によるビット列の表現

「パケット」は通信データ全般を指す場合もあります。本記事では処理段階を区別するため、セグメントまたはデータグラム、IPパケット、フレームと呼び分けています。

端末からサーバーへ送る例

TCPを使うアプリケーションがサーバーへ文字列を送る場合、送信端末ではTCPセグメント、IPパケット、フレームの順に包みます。ルーターごとにフレームを作り直し、受信サーバーでは逆順に取り出します。最後にTCPが送信元・宛先のIPアドレスとポート番号の組み合わせから対応する接続を識別し、受信したバイト列をアプリケーションへ渡します。

TCP/IP通信で誤解しやすい点

  • すべての層が同じ宛先情報を見るわけではない
    リンク層は同じリンク上の宛先、IPは最終的なIP宛先、トランスポート層はアプリケーションのポート番号を扱います。
  • EthernetのMACアドレスは通信経路の最後まで固定ではない
    ルーターを越えるとリンクが変わるため、フレームの送信元・宛先MACアドレスも次のリンクに合わせて変わります。
  • TCPの再送は単純な再送要求だけで動くわけではない
    確認応答、シーケンス番号、再送タイマーなどを使い、送信側が未確認データを管理します。
  • カプセル化は暗号化と同じ意味ではない
    カプセル化は各層の制御情報を付ける処理であり、通信内容を秘密にする暗号化とは役割が異なります。

まとめ

TCP/IP通信では、送信側がアプリケーションデータへ各層の情報を順に付けてカプセル化し、受信側が逆の順序で確認して非カプセル化します。

  • トランスポート層はポート番号などを付け、TCPセグメントまたはUDPデータグラムとして扱う
  • インターネット層はIPアドレスを付け、宛先と次ホップを判断する
  • ネットワークインターフェース層はIPパケットをフレームへ格納し、同じリンク上の相手へ送る
  • ルーターはIPパケットの次ホップを決め、送出先リンク用のフレームを作り直す
  • 受信端末はフレーム、IPパケット、トランスポート層の情報を順に確認し、アプリケーションへ元のデータを渡す

階層ごとの役割とデータの変化を一つの流れとして捉えると、ネットワーク機器やプロトコルが通信のどこで働くのかを理解しやすくなります。

関連記事


コメント

タイトルとURLをコピーしました