トランスポート層
トランスポート層はネットワーク層の上位にあり、送信元マシンから宛先マシンまでの間、使用中の物理的ネットワークから独立に、必要なレベルでの信頼性を保ったデータ転送を実現している。
トランスポート層は、アプリケーションがネットワークを使用する際の抽象化された機能を提供する。
トランスポート層の役割
トランスポート層の究極の目的は、
効率的で信頼性があり、コスト効率の良いデータ転送サービスをユーザー(通常はアプリケーション層のプロセス)に対して提供する
ことである。トランスポート層は、ネットワーク層から提供されるサービスを利用してこの目的を達成する
OSなどのトランスポート・エンティティがトランスポート層の仕事をする
トランスポート層内でこの仕事を行うソフトウェアあるはハードウェアは、
トランスポート・エンティティ(transport entity)
と呼ばれる。トランスポート・エンティティは、オペレーティング・システムのカーネル
や、ネットワーク・アプリケーションに付属したライブラリ・パッケージ
、個々のユーザー・プロセス
、あるいはネットワーク・インターフェース・カード
などに存在する。
ネットワーク層の2種類のプロトコルに対応する処理
ネットワーク層のサービスにはコネクション指向とコネクションレスという2つのタイプが存在するため、それに対応してトランスポート層のサービスにも2つのタイプである。
コネクション指向の場合
コネクション指向のネットワーク層サービスと多くの類似点を持つ。
両者とも
コネクションには3つのフェーズ(確立、データ転送、そして解放)
があり、アドレッシングとフロー制御を類似
している。
コネクションレスの場合
コネクションレスのネットワーク層サービスとよく似ている。しかしながら、単一のパケットを送信した直後にコネクションを解放するように設定するのは非効率であるため、
コネクション指向のネットワーク層サービスの上にコネクションレスのトランスポート層サービスを提供
するのは困難である。
トランスポート層とネットワーク層が別々にいるのか?
トランスポート層サービスがネットワーク層サービスと類似しているのならば、なぜ2つの別の層が存在するのか。一つの層では不十分なのだろうか。答えは難解であるが、非常に重要である。
トランスポート層とネットワーク層の環境の違い
トランスポート層のコードは完全にユーザーのマシン上で動作しているのに対し、ネットワーク層(少なくともWANでは)通信事業者によって運用されているルーター上で動作している。
仮にネットワーク層でトラブルが起こるとどうなるか?
トラブル
仮に、ネットワーク層が低信頼のサービスを提供する場合、何が起こるだろうか。頻繁にパケットが落ちるとしたらどうなるだろうか。
あるいはルーターが時々クラッシュするとしたらどうなるのか。
これらトラブルにユーザーが対処するには
ネットワーク層について実際の制御を持たないから、もっと良いルーターを使ったり、データ・リンク層で誤り対策を行うことにより、貧弱なサービスを改善することはできない。唯一ユーザーができるのは、
ネットワーク層の上にもう一度別の層を配置し、サービスを改善させる
ことである。
トランスポート層がネットワーク層のトラブルをキャッチ
コネクションレス・ネットワークにおいて、
パケットがロスしたり、壊されたりした場合、トランスポート・エンティティは問題を検出し、再送によって補う
ことができる。コネクション指向のネットワークにおいてトランスポート・エンティティは、送信途中にネットワーク・コネクションが不意に(つまり、何が起こったかという通知なしに)切断したことを知らせると、遠隔のトランスポート・エンティティに新規のネットワーク・コネクションを設定することができる。このコネクションを用いて到着済みのデータと未到着のデータとそのデータがあった場所を相手に問い合わせ、中断した箇所からデータ転送を再開する。
本質的には、トランスポート層の存在により、トランスポートサービスは下位の信頼性の低いネットワーク層よりも高い信頼性を提供できる。
トランスポート層はネットワークとアプケーションを分離させる層
トランスポート・プリミティブは、ネットワークごとに
異なるネットワーク・プリミティブと独立に設計できる
(例えば、コネクションレスのイーサネットに基づく要求はコネクション指向のネットワークの要求とかなり異なる)。
異なるネットワーク・プリミティブの違いを隠し、置き換えることができる
トランスポート・サービス・プリミティブ群が
その裏側にネットワーク・サービスを隠すことにより、ネットワークが変更されても同等の別のライブラリ手続きに置き換える
ことで確実に対応できる。ネットワーク層のアプリケーションが切り離されている
ことは素晴らしいことである。
トランスポート層のおかげで、アプリケーション・プログラマはプリミティブの標準セットを用いてプログラムを記述することができ、
異なるネットワーク・インタフェースや信頼性のレベルをについて気にすることなく
、広域のさまざまなネットワーク・プリミティブを持ち、決して変化がない
ことが保証されていれば、トランスポート層はおそらく必要とされないであろう。しかし現実には、トランスポート層はネットワークの技術、設計、不完全さから上位層を分離させるという重要な役割
を果たしている。
トランスポート層が境界線
境界から上下で立ち位置が変わる
多くの人が第一層から第四層までの下位層と、それより上位の層を質的に区別する。
下位四層は`トランスポート・サービス・プロバイダ(transport service provider)(サービス提供者)として、上位層はトランスポート・サービス・ユーザー(transport service user)(サービス利用者)と見なすことができる。
境界線
プロバイダとユーザーの区別は、高信頼データ転送サービスのプロバイダとユーザーの間に明確な境界線を引くものであり、階層の設計に大きな影響を与え、トランスポート層を重要なものとして位置付けている。その境界はアプリケーションから見える。