当用户在浏览器输入URL并按下回车后,浏览器会向服务器发送一个HTTP请求报文,整个过程涉及多个步骤,包括DNS解析、TCP连接、HTTP请求/响应等。以下是详细流程:
1. 用户输入URL并解析
-
URL结构:
https://www.example.com:443/path?query=123#fragment
-
协议(Scheme):
https
(决定使用HTTP/HTTPS) -
域名(Host):
www.example.com
-
端口(Port):
443
(HTTPS默认端口) -
路径(Path):
/path
-
查询参数(Query):
?query=123
-
片段(Fragment):
#fragment
(前端路由使用,不会发送到服务器)
-
2. DNS解析(域名 → IP地址)
浏览器需要将域名转换成IP地址才能建立连接:
-
浏览器缓存:检查本地是否有缓存(如之前访问过
example.com
)。 -
系统缓存(hosts文件):检查操作系统的DNS缓存。
-
路由器缓存:查询本地路由器缓存。
-
ISP DNS服务器:向互联网服务提供商(如电信、联通)的DNS服务器查询。
-
递归查询:
-
如果ISP DNS没有记录,会向根DNS服务器(
.
)查询。 -
根DNS返回
.com
的顶级域名服务器(TLD)。 -
TLD返回
example.com
的权威DNS服务器。 -
最终获取
www.example.com
的IP(如93.184.216.34
)。
-
3. 建立TCP连接(三次握手)
浏览器获取IP后,通过TCP协议与服务器建立可靠连接:
-
SYN(同步):客户端发送
SYN=1, Seq=x
给