我已經觀察到一個HTTP 1.1服務器實現,它終止客戶端連接,只要它檢測到其傳出通道的客戶端連接關閉(或者更確切地說,在發送適當的http響應之前或之後)。這是否符合HTTP 1.1實現?符合HTTP 1.1服務器和客戶端連接半關閉
RFC 2616第8.1.4節似乎暗示這是正確行爲:
當客戶端或服務器希望超時,它應該發出優美 關閉傳輸連接上。客戶和服務器應該不斷地注意運輸關閉的另一側,並且 適當地對其進行響應。
...
服務器不應該關閉發送響應,除非網絡或客戶端故障懷疑中間的連接。
我說得對嗎?在HTTP 1.1的上下文中是否有關於半關閉連接處理的更明確引用?
...所以你在說什麼w.r.t.到原始問題,是否允許符合HTTP 1.1的服務器在發送HTTP響應之前終止連接(通過發送「FIN」) - 接收到來自客戶端的FIN數據包? – hvr 2011-03-30 10:21:42
HTTP客戶端如何告訴服務器它斷開連接的原因?這是HTTP規範的一部分,我可以在哪裏找到更多關於它的內容? – hvr 2011-03-30 10:24:38
客戶端不說爲什麼會斷開連接。它只是開始斷開握手(發送fin,syn等),然後斷開連接。這是斷開連接的正確方式,但有時它可以在不向服務器發送任何內容的情況下簡單斷開連接。如果你想知道客戶端爲什麼斷開連接,你必須自己實現它(但它不是HTTP規範的一部分)。 – 2011-03-30 12:09:09