从输入URL到网页显示的过程是怎么样的?

1.URL解析

判断URL格式是否正确,如果没有添加http://前缀,会默认使用HTTP协议

2.DNS域名解析
  • 检查缓存:浏览器按顺序检查缓存中是否有该域名的 IP 记录:

    1. 浏览器缓存

    2. 操作系统缓存

    3. 路由器缓存

  • 查询DNS服务器:如果缓存中没有,浏览器会向配置的 DNS服务器 发起查询

    • 递归方式查询:从根域名服务器(.) -> 顶级域名服务器(.com) -> 权威域名服务器(google.com)一层层查下去,最终获得 www.google.com 对应的 IP 地址

3.建立TCP连接

浏览器需要和服务器建立可靠的连接,通过 TCP 三次握手 完成

  1. SYN:浏览器向服务器发送一个SYN包,请求建立连接

  2. SYN-ACK:服务器收到后,回复一个 SYN-ACK 包,表示同意建立连接。

  3. ACK:浏览器再回复一个 ACK 包进行确认

至此,TCP 连接建立成功,双方可以开始可靠地传输数据

如果是 HTTPS 协议TCP 连接之后,还需要进行 TLS 握手,建立安全加密连接:

  1. ClientHello:浏览器向服务器发送支持的加密算法列表和一个随机数。

  2. ServerHello:服务器选择加密算法,发送自己的数字证书和一个随机数。

  3. 验证与预主密钥:浏览器验证证书的合法性(是否过期,是否由可信机构颁发,域名是否匹配)。然后生成一个“预主密钥”,用证书中的公钥加密后发送给服务器。

  4. 生成会话密钥:服务器用私钥解密后,双方利用三个随机数生成相同的会话密钥

  5. 加密通信:后续所有的 HTTP 数据都将使用这个会话密钥进行加密传输。

4.发送HTTP请求

连接建立后,浏览器会构造一个 HTTP 请求报文,并通过连接发送给服务器,请求获取网页内容。

报文包括:

  • 请求行:包含请求方法(如 GET, POST)、请求路径(/)、HTTP 版本(HTTP/1.1HTTP/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 四次挥手

  1. FIN浏览器发送 FIN 包,表示数据发送完毕,请求关闭连接。

  2. ACK服务器回复 ACK 包,表示同意关闭。

  3. FIN服务器也发送 FIN 包,表示自己的数据也发送完毕。

  4. ACK浏览器回复 ACK 包,确认关闭。等待一段时间后,双方连接正式关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值