2.5 階層モデルとパケット

先の階層モデルの詳細について見る前に、この階層モデルはどのような働きを するのかという点について説明し、それとデータとの関係について見てみましょう。

階層モデルでは一番上位にあるのがアプリケーションです。そこで、アプリケーション からデータを送信する場合について考えてみましょう。プログラム的には、 アプリケーションはネットワークのAPIや、クラスを通じて、この階層から 下のトランスポート層へとアクセスをします。この時、トランスポート層は 受け取ったデータに一連の処理の結果を加えます。このように、一番下位の 層を除き、中間の層での処理のほとんどは何らかの形でのデータ処理であり、 その結果はヘッダという形で上位から渡されたデータへと付加されます。 ここで、上位から渡されたデータをペイロードと呼び、ペイロードにヘッダ を加えたものが、更に下の層へとデータ(ペイロード)として渡されて行きます。

ペイロードとは貨物の意味です。つまり、ここではヘッダによって運ばれる 貨物がデータである訳です。

\epsfile{file=eps/layer1,scale=0.5}

最後に物理層では伝送路に送り出されて行きます。 なお、物理層でのみヘッダのみならず、パケットの後尾にチェックサムがつきます。 また、物理層ではパケットが大きな場合には分割が行われる場合 (この場合特にフレームと呼びます)がありますが、説明の都合上省略します。

これらの処理では各層においてカプセル化が行われている点に注意してください。 つまり、 トランスポート層で作成されたヘッダとその上位から渡された ペイロードは、その下の層であるネットワーク層から見たら処理すべき データであり、従ってネットワーク層でのペイロードとなる訳です。 この時、ネットワーク層ではトランスポート層での詳細とは無関係に処理が 行われます。

さて、このように送出されたパケットは最終的に目的の端末に着くと、この 階層を下から上へと逆に上って行きます。その際には、送出の場合の反対に 各階層でそこに関係するヘッダが取り出され、処理された後にペイロードが 上位の層に渡されます。上位層は再び同じようにして自らの層に関連する ヘッダを処理し、最終的にアプリケーションへと渡される訳です。

このカプセル化と同時に、各層はそれぞれの上位の層とは分離して存在 するために、異なる上位プロトコルを扱うことが出来るようになって います。つまり、ある層の上にあるプロトコルはTCP/IPで期待するものと 異なっていても良い訳です。これによって、既存プロトコルを上位層のみ 異なるプロトコルとして受け入れる事が可能になりますし、将来の変化を 柔軟に吸収出来るようになっているのです。

\epsfile{file=eps/layer2,scale=0.5}

さて、各層における情報がヘッダとして追加されることを見てきたのですが、 何故ヘッダ(頭に付けるのでヘッダ、末尾につけるのはフッタ)なのでしょうか。 勿論、末尾につけてはいけない理由はありません。単に頭につける方が取り出す 際の処理が簡単になるからです。もしフッタならば、ペイロードが固定長で無い限り、 データの後ろから検索し、フッタ部分の情報を取り出さなければなりません。 もしくは、フッタが固定長ならば処理は簡単ですが、様々なヘッダ情報を 全て固定長にするのは面倒ですし、将来的に柔軟性を損なうことになり ます。従って、固定長が困難であるとすると、後ろから走査するしかなく、 それならば頭から行う方が簡単である訳です。さて、このように考えると、 将来的には固定長のフッタはあり得るという事が良く分かります。それは ヘッダ処理に何の影響も与えず、独立して行えるが故に色々と便利そうです( もしくは筆者の気づいていない何か別の問題があるのかも知れませんが)。

最近話題になりつつある MPLS (MultiProtocol Label Switching)では シムラベルヘッダを従来のリンクヘッダとネットワーク層ヘッダの間 に挿入しています。

勿論こうした新しいヘッダは TCP/IPスタックからすると処理不能なものなのですが、TCP/IPスタックが関与 しない通信路の途中で挿入し、相手にパケットが到着するまでに取り除けば TCP/IPスタックはそれを関知できない訳ですから、別に問題ではないのです。

スタック
階層モデルは良く積木の積み上げたイメージであるので、スタックとも呼ばれ、 「TCP/IPスタック」のように使われる。



Noriyo Kanayama