為了解決HTTP傳輸延遲問題,HTTP1.1使用了持久化連接配接,持久化連接配接中,TCP連接配接預設都是激活的,在資料傳輸結束時,發送封包首部為Connection:close的封包 。但用戶端和伺服器都可以随時結束TCP連接配接,不是必須發送首部為Connection:close的封包。
進行持續連接配接時,不是用戶端與伺服器進行持久連接配接,而是用戶端與伺服器分别與兩者中間的代理進行持久連接配接,持久連接配接的首部Connection經過一級跳轉之後就會被過濾掉。
一個用戶端最多隻能對兩個伺服器或代理發起持續連接配接
假如用戶端有十一個請求要發送,前十個請求發送過去之後,會放在伺服器的緩存區,而這時關閉連接配接的話,最後一個請求無法發送過來,就會清空緩存區的請求,十一個請求從新發送(因為TCP是可靠連接配接)
管道化連接配接。HTTP1.1允許在持續連接配接上可選的使用請求管道。就是在響應到達之前,把請求放在一個隊列裡,當上一個請求到達伺服器時,這個請求開始發送
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN0LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90kaNlXQq5UNrRVTqB3MaZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jMzMDO1ADMwIzMxkDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
管道化連接配接的限制:
1、必須是在持續化連接配接中使用
2、用戶端必須做好連接配接會随時中斷的準備,随時準備重新發送請求
3、響應順序必須與請求順序一緻
4、管道化連接配接中不能使用POST請求
關閉分為兩種,一種是完全關閉,一種是半關閉,套接字調用close會完全關閉,調用shutdown會辦關閉。
TCP兩端都會各有一個輸出與輸入隊列
完全關閉會将輸入與輸出都關閉,而半關閉可以單獨關閉輸出或輸入,使用半關閉可以更好的避免一些錯誤,隻關閉伺服器端的輸出信道是十分安全的,如果伺服器的輸入信道被關閉的話,用戶端的請求沒有全部發送完,會使已被發送且已經緩存的請求被清空。