コネクション型通信 (コネクションガタツウシン) とは | 意味や読み方など丁寧でわかりやすい用語解説
コネクション型通信 (コネクションガタツウシン) の読み方
日本語表記
コネクション型通信 (コネクションガタツウシン)
英語表記
connection-oriented communication (コネクションオリエンテッド コミュニケーション)
コネクション型通信 (コネクションガタツウシン) の意味や用語解説
コネクション型通信とは、データを送受信する前に、通信を行う二つのエンドポイント間で論理的な「接続(コネクション)」を確立し、データ送受信中は接続状態を維持し、通信終了後に接続を切断する形式の通信方式である。この方式の最大の特徴は、データ転送の信頼性と順序保証を重視する点にある。通信相手との経路や状態が事前に確立されるため、データが正しく、かつ定められた順序で相手に届くことを保証する仕組みが組み込まれている。これにより、アプリケーション層での複雑なエラー処理を軽減し、開発を容易にするという利点がある。 詳細を説明する。コネクション型通信では、大きく分けて「接続確立」「データ転送」「接続切断」の三つのフェーズを経て通信が完了する。 まず「接続確立」のフェーズでは、通信を開始したい側(クライアント)が、通信を受け入れたい側(サーバー)に対して接続要求を送信する。サーバーはその要求を受信すると、接続を受け入れるための応答を返し、クライアントもそれに応答することで、双方の間で通信を行う準備が整う。この一連のやり取りをハンドシェイクと呼ぶ。例えば、インターネットで広く使われるTCP (Transmission Control Protocol) では「スリーウェイハンドシェイク」と呼ばれる三段階のやり取りが行われる。このハンドシェイクの過程で、データ転送に使うポート番号や初期シーケンス番号、通信に関する各種設定などが双方で合意され、通信のためのリソース(メモリ上のバッファなど)が確保される。これにより、両端の通信プロセスが互いの存在と状態を認識し、データの送受信を行うための論理的な経路が確立される。この接続が確立されることで、以降のデータ転送は、この確立された経路を通じて行われることになる。 次に「データ転送」のフェーズでは、確立された接続を通じて実際にデータが送受信される。コネクション型通信の核心とも言える部分であり、高い信頼性を確保するための様々なメカニズムが動作する。主な機能として、データの順序保証、パケットの再送制御、フロー制御、輻輳制御がある。データは通常、パケットという単位に分割されて送信されるが、ネットワークの状況によっては、パケットが途中で失われたり、重複したり、順序が入れ替わったりする可能性がある。コネクション型通信では、送信側が各パケットにシーケンス番号を付与し、受信側は受信したパケットのシーケンス番号を確認することで、データの順序を正しく並べ直す。また、受信側はデータを受け取ったことを示す「確認応答(ACK)」を送信側に返す。送信側は一定時間内にACKが届かない場合、そのパケットが失われたと判断し、自動的に再送する。これにより、データが確実に相手に届くことが保証される。フロー制御は、受信側の処理能力を超えてデータが送られてこないように、送信速度を調整する仕組みである。受信側が一度に受け取れるデータ量(ウィンドウサイズ)を送信側に通知し、送信側はその範囲内でデータを送ることで、受信側のバッファオーバーフローを防ぐ。輻輳制御は、ネットワーク全体が混雑している場合に、送信側が自らの送信速度を落とすことで、ネットワークのさらなる混雑を防ぎ、全体のパフォーマンスを維持するメカニズムである。これらの機能が連携して動作することで、コネクション型通信は非常に信頼性の高いデータ転送を実現する。 最後に「接続切断」のフェーズでは、通信が終了する際に、確立された接続を安全に閉じる手続きが行われる。データ転送と同様に、接続切断も双方の合意に基づいて行われることが重要である。例えばTCPでは、どちらか一方が接続切断を要求し、もう一方がそれに応答し、さらにデータの送受信が完全に終了したことを確認し合う複数のステップを経て、接続が完全に閉じられる。このプロセスを通じて、接続確立時に確保されたリソースは解放され、通信は正式に終了する。 コネクション型通信の最大のメリットは、その高い信頼性と順序保証にある。アプリケーション開発者は、データの紛失や順序の入れ替わりを気にすることなく、より上位のロジックに集中できる。また、接続が確立されている間は通信相手が常に意識されているため、セッション管理が容易になる。一方でデメリットも存在する。接続確立と切断のプロセスには、ハンドシェイクのためのパケット交換が必要であり、これにより通信開始時と終了時に一定のオーバーヘッドが発生する。また、接続を維持している間は、たとえデータが送られていなくても、双方でリソースを消費し続ける。短時間の頻繁な通信や、多数のクライアントからのアクセスを処理する場合、このオーバーヘッドやリソース消費が性能上のボトルネックとなる可能性がある。さらに、接続の確立と切断に時間がかかるため、リアルタイム性が極めて重要なアプリケーションや、単発の小さなデータ送信には必ずしも最適な方式とは言えない場合もある。 コネクション型通信の代表的なプロトコルは、インターネットの基盤技術であるTCP (Transmission Control Protocol) である。Webページの閲覧に使うHTTP、ファイルのダウンロードに使うFTP、リモートログインに使うSSHなど、私たちが普段利用する多くのアプリケーション層プロトコルは、このTCPの上に構築されており、コネクション型通信の恩恵を受けている。これにより、ウェブブラウザで画像が途切れることなく表示されたり、ダウンロードしたファイルが破損することなく完全に取得できたりと、現代のインターネット体験を支える重要な役割を担っている。