このページの本文へ

前へ 1 2 3 4 次へ

TCP/IPまるわかり第5回

論理的な伝送路で信頼性を上げる技術を知ろう

TCPのキモはコネクションとポート番号

2009年07月13日 09時00分更新

文● 伊藤玄蕃

  • この記事をはてなブックマークに追加
  • 本文印刷

ここまで説明してきたIPは、送達確認や順序制御の機能を持たないため、それだけでは信頼性が低い。IPの上位層に位置するTCPでは、通信の信頼性を上げるため数々の工夫がなされている。その手始めが論理的な伝送路を確保する「コネクション型の通信」である。

トランスポート層を担うTCP

 トランスポート層には大きく分けて2つの機能がある。それは、信頼性の確保とアプリケーション間通信の実現である。IPではパケットは送りっぱなしであり、途中でパケットがなくなってもそれをフォローする仕組みはない。

 また、IPでは基本的にパケットは特定のホスト宛に送るものであり、どのアプリケーションで処理するかまでは考慮されていない。こうした欠点を補うのはトランスポート層の役割であり、TCP/IPではTCPがその役目を担っている。

信頼性を確保するコネクションの概念

 通信には、コネクション型とコネクションレス型の2つの方法がある。身近なものに喩えると、コネクション型の代表は電話で、コネクションレス型の代表は郵便や宅急便である。

 コネクション型の通信では、データの送受信に先立って、通信を行なうホストの間に論理的な通信路(コネクション、論理リンク)を確立する。コネクションの確立は、俗に「リンクを張る」とも表現され、データを通す“土管”や“トンネル”のようなイメージで捉えることができる(図1の上)。

図1 コネクション型通信(上)とコネクションレス型通信(下)

 ホスト同士が物理的な通信線でつなげられていても、コネクションを確立する前は、まだデータ送受信の準備はできていない。コネクションを確立するには、受信バッファの確保や受信したデータを処理するアプリケーションの起動など、双方のホストがデータを送受信するためのさまざまな準備が必要だ。データは、このコネクション上を流れることにより、同じ通信線を流れるほかのデータと区別され、到着順序の制御やエラー訂正などの処理も可能になる。

 電話を例に取ると、まずダイヤル操作により相手の電話機を鳴らし、相手が受話器を取ってから、互いに「もしもし、○○です」「はい、こちらは××です」と正しい相手であることを確認し、メモ用紙や鉛筆を用意する(コネクションの確立に相当)。それから実際の用件を伝える(データの送受信に相当)。また相手の話がよく聞き取れなかったときは、「すいません、もう一度お願いします」と申し出れば、もう一度、内容を聞き出すこともできる(エラー訂正と再送処理に相当)。このようにして、コネクション型は信頼性の高い通信を実現する

 一方、コネクションレス型の通信は、IPのように相手の都合を考えずにデータを送ってしまう(図1の下)。そのため、宛先にデータが順序よく届いたかどうか、あるいはデータのすべてが届いたかどうかを確認することができない。こちらは郵便を例にして考えてみよう。同じ相手に連続する複数の封書を送った場合、郵便局の仕事は「宛先に書かれた住所まで送り届ける」ことだけである。届いた封書の順番をそろえたり、あるいは全部が届いたかどうかの確認はやっていない。

 このように、コネクションレス型の通信はコネクション型の通信と比べて信頼性が低い。しかし、コネクションの確立や状態管理の処理が不要でホストの負荷が軽いため、1つのパケットだけで完結するような短いメッセージの処理に向いている。つまり、一般的には転送メッセージが多く、到達順序や完全性の確保が必要なときはコネクション型が使われる。一方、信頼性が重要でない場合やきわめて単純な通信、エラー発生率のきわめて低い信頼性の高い通信回線が使われている場合にはコネクションレス型が使われる。

(次ページ、「TCPの動作とポート」に続く)


 

前へ 1 2 3 4 次へ

この連載の記事
ピックアップ