はじめに
コネクション型とコネクションレス型は、通信前に論理的な接続を確立し、通信中にその状態を管理するかどうかを表す分類です。「コネクション型は確実で遅い」「コネクションレス型は不確実で速い」と説明されることがありますが、それだけでは接続状態と信頼性が混同されます。
この記事では、コネクションが何を意味するのかを整理し、TCP・UDP・QUICを具体例として、両方式の違いと信頼性との関係を解説します。
この記事で分かること
- ネットワーク通信におけるコネクションの意味
- コネクション型とコネクションレス型の違い
- 接続状態と信頼性を分けて考える理由
- TCP・UDP・QUICがどのように位置づけられるか
- 両方式を比較するときの確認点
コネクションとは
コネクションとは、通信する端点同士が、相手との通信を識別し、必要な状態を管理するための論理的な関係です。物理的な専用回線を作ることや、パケットが通るネットワーク経路を固定することではありません。
例えばTCPでは、通信開始前に接続を確立し、通信中はシーケンス番号や確認応答などの状態を管理します。接続が終了すると、通信に使った状態を解放します。
コネクション型とは
コネクション型は、データを送る前に通信相手との接続状態を確立し、その状態を参照しながら通信する方式です。通信の開始、データ転送、終了という段階があり、両端は同じ通信を継続していることを識別します。
代表例はTCPです。TCPは3ウェイハンドシェイクで接続を確立し、接続ごとに送受信の状態を管理します。ただし、「コネクション型」という言葉が直接表すのは接続状態の管理方法です。再送、順序制御、フロー制御などはTCPが提供する別の機能です。
コネクションレス型とは
コネクションレス型は、通信前に相手との接続状態を確立せず、メッセージを個別に送る方式です。送信のたびに宛先を指定し、プロトコル自身は通信相手ごとの接続状態を維持しません。
代表例はUDPです。UDPはデータグラムを必要最小限の仕組みで送り、UDP自体は到着、順序、重複しないこと、再送を保証しません。
コネクションレス型でも、相手から応答を受け取る通信はできます。一般的なDNS問い合わせのように、アプリケーションが要求と応答を対応づける場合もあります。「接続がない」とは、通信や応答が存在しないという意味ではありません。
コネクション型とコネクションレス型の違い
| 比較項目 | コネクション型 | コネクションレス型 |
|---|---|---|
| 通信前の処理 | 接続状態を確立する | 接続状態を確立しない |
| 通信中の状態 | 端点が通信状態を管理する | プロトコル自身は接続状態を維持しない |
| データの扱い | 確立した接続に属するデータとして扱う | メッセージを個別に扱う |
| 接続終了の処理 | 接続を終了し、状態を解放する | 接続終了処理はない |
| 代表例 | TCP、QUIC | UDP |
| 再送・順序制御など | 接続方式だけでは決まらない | 接続方式だけでは決まらない |
最後の項目が重要です。コネクション型かどうかは接続状態の管理方法を表し、データの到着、再送、順序制御などを必ず決めるものではありません。
接続状態と信頼性は別の観点
TCPはコネクション型であり、損失検出、再送、順序制御も備えています。UDPはコネクションレス型であり、UDP自体にはこれらの機能がありません。この組み合わせが一般的なため、コネクション型と信頼性が同じ意味のように見えます。
QUICはUDPで運ばれますが、QUIC自体はコネクション型のプロトコルです。QUICが独自のコネクションを確立し、ストリーム、損失検出、輻輳制御などを提供します。この例からも、下位層がコネクションレス型であっても、上位のプロトコルが接続状態や信頼性を実装できることが分かります。
そのため、「コネクション型だから必ず信頼できる」「コネクションレス型だから信頼性を持てない」とは判断できません。どのプロトコルまたは層が、どの機能を担当するかを確認する必要があります。
TCP・UDP・QUICの具体例
TCPを利用する通信では、最初に接続を確立し、同じ接続の中でデータを継続して送受信します。HTTP/1.1やHTTP/2によるWeb通信、メール、ファイル転送などで利用されます。
UDPを利用する通信では、UDP自身が接続状態を確立せずにデータグラムを送ります。一般的なDNS問い合わせでUDPが使われる場合や、音声・映像のリアルタイム通信、オンラインゲームなどが例です。ただし、DNSにはTCPやQUICを利用する方式もあり、UDPを使えば常に低遅延になるわけでもありません。
QUICはUDPデータグラムで運ばれますが、QUIC自身が接続状態を管理します。つまり、UDPを利用していることだけを見て、通信全体をコネクションレス型とは判断できません。QUICが接続状態、複数ストリーム、損失検出、暗号化された通信をどのように提供するかは、QUICとは?UDP上で動くセキュアなトランスポートプロトコルを解説で解説しています。
TCPとUDPの再送、順序制御、用途の違いは、トランスポート層とは?役割とTCP・UDPの違いを分かりやすく解説で詳しく解説しています。
違いを確認するときの3つの視点
コネクション型とコネクションレス型を比較するときは、次の3点を分けて確認します。
- どのプロトコルまたは層が、通信前に接続状態を確立するか
- 通信中に、どのような状態を維持するか
- 再送や順序制御を、どのプロトコルまたは層が担当するか
接続状態の有無だけで、通信の信頼性、遅延、性能を断定することはできません。TCPとUDPの選択基準まで確認する場合は、トランスポート層が提供する機能と、アプリケーション側で補う機能を分けて考えます。
まとめ
コネクション型とコネクションレス型の違いは、通信前に論理的な接続を確立し、通信中にその状態を管理するかどうかです。
- コネクションは物理回線や固定経路ではなく、端点間で管理する論理的な通信状態
- コネクション型は接続を確立し、その状態を使って通信する
- コネクションレス型は接続を確立せず、メッセージを個別に送る
- TCPとQUICはコネクション型、UDPはコネクションレス型の代表例
- 接続状態の有無と、再送や順序制御などの信頼性は別の観点
- どのプロトコルまたは層が状態と機能を担当するかを確認する
「TCPは確実、UDPは速い」とだけ覚えるのではなく、接続状態と信頼性を分けて理解すると、コネクション型とコネクションレス型の違いを正確に整理できます。