これまでの連載では、OSI参照モデルをベースに各レイヤの役割とさまざまなプロトコルの概要について紹介しました。各回で紹介した内容を踏まえ、今回は改めて送信元から宛先にデータが送り届けられるまで、通信プロセスの全体像を確認しましょう。

カプセル化と非カプセル化

第3回の連載では、TCP/IP通信における各レイヤ間のデータの受け渡しについて説明しました。そこで学習した大事なポイントを振り返りましょう。

  • 図1:各レイヤにおけるデータの受け渡し

    図1:各レイヤにおけるデータの受け渡し

上の図は、送信元から宛先までどのような順序でデータ処理されるかをTCP/IP階層モデルに沿って表現しています(図1)。

まずは、上のレイヤから順番に処理を進める送信元の機器から動作を確認しましょう。アプリケーション層で生成されたデータは、次のトランスポート層へ渡されます。トランスポート層以降のレイヤでは、それぞれの処理に必要な情報を「ヘッダー」という形でデータに付け足していきます。この動作を「カプセル化」と呼びます。

続いて、下のレイヤから順番に処理を進める宛先の機器の動作も確認しましょう。物理層で受け取った信号は"0"と"1"のビット情報へ変換され、次のデータリンク層へ渡されます。データリンク層以降の上位のレイヤにおいては、それぞれの処理に必要な情報が「ヘッダー」から読み込まれます。所定の処理が終わるとヘッダーは取り外されますが、この動作を「非カプセル化」と呼びます。

結果として、送信元と宛先のアプリケーション層は同じ形のデータをやり取りすることになり、それぞれのプログラムによって適切に処理を進めることになります。コンピュータネットワーク上では、このような通信動作を繰り返し行われています。

【図解】ホスト間における通信

「カプセル化」と「非カプセル化」の仕組みを踏まえ、実際の通信ではどのようなプロセスで処理が進むか考えてみましょう。私たちが普段行っている、Webブラウザからインターネットのサイト(Webサーバ)へアクセスしてニュースを見たり、調べ物をしたりといった通信の際に行われている各レイヤの処理を解説します(図2)。

  • 図2:ホスト間における通信プロセス(全体構成)

    図2:ホスト間における通信プロセス(全体構成)

以下では、Web閲覧を要するPCのことを「HTTPクライアント」、Webページを見せるサーバのことを「HTTPサーバ」と呼ぶことにします。まず、最初に送信元として動作するHTTPクライアントの処理から見ていきましょう。(図3)

  • 図3:ホスト間における通信の仕組み(送信元の機器)

    図3:ホスト間における通信の仕組み(送信元の機器)

アプリケーション層の処理

HTTPクライアントとHTTPサーバ間のデータ交換には、HTTP(Hyper-Text Transfer Protocol)が用いられます。

ユーザがブラウザを開き、 URLを入力しWebページにアクセスしました。そのURL情報を基にして、HTTPサーバ上にある情報の入手を依頼する「HTTPリクエスト」メッセージが作られます。こうしてアプリケーション層で作られたデータは、次のトランスポート層へ渡されます。

HTTPは信頼性の高い通信を重視するため、トランスポート層のプロトコルとして「TCP」を選択します。

  • 図4:送信元側の処理フロー(アプリケーション層)

    図4:送信元側の処理フロー(アプリケーション層)

トランスポート層の処理

アプリケーション層からデータ引き受けたトランスポート層は、HTTPサーバ上でどのアプリケーションに処理してもらいたいかをポート番号で示します。ここでは、HTTPを識別する80番を宛先ポート番号として、送信元ポート番号は接続ごとに重複しない番号を指定します。図では“1025"番が割り当てられました。

TCPはデータを送る前にコネクションの確立を行う必要があるため、HTTPリクエストを届ける前にHTTPサーバ上のTCPと3wayハンドシェイクを実行します。このあとHTTPリクエストにTCPヘッダーを付加したデータセグメントがネットワーク層へ渡されます。

  • 図5:送信元側の処理フロー(トランスポート層)

    図5:送信元側の処理フロー(トランスポート層)

ネットワーク層の処理

ネットワーク層ではデータ運搬のプロトコルとしてIPが用いられます。送信元と宛先の両者を識別するアドレス情報などを含むIPヘッダーが付加されます。ここでは、HTTPクライアントのIPアドレス「192.168.1.10」が送信元として、HTTPサーバのIPアドレス「172.16.1.100」が宛先としてヘッダーに指定されています。こうしてできたIPヘッダーが付加されたIPパケットがデータリンク層へ渡されます。

  • 図6:送信元側の処理フロー(ネットワーク層)

    図6:送信元側の処理フロー(ネットワーク層)

データリンク層の処理

データリンク層では、同一のネットワーク内に所属する機器へデータを届けるため、通信相手を識別するアドレスを指定します。ここでは、同一のイーサネット上でデータを受け取って欲しい相手のMACアドレスを宛先として、自身のMACアドレスを送信元としてフレーム(イーサネット)ヘッダーに記載しています。

また、IPパケットを処理したことを示すE-type値「0800」もヘッダーに付加します。このようにできたイーサネットフレームが物理層へ渡されます。

  • 図7:送信元側の処理フロー(データリンク層)

    図7:送信元側の処理フロー(データリンク層)

物理層の処理

データリンク層から受け取ったフレームを2進数の羅列に分解し、それらを物理層のプロトコルに従って電気信号や光信号に変換します。変換された信号は、伝送路を使って他の機器へ届けられます。ここでは、イーサネットケーブルを用いて電気信号へ変換された“0"と“1"が送信されています。

  • 図8:送信元側の処理フロー(物理層)

    図8:送信元側の処理フロー(物理層)

送信元となるHTTPクライアントでは、このように上位層から下位層へ向けて順番に処理が進む中、「カプセル化」という動作で上位のレイヤから受け取ったデータに自分のレイヤで必要となる制御情報を「ヘッダー」として付加しています。

HTTPサーバ側の動作の流れ

続いて、宛先となるHTTPサーバ側の動作の流れを見ていきましょう(図9)。

  • 図9:ホスト間における通信の仕組み(宛先の機器)

    図9:ホスト間における通信の仕組み(宛先の機器)

物理層の処理

HTTPサーバは電気信号を受け取り、それらを"0"と"1"の羅列に変換します。全ての信号の変換が終わることでデータが受信されたことを認識し、その内容をデータリンク層へ渡します。

データリンク層の処理

HTTPサーバのデータリンク層は、フレームのヘッダーで示される宛先MACアドレスを根拠にして、自分宛のフレームであることを認識します。また、E-typeの値「0800」を根拠にして、中身のパケットをネットワーク層のIPへ渡します。

ネットワーク層の処理

パケット(IP)ヘッダー内に示される宛先IPアドレスを根拠にして、自分宛のパケットであることを認識します。中身のセグメントはトランスポート層プロトコルTCPへ渡されます。IPパケットヘッダーには、運搬している中身を「プロトコル番号」という場所で示すことができます。

トランスポート層の処理

トランスポート層のTCPは、宛先ポートとして示される番号「80」を根拠にして、HTTPの処理を受け付けているアプリケーションに中身であるHTTPリクエストメッセージを渡します。

アプリケーション層の処理

TCPから正しく受け取ることができたHTTPリクエストを処理します。

このように宛先側の機器は、下位層から上位層へ向かって処理を進める中、それぞれのレイヤの処理で根拠に使ったヘッダーを取り除いて中身を次のレイヤへ引き渡す「非カプセル化」動作を行っています。

最後に、HTTPクライアントへ返信が届く際の流れを見ていきましょう(図10)。

  • 図10:ホスト間における通信の仕組み(宛先からの応答)

    図10:ホスト間における通信の仕組み(宛先からの応答)

HTTPサーバ上のアプリケーションは、HTTPリクエストの応答としてブラウザ画面に表示させるために必要なデータを送信します。これをHTTPレスポンスと呼びます。生成されたHTTPレスポンスのメッセージは、下位のレイヤに処理が引き継がれます。

トランスポート層では必要に応じたデータの分割処理(セグメント化)とポート番号の指定、続くネットワーク層では送信元と宛先を示すパケットの生成といった処理が進みます。

この時、TCPが指定するポート番号やIPが指定するアドレス情報は宛先と送信元が反転したものを、それぞれのヘッダーに記載します。このようにHTTPレスポンスを送信する時は、HTTPサーバが送信元の立場として「カプセル化」動作を行っています。

HTTPクライアントであるPCがデータ(HTTPレスポンス)を受信すると、ブラウザ画面上にWebページが表示されます。

まとめ

・各レイヤで必要となる情報(ヘッダー)を付加する動作を「カプセル化」と呼ぶ。
・各レイヤで読み取るべき情報(ヘッダー)を処理する動作を「非カプセル化」と呼ぶ。
・通信の仕組みにおいて各レイヤのプロトコルが「カプセル化」「非カプセル化」を繰り返しながら、次のレイヤのプロトコルへ情報を渡している。

次回は、ネットワーク上に流れている通信データの中身を確認する方法を紹介します。

著者プロフィール


大谷 星佳(おおたに せいか)


ネットワンシステムズ株式会社
ビジネス開発本部イノベーション推進部ネットワークアカデミーチーム所属
2020年ネットワンシステムズ入社。シスコシステムズ社認定インストラクター資格を取得し、社内外に向けて、主にネットワーク分野の研修を提供。初心者に向けての研修を得意としている。弊社が取り組む大学との共同開発カリキュラム提供では、実行担当者として産学連携の活動もしている。また、近年増加しているオンライン研修の品質向上を目指し、研修方式の調査・改善に取り組んでいる。