Web 瀏覽器如何知道目標是 http 還是 https?

Web 瀏覽器如何知道目標是 http 還是 https?

我使用 Wireshark 來分析網路流量。

當我打開網頁瀏覽器並輸入位址:stackexchange.com 時,它首先執行 DNS 查詢,接收答案,然後將 TCP Syn 封包發送到連接埠 80 上的正確 IP 位址。

但是當我輸入 www.paypal.com 時,它會執行相同的操作,但 TCP Syn 封包直接發送到連接埠 443。

DNS 答案似乎不包括目標端口,我的瀏覽器和目標站點之間也沒有任何協議協商。我的瀏覽器如何知道目標連接埠?

請注意,我沒有輸入http://stackexchange.com或者https://www.paypal.com,但只是 stackexchange.com 和 www.paypal.com。

答案1

您的瀏覽器會記住先前與網站互動的連接埠和協定。

Paypal 使用 HTTP 嚴格傳輸安全性。這表示伺服器已經發送(可能透過連接埠 80)回應標頭,包括Strict-Transport-Security:max-age=63072000在您開始查看之前。顯示的年齡以秒為單位。因此,在訪問 80 連接埠後的接下來兩年內,瀏覽器不必再次存取 80 連接埠;它應該去連接埠 443。

這是對先前方案的改進,先前方案中對連接埠 80 的每個請求都會重定向到速度較慢的連接埠 443。依賴重定向也不太安全,因為如果使用重定向,瀏覽器不會介意 Paypal(或冒充 Paypal 的 MITM 攻擊者)突然從 HTTPS 轉換為 HTTP。在 HTTP 嚴格傳輸安全性下,這種攻擊最終會更加引人注目,因為攻擊者將被迫使用 HTTPS 與瀏覽器通信,但他們無權存取頒發給 Paypal 的任何 HTTPS 伺服器憑證。

答案2

瀏覽器通常會先嘗試 HTTP,然後再重新導向到 HTTPS。這是常見的情況,但不是唯一的情況。

Chrome 和 Firefox 支援以下概念HTTP 嚴格傳輸安全預先載入列表是只能透過 HTTPS 聯繫的網站列表,即使使用 HTTP URL 引用也是如此。

更詳細的資訊可以找到這裡

答案3

Google Chrome、Mozilla Firefox 和 Internet Explorer/Microsoft Edge 透過實作「HSTS 預先載入清單」來解決此限制,該清單包含支援 HSTS 的已知網站。因此,來自瀏覽器的請求直接透過 https 傳送到對應的 HSTS 配置的伺服器網域。

否則,必須有一個 http 請求,且伺服器必須重定向到 https(如果是 HSTS,伺服器會使用標頭進行回應 - 僅使用 HTTPS:Strict-Transport-Security:max-age=31536000)。

答案4

Web 瀏覽器將始終請求連接埠 80,因此在其伺服器端提供 ssl 服務之後,當用戶端連接到您的服務時,伺服器會將連線重新導向至安全埠或「https」。

相關內容