1.URL解析
判断URL格式是否正确,如果没有添加http://前缀,会默认使用HTTP协议
2.DNS域名解析
-
检查缓存:浏览器按顺序检查缓存中是否有该域名的 IP 记录:
-
浏览器缓存
-
操作系统缓存
-
路由器缓存
-
-
查询DNS服务器:如果缓存中没有,浏览器会向配置的 DNS服务器 发起查询
-
以递归方式查询:从根域名服务器(
.) -> 顶级域名服务器(.com) -> 权威域名服务器(google.com)一层层查下去,最终获得www.google.com对应的 IP 地址
-
3.建立TCP连接
浏览器需要和服务器建立可靠的连接,通过 TCP 三次握手 完成
-
SYN:浏览器向服务器发送一个SYN包,请求建立连接
-
SYN-ACK:服务器收到后,回复一个 SYN-ACK 包,表示同意建立连接。
-
ACK:浏览器再回复一个 ACK 包进行确认
至此,TCP 连接建立成功,双方可以开始可靠地传输数据
如果是 HTTPS 协议,TCP 连接之后,还需要进行 TLS 握手,建立安全加密连接:
-
ClientHello:浏览器向服务器发送支持的加密算法列表和一个随机数。
-
ServerHello:服务器选择加密算法,发送自己的数字证书和一个随机数。
-
验证与预主密钥:浏览器验证证书的合法性(是否过期,是否由可信机构颁发,域名是否匹配)。然后生成一个“预主密钥”,用证书中的公钥加密后发送给服务器。
-
生成会话密钥:服务器用私钥解密后,双方利用三个随机数生成相同的会话密钥。
-
加密通信:后续所有的 HTTP 数据都将使用这个会话密钥进行加密传输。
4.发送HTTP请求
连接建立后,浏览器会构造一个 HTTP 请求报文,并通过连接发送给服务器,请求获取网页内容。
报文包括:
-
请求行:包含请求方法(如
GET,POST)、请求路径(/)、HTTP 版本(HTTP/1.1或HTTP/2)。 -
请求头:包含大量信息,如:
-
Host: www.google.com -
User-Agent(浏览器身份标识) -
Accept(能接收的响应数据类型,如text/html) -
Cookie(包含会话信息等)
-
-
请求体:通常在
POST方法时存在,包含提交的表单数据等。
5.服务器处理HTTP请求
服务器收到 HTTP 请求报文后,处理请求,并返回 HTTP 响应报文给浏览器
6.浏览器处理HTTP报文
服务器接收到请求后会响应一个HTTP报文,浏览器收到 HTTP 响应报文后,解析响应体中的 HTML 代码,渲染网页的结构和样式,同时根据 HTML 中的其他资源的 URL(如图片、CSS、JS 等),再次发起 HTTP 请求,获取这些资源的内容,直到网页完全加载显示
7.关闭 TCP 连接
数据传送完毕后,需要断开 TCP 连接释放资源,即 TCP 四次挥手:
-
FIN:浏览器发送 FIN 包,表示数据发送完毕,请求关闭连接。
-
ACK:服务器回复 ACK 包,表示同意关闭。
-
FIN:服务器也发送 FIN 包,表示自己的数据也发送完毕。
-
ACK:浏览器回复 ACK 包,确认关闭。等待一段时间后,双方连接正式关闭。
2521

被折叠的 条评论
为什么被折叠?



