假设我有一台 Vanilla 机器,这是我第一次将它连接到互联网。任何级别都没有缓存。我通过输入 example.com(nohttp//:
或https//:
)通过浏览器访问网站。我也没有告诉浏览器它需要连接到特定端口。首先发生的事情是机器将域名解析为 IP,然后进行 TCP 握手。目前还没有发生端口协商,那么浏览器如何知道要连接到哪个端口?
我在网上看过一些文章,其中指出 HSTS 将根据 HTTP 指令告诉浏览器使用哪个端口。但这并不能解释浏览器如何决定它最初需要连接的端口?机器的操作系统如何知道这是哪种流量(ICMP 还是 HTTP)。它是否总是先连接到端口 80 或其他端口,然后服务器才能知道它将监听哪个端口?
答案1
如果你不输入协议(即http://
或https://
),浏览器将假定纯 HTTP - 除非已知该网站需要 HTTPS(即已预加载 HSTS 信息使用附带的浏览器)。如果没有指定端口,则使用协议的默认端口,即 HTTP 为 80,HTTPS 为 443。