前回OSI参照モデルの各階層について紹介した。
そこで今回は、異なる層のプロトコルが通信するには、どのような作業がされているのか確認していこう。
データのカプセル化
OSI参照モデルの異なる層のプロトコルが通信するには、必要な制御情報を付加していき、それをカプセル化と言う。
流れとしては、上位層から下位層へとデータが送信されるときに、制御情報を付加していく。
もうすこし専門的にいうと、カプセル化処理とは、PDU(Protocol Data Unit)を生成することだ。
PDUは、通信プロトコルで定義された制御情報(ヘッダ)とデータの中身(ペイロード)で構成されている。
階層によって名前が変化するので、注意が必要だ。
階層 | 名前 | PDU |
4 | トランスポーテーション層 | セグメント/データグラム |
3 | ネットワーク層 | パケット |
2 | データリンク層 | フレーム |
1 | 物理層 | ビット |
Webページをみる場合
今ではhttpsにリダイレクトされるが、昔のhttp://www.google.comを例にみてみよう。
TCP/IPのセッションはすでに開始さているとして、下の図で示したカプセル化をたどってみよう。
はじめに、クライアントのアプリケーション層からはじまる。ウェブサイトをみるので、アプリケーション層のプロトコルとしてHTTPが使われ、index.htmlファイルをgoogle.comからダウンロードするよう指示がでる。
アプリケーション層のプロトコルが実行したい指示を発行したら、次にパケットを目的地に到着させようとする。
パケットのデータは、トランスポート層へ渡される。
HTTPはTCPの上にあるアプリケーション層のプロトコルなので、パケットが確実に送信されるように、TCPヘッダを生成する。
これには、シーケンス番号などが含まれる。
TCPは仕事を終え、パケットの論理アドレスを処理するネットワーク層のプロトコルであるIPにパケットを渡す。そこで、論理アドレス情報を含むヘッダを生成し、パケットをデータリンク層のイーサネットに渡す。
物理アドレスであるイーサネットアドレスはイーサネットのヘッダにはいる。
ここで完成したパケットが物理層に渡され、0と1の形式でネットワーク上を転送される。
パケットはケーブルに転送され、最終的にGoogleのウェブサーバへと到着する。
サーバはパケットを下位層から順に読んでいく。
はじめにパケットがどのサーバに対するものかを判断するためイーサネットアドレスが含まれるデータリンク層が読み取られる。
この層の情報が処理されると、第2層の情報が取り除かれ、第3層の情報が処理される。
IPアドレス情報も同様に読み取られ、アドレスが正しく、パケットに問題ないか確認される。
その後、この情報は取り除かれ、次の層が処理できるようになる。
第4層のTCP情報が読み取られ、パケットが順番に到着していることが確認される。
第4層のヘッダ情報を取り除くと、アプリケーション層のデータのみが残るので、ウェブサイトを提供しているウェブサーバのアプリケーションへ渡せるようになる。
クライアントから送信されたこのパケットに応答する際に、サーバはまずTCPのACKパケットを送り、リクエストが受信され、引き続きindex.htmlファイルが送信されることをクライアントに知らせる。
まとめ
WEBページをみるという単純なことの裏側では、じつにさまざまな処理がされている。
カプセル化によって制御情報が付加され、目的のサーバから目的の情報を取得できるのだ。
コメント