コネクションの種類には非対称的開放と対照的解放がある
コネクションの種類には非対称的開放と対照的解放の二つの形態がある。非対称的開放は電話システムのような形であり、どちらかの参加者が電話を切ると、コネクションが切断される。対象的開放はコネクションを二つの独立した一方向コネクションとして扱い、各々を別々に開放する。
非対称的開放は不意に起こる物で、データ・ロスを引き起こすかもしれない。
2つの軍隊問題で疎通が簡単に取れずコネクションの解放が容易ではない
白軍が谷に野営していて、両側の山腹に青軍がいるとする。白軍は青軍の一つずつの軍隊よりも大きいが、青軍の両方をあわせると青軍の方が大きい。
青軍は各々が戦いを挑んだら負けるだろうが、同時に戦いを仕掛ければ勝利を得るだろう。
青軍は同時に攻撃を仕掛けたい。しかし、通信手段は徒歩の使者を谷にやることしかない。死者は捕まってしまうかもしれないし、メッセージがロスするかもしれない(すなわち、青軍は信頼性の低い通信チャネルを離礁しなければならない)
どうすれば信頼性の低い通信チャネルで意思疎通できるか
現実には、合意の必要性は放棄し、トランスポート・ユーザーに問題を任せてしまって、いつ切断するかを両サイドが独立に決定することによって、この難題を回避できる。
トランスポート・ユーザーがいつ切断するかで決まる
いつ切断するかをという問題をトランスポート・エンティティ自身では明確に解決することができないので、トランスポート・ユーザーがいつ切断するかを決めることに関与しなければならないと言うことである。
アプリケーションの重要性をはっきりさせるために、次のような状況を考えてみよう。
TCPは通常、対照的な終了
をする(すなわち、データの送信が完了したらそれぞれの側が独立にFINパケットを送信してコネクションの半分ずつを閉じる)。それに対して多くのWebサーバーは、コネクションを突然閉じるRSTパケットをクライアントに送信する
のであるが、これは非対称的な終了のしかたに近い。これがうまくいくのは、Webサーバーがデータ交換のパターンを知っているから
である。最初にWebサーバーはクライアントからリクエストを受信する。それはクライアントがサーバーに送信しようとしているデータの全てである。
次のWebサーバーはクライアントに応答を返す。Webサーバーが応答を返し終わったら、どちらかの方向に関してもデータはすべて送信されたと言うことである。サーバーはクライアントに警告を送り、コネクションを突如的に切断することができる
。クライアントが警告を受信したのなら、その時直ちにコネクション状態を終了させるだろう。もし受信しないなら、最後にはサーバーがもはやそれ以上のデータを送信しようとしていないことを知って、コネクション状態を終了させる
だろう。どちらにしてもデータは正常に転送されているわけだ。