トランスポート層
![]() |
OSI参照モデル |
---|
トランスポート層(トランスポートそう、Transport layer)とは、コンピュータと電気通信では、TCP/IPモデルにおけるの4階層の内の第3層の事である。上位のアプリケーション層からのサービス要求に応じ、また下位のインターネット層に対してサービス要求を行う。
トランスポート層はOSI参照モデルにおける7階層の内の第4層の名前でもある。上位のセッション層からのサービス要求に応じ、また下位のネットワーク層に対してサービス要求を行う。
トランスポート層の定義はそれら2モデルで僅かに異なる。この記事では主としてTCP/IPモデルについて言及する。OSI参照モデルでのトランスポート層の定義も参照の事。
TCP/IP群 |
---|
アプリケーション層 |
|
トランスポート層 |
カテゴリ |
インターネット層 |
カテゴリ |
リンク層 |
カテゴリ |
トランスポート・プロトコル
[編集]トランスポート・プロトコルは、トランスポート層(第四層)の通信プロトコルである。インターネットにおける2大トランスポート・プロトコルとして、コネクション型の「TCP」(Transmission Control Protocol)と、コネクションレス型の「UDP」(User Datagram Protocol)がある。その他、Datagram Congestion Control Protocol(DCCP)やStream Control Transmission Protocol(SCTP)が有る。
トランスポート層は通常はホストコンピュータのオペレーティングシステム上のプロセスに制御され、ルータやスイッチには制御されない。通常トランスポート層は、ネットワーク層(第三層)によって提供された信頼性が低く極めて基本的なサービスを、より強力な物へ転換する。
TCP/IPモデルでは、トランスポート層はホストコンピュータ上の適切なアプリケーションプロセスにデータを配送する責任が有る。これは異なったアプリケーション・プロセスからのデータの統計的多重化、すなわちデータのパケット化、およびトランスポート層の各データ・パケット・ヘッダへの送信元/送信先ポート番号の追加を伴う。送信元および送信先のIPアドレスと共に、そのポート番号はネットワーク・ソケット、すなわちプロセス間通信の識別アドレスを構成する。OSI参照モデルでは、この機能はセッション層が対応している。
いくつかのトランスポート層プロトコル(例えばUDPでなくTCP)では、仮想回線の対応、言い換えれば基礎的なパケット指向のデータグラムネットワーク越しのコネクション型通信を提供する。バイトストリームはアプリケーション・プロセスに対してパケット・モード通信を隠蔽したまま配信される。これはコネクションの確立、セグメントと呼ばれるパケットへのデータ・ストリームの分割、セグメントの番号付けと不規則に並ぶデータの並べ換えを伴って実現される。
最終的に、いくつかのトランスポート層プロトコル(例えばUDPでなくTCP)は、始点から終点まで(エンド・ツー・エンド)の信頼できる通信、すなわち誤り検出コードと自動再送要求(ARQ)プロトコルによるエラー復旧を提供する。ARQプロトコルは更に輻輳回避としても用いられるフロー制御も提供する。
多くの非IPベース・ネットワーク(例えばX.25、フレームリレー、およびATM)では、トランスポート層よりはむしろネットワーク層やデータリンク層(第二層)で、コネクション指向通信が実装されている。X.25、電話網のモデム、および無線通信システムでは、信頼できるノード対ノードの通信がより下位のプロトコル層で実装されている。
OSI/X.25プロトコル・スイートでは、(TP0としても知られ、最低限のエラー復旧を提供する)クラス0から(TP4としても知られ、インターネットに似た低信頼ネットワーク用に設計された)クラス4まで、五つのクラスのOSI トランスポート・プロトコルが存在する。
TCP
[編集]TCPはより複雑で最も一般的である。
TCPは、WebブラウズのHTTPやメール転送を含む、多くのプロトコルに使われる。
UDP
[編集]UDPは、膨大な数のホストへの再送は不可能である事から、マルチキャストや放送に使われる事もある。UDPは典型的には高いスループットと短い待ち時間(レイテンシ)を与える。従って、例えばIP-TVやIPテレフォニー、またオンラインゲームという、時にはパケット・ロスが起こる事が許されるリアルタイム・マルチメディア通信に使われる事が多い。
UDPは極めて単純なサービスであり、仮想回路も信頼できる通信も提供せず、それらをアプリケーションに任せる。UDPパケットはセグメントというよりはむしろデータグラムと呼ばれる。
トランスポート層サービスの一覧
[編集]以下のようなサービスが、トランスポート層のプロトコルによって提供される。アプリケーションはこのようなサービスを全て使う必要はない。不必要なサービスの利用は無駄なオーバヘッドになり逆効果を招きかねない。
- コネクション型
- ネットワーク層はコネクションレス・サービスしか提供しないが、アプリケーションが利用する上ではコネクション指向のほうが容易なため、しばしばコネクション指向サービスはトランスポート層の中の最上部に組み込まれる。
- 配送順序の保証
- 一般的にネットワーク層は、データのパケットが送信された時と同じ順序で届く事を保証しない。しかしこれは多くの場合に必要となる機能なので、トランスポート層がそれを提供する。配送順序を保証する最も単純な方法は、各パケットに番号を付ける事で、受信側がパケットを並べ替えられるようにする事である。
- 信頼できるデータ
- パケットの待ち行列が一杯になりネットワークに輻輳が発生すると、ネットワーク・ノードはパケットを削除しなければならないため、ルータ、スイッチ、ブリッジ、およびホストでパケットは喪失することになる。イーサネットは破損したパケットを再送しないため、パケットは混信や雑音が原因で喪失または破損する可能性がある。TCPなどのいくつかのトランスポート層プロトコルはこれを解決できる。チェックサムなどの誤り検出コードにより、データが破損していないという事を検査したり、また送信者へ肯定応答 (ACK) メッセージが送られた事によってそれを検証しても良い。自動再送要求システムは喪失または破損したデータの再送に使われる事がある。エラーを完全になくすことは不可能だが、検出されないエラーを大幅に減少する事は可能である。
- フロー制御
- コンピュータ上のメモリの量には限りがあるので、受信機器がフロー制御をしないと、処理しきれないほどの大量の情報でメモリを溢れさせる可能性がある。今日では、帯域幅が比較的高価であるのに対してメモリは安価なのでこれは大きな問題ではないが、初期の頃は重大な問題だった。フロー制御は受信者のバッファメモリが溢れる前にデータの転送レートを抑えるものである。ネットワーク層によって既にフロー制御が提供されている時もあるが、それが無い場合にトランスポート層が付け加える事がある。UDPではフロー制御はできない。
- 輻輳制御
- ネットワーク・ノードの待ち行列バッファが満杯となり、パケットを取りこぼし始める時にネットワーク輻輳が生じる。また、自動再送要求はネットワークの輻輳状態を持続してしまう可能性が有る。この状況はフロー制御にスロースタートを含む輻輳回避を付け加える事で回避できる。これは転送の開始時やパケット再送時に消費する帯域幅を低い水準に維持する。UDPでは輻輳制御はできない。
- バイト指向型
- トランスポート層は、通信をパケット単位ではなくバイト単位のデータ列に変換する機能を付加しても良い。これにより不揃いな大きさのパケットを簡便に取り扱う事ができる。
- ポート番号
- (TCP/IPモデルではトランスポート層に相当する部分だが、OSI参照モデルではセッション層に当たる)ポート番号は本質的には同じ場所に有る複数の実体を扱う方法である。例えば、郵便物の宛先における部屋番号は一種のポートであり、同じ建物内の別々の居住者を識別する。コンピュータ・アプリケーションでは、それぞれのアプリケーションが各々に割り当てられたポートに送られたデータを受け取る。そのため、複数のネットワーク・アプリケーションを同時に一つのコンピュータで利用することができる。
トランスポート・プロトコルの比較
[編集]UDP | TCP | DCCP | SCTP | |
---|---|---|---|---|
パケットヘッダ長 | 8 バイト | 20 バイト | 12 もしくは 16 バイト | 12 バイト + 可変チャンクヘッダ |
トランスポート層パケットエンティティ | データグラム | セグメント | データグラム | データグラム |
ポート番号 | Yes | Yes | Yes | Yes |
エラー検知 | オプション | Yes | Yes | Yes |
信頼性: 自動再送要求 (ARQ) によるエラー復旧 | No | Yes | No | Yes |
仮想回線: シーケンスの番号付けと並べ替え | No | Yes | Yes | オプション |
フロー制御 | No | Yes | Yes | Yes |
輻輳回避: 可変サイズの輻輳ウィンドウ, スロースタート, タイムアウト | No | Yes | Yes | Yes |
複数ストリーム | No | No | No | Yes |
明示的な輻輳通知(ECN)のサポート | No | Yes | Yes | Yes |
全二重データ伝送 | Yes | Yes | Yes | |
接続指向 | No | Yes | Yes | |
部分的に信頼できるデータ転送 | No | Yes | オプション | |
順序を保ったデータ配信 | No | Yes | Yes | |
順不同のデータ配信 | Yes | No | Yes | |
選択的アック | No | オプション | Yes | |
メッセージ境界の保持 | Yes | No | Yes | |
パスMTUディスカバリー | No | Yes | Yes | |
アプリケーションデータの断片化 | No | Yes | Yes | |
マルチストリーミング | No | No | Yes | |
マルチホーミング | No | No | Yes | |
SYNフラッド攻撃に対する保護 | 必要ない | No | Yes | |
ハーフクローズ接続 | 必要ない | Yes | No |
例
[編集]- AEP, AppleTalk Echo Protocol
- ATP, AppleTalk Transaction Protocol
- CUDP, Cyclic UDP
- DCCP, Datagram Congestion Control Protocol
- FCP, Fiber Channel Protocol
- FCIP, Fiber Channel over TCP/IP
- IL, IL Protocol
- iFCP, Internet Fibre Channel Protocol
- iSCSI, Internet Small Computer System Interface
- NBP, Name Binding Protocol
- NBF, NetBIOS Frames protocol
- SPX, Sequenced Packet Exchange
- RTMP, Routing Table Maintenance Protocol
- SCTP, Stream Control Transmission Protocol
- SCSI, Small Computer System Interface
- TCP, Transmission Control Protocol
- UDP, User Datagram Protocol
- UDP-Lite