浏览器如何决定使用哪个目标端口?

网络工程 传输协议 第 4 层
2022-02-21 01:42:22

假设我有一台 Vanilla 机器,这是我第一次将它连接到 Internet。任何级别都没有缓存。我通过输入 example.com(没有 http//: 或 https//:)通过浏览器访问网站。将发生的第一件事是机器将域名解析为 IP,然后进行 TCP 握手。还没有发生端口协商,那么浏览器如何知道要连接到哪个端口?

我浏览了网络上的一些文章,其中指出 HSTS 将根据 HTTP 指令告诉浏览器使用哪个端口。但这并不能解释浏览器如何决定它最初需要连接的端口?机器的操作系统如何知道这是哪个流量(ICMP 或 HTTP)。它总是要先连接到端口 80 或其他端口,然后服务器才能知道它将侦听哪个端口?

1个回答

对于使用端口号作为传输地址的服务和传输协议,有注册的、众所周知的端口号。

但这并不能解释浏览器如何决定它最初需要连接的端口?

默认情况下,HTTP 在已注册的、众所周知的端口号 80 上使用 TCP,而 HTTPS 在默认情况下,在已注册的、众所周知的端口号 443 上使用 TCP。浏览器默认使用默认传输协议并已注册好-正在使用的浏览器协议的已知端口号。如果服务器正在侦听不同的端口号,则可以通过附加:<port number>到 FQDN 在 URI 中覆盖它。例如,http://www.example.com:12345

机器的操作系统如何知道这是哪个流量(ICMP 或 HTTP)。

协议位于 URI 的开头,例如http://, https://,ftp://等。

它总是要先连接到端口 80 或其他端口,然后服务器才能知道它将侦听哪个端口?

浏览器将根据 URI 进行连接(或者如果服务器没有监听浏览器尝试的内容,则不连接)。


注册的端口号由 IANA 在服务名称和传输协议端口号注册表中维护。