天天看點

http協定學習筆記(3)

為了解決HTTP傳輸延遲問題,HTTP1.1使用了持久化連接配接,持久化連接配接中,TCP連接配接預設都是激活的,在資料傳輸結束時,發送封包首部為Connection:close的封包 。但用戶端和伺服器都可以随時結束TCP連接配接,不是必須發送首部為Connection:close的封包。

進行持續連接配接時,不是用戶端與伺服器進行持久連接配接,而是用戶端與伺服器分别與兩者中間的代理進行持久連接配接,持久連接配接的首部Connection經過一級跳轉之後就會被過濾掉。

一個用戶端最多隻能對兩個伺服器或代理發起持續連接配接

假如用戶端有十一個請求要發送,前十個請求發送過去之後,會放在伺服器的緩存區,而這時關閉連接配接的話,最後一個請求無法發送過來,就會清空緩存區的請求,十一個請求從新發送(因為TCP是可靠連接配接)

管道化連接配接。HTTP1.1允許在持續連接配接上可選的使用請求管道。就是在響應到達之前,把請求放在一個隊列裡,當上一個請求到達伺服器時,這個請求開始發送

http協定學習筆記(3)

管道化連接配接的限制:

1、必須是在持續化連接配接中使用

2、用戶端必須做好連接配接會随時中斷的準備,随時準備重新發送請求

3、響應順序必須與請求順序一緻

4、管道化連接配接中不能使用POST請求

關閉分為兩種,一種是完全關閉,一種是半關閉,套接字調用close會完全關閉,調用shutdown會辦關閉。

TCP兩端都會各有一個輸出與輸入隊列

完全關閉會将輸入與輸出都關閉,而半關閉可以單獨關閉輸出或輸入,使用半關閉可以更好的避免一些錯誤,隻關閉伺服器端的輸出信道是十分安全的,如果伺服器的輸入信道被關閉的話,用戶端的請求沒有全部發送完,會使已被發送且已經緩存的請求被清空。

繼續閱讀