7

RFC2616 パート 4.4は、HTTP/1.1 でメッセージの終わりを決定する方法を指定します。そのセクションの項目 5 は、応答が終了したことを示すためにサーバーが接続を閉じる可能性があることを指定します。

また、このようにリクエストを区切ることは不可能だとも言い続けています。ただし、TCP を使用すると、クライアントは自分の側を閉じて、応答を受信し続けることができます。私もそれをテストしました。できます。

質問:

  • 1999 年付けの標準では、実際には可能であるのに、なぜ不可能であると書かれているのでしょうか? TCP はそれまでに十分に確立されており、それまでに長い間ハーフクローズをサポートしていました (おそらく 1974 年以来ずっと?)。

  • クライアントが要求の終了を示すために接続を半分閉じることは、プロトコル違反ですか?

これが良い考えであるかどうかは無視してください: 接続が意図的に閉じられたのか単に壊れたのかがよくわからない場合があること、および後で再利用するために接続を開いたままにしておく方がはるかに理にかなっているということは承知しています。

4

1 に答える 1

3

ハーフクローズが不可能だとは言いません。「接続を閉じることは、リクエスト本文の終わりを示すために使用することはできません」とだけ書かれていますが、これは本当です。それは単に、いずれかの方法でハーフクローズの可能性を考慮していません。RFCに記載されていないため、これを使用するとプロトコルに違反することになり、サーバーがそれに応じて反応することを期待する理由はありません。たとえば、サーバーは要求を忘れて、 FINを受信したら接続を閉じます。

于 2012-12-29T06:08:28.027 に答える