HTTP 特性

NETYZreal發表於2024-07-30

HTTP 常見到版本有 HTTP/1.1,HTTP/2.0,HTTP/3.0,不同版本的 HTTP 特性是不一樣的。

這一章主要針對 HTTP/1.1 展開,最突出的優點是「簡單、靈活和易於擴充套件、應用廣泛和跨平臺」。缺點分別是「無狀態、明文傳輸」,同時還有最大的缺點「不安全」。

對於無狀態的問題,解決方案有很多種,其中比較簡單的方式用 Cookie 技術。Cookie 透過在請求和響應報文中寫入 Cookie 資訊來控制客戶端的狀態。相當於在客戶端第一次請求後,伺服器會下發一個裝有客戶資訊的「小貼紙」,後續客戶端請求伺服器的時候,帶上「小貼紙」,伺服器就能認識。

HTTP 的安全問題,可以用 HTTPS 的方式解決,也就是透過引入 SSL/TLS 層,使得在安全上達到了極致。

HTTP 協議是基於 TCP/IP,並且使用了「請求 - 應答」的通訊模式,所以效能的關鍵就在這兩點裡。

HTTP/1.1 提出了長連線的通訊方式,也叫持久連線。這種方式的好處在於減少了 TCP 連線的重複建立和斷開所造成的額外開銷,減輕了伺服器端的負載。持久連線的特點是,只要任意一端沒有明確提出斷開連線,則保持 TCP 連線狀態。同時也因為長連線,使得管道(pipeline)網路傳輸成為可能,可在同一個 TCP 連線裡面,客戶端可以發起多個請求,只要第一個請求發出去了,不必等其回來,就可以發第二個請求出去,可以減少整體的響應時間。但是伺服器必須按照接收請求的順序傳送對這些管道化請求的響應。

如果服務端在處理 A 請求時耗時比較長,那麼後續的請求的處理都會被阻塞住,這稱為「隊頭堵塞」。所以,HTTP/1.1 管道解決了請求的隊頭阻塞,但是沒有解決響應的隊頭阻塞。這裡注意,HTTP/1.1 管道技術預設不開啟且瀏覽器基本不支援該功能。

相關文章