浏览器中输入URL后的过程(打开一个网页)

本文详细描述了浏览器接收到用户输入URL后的一系列步骤,包括DNS解析、TCP连接建立、HTTP请求生成、服务器响应处理、响应头解析和页面渲染过程。重点介绍了HTTPS、DNS查找机制以及浏览器如何构造和解析网络请求以完成网页加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浏览器中输入URL后的过程

参考:小林coding图解网络

image-20231008140725692

精简总结

1.浏览器接收到用户请求,先检查浏览器缓存里是否有缓存该资源,如果有直接返回;如果没有进入下一步网络请求。

2.网络请求前,进行DNS解析,以获取请求域名的IP地址。如果请求协议是HTTPS,那么还需要建立TLS连接。DNS解析时会按本地浏览器缓存->本地Host文件->路由器缓存->DNS服务器->根DNS服务器的顺序查询域名对应IP,直到找到为止。

3.浏览器与服务器IP建立TCP连接。连接建立后,浏览器端会构建请求行、请求头等信息,并把和该域名相关的Cookie等数据附加到请求头中,向服务器构建请求信息。

4.服务器接收到请求信息,根据请求生成响应数据。

5.浏览器解析响应头若响应头状态码为301、302,会重定向到新地址;若响应数据类型是字节流类型,一般会将请求提交给下载管理器;若是HTML类型,会进入下一步渣染流程。

6.浏览器解析HTML文件,创建DOM树,解析CSS进行样式计算,然后将CSS和DOM合并,构建渲染树;最后布局和绘制泣染树,完成页面展示。

解析URL生成http请求

URL地址实际上是请求服务器里的文件资源——协议+域名(IP地址)+资源路径+查询参数。当没有路径名时,就代表访问根⽬录下事先设置的默认⽂件,也就是/index.html或者/default.html这些⽂件。

成功解析URL之后,浏览器确定了 Web 服务器和⽂件名,接下来就是根据这些信息来⽣成 HTTP 请求消息。


在这里插入图片描述

注意,如果请求协议是HTTPS,那么还需要建立TLS连接。

DNS解析(域名解析)

在将生成的http请求消息发送给服务器之前,需要先查询服务器域名对应的 IP 地址,因为委托操作系统发送消息时,必须提供通信对象的IP地址。此时就需要访问DNS服务器(专门保存了 Web 服务器域名与 IP 的对应关系)来进行DNS解析(域名解析)

在解析之前,浏览器会先看⾃身有没有对这个域名的缓存,如果有,就直接返回,如果没有,就去问操作系统,操作系 统也会去看⾃⼰的缓存,如果有,就直接返回,如果没有,再去hosts⽂件看,也没有,才会去问DNS服务器。

域名解析流程:根 DNS 服务器(.)——>顶级域 DNS 服务器(.com)——>权威 DNS 服务器(server.com)。

(只指路不带路)

协议栈

通过DNS获取到IP地址后,就可以把HTTP的传输⼯作交给操作系统中的协议栈

image-20231018124048351

应⽤程序(浏览器)调⽤ Socket 库——TCP/UDP协议——IP协议(ICMP 协议和 ARP 协议)——网卡

协议栈的内部分为⼏个部分,分别承担不同的⼯作。上下关系是有⼀定的规则的,上⾯的部分会向下⾯的部分委托⼯作,下⾯的部分收到委托的⼯作并执⾏。

协议栈的上半部分有两块,分别是负责收发数据的 TCP 和 UDP 协议,这两个传输协议会接受应⽤层的委托执⾏收发数据的操作。

协议栈的下⾯⼀半是⽤ IP 协议控制⽹络包收发操作,在互联⽹上传数据时,数据会被切分成⼀块块的⽹络包,⽽将⽹络包发送给对⽅的操作就是由 IP 负责的。

  • ICMP ⽤于告知⽹络包传送过程中产⽣的错误以及各种控制信息。
  • ARP ⽤于根据 IP 地址查询相应的以太⽹ MAC 地址。

IP 下⾯的⽹卡驱动程序负责控制⽹卡硬件,⽽最下⾯的⽹卡则负责完成实际的收发操作,也就是对⽹线中的信号执⾏发送和接收操作。

image-20231018125120930

步骤总结

浏览器与服务器IP建立TCP连接

  • 在这一步,浏览器通过域名解析(DNS解析)来获取服务器的IP地址,然后使用该IP地址建立TCP连接。TCP(传输控制协议)是一种可靠的协议,它确保了数据的可靠传输。一旦建立了TCP连接,浏览器端会构建HTTP请求,其中包括请求行(如GET或POST方法和URL)、请求头(包括用户代理信息、Cookie等)等信息,然后将这些信息发送到服务器。

服务器接收到请求信息,根据请求生成响应数据

  • 服务器接收到浏览器的HTTP请求后,会根据请求的内容,执行相应的操作,如查询数据库、生成动态内容或者提供静态文件。服务器会构建HTTP响应,包括响应头(包括状态码,如200 OK,以及其他响应头信息)和响应体(包含HTML、CSS、JavaScript等数据)。这个响应数据会发送回浏览器。

浏览器解析响应头

  • 浏览器接收到来自服务器的HTTP响应后,首先会解析响应头部。在响应头中,浏览器查看状态码(如301或302表示重定向),如果是重定向,浏览器会按照新的URL再次发送HTTP请求,从而导航到新的页面。如果响应数据类型是字节流(例如文件下载),浏览器可能会将请求提交给下载管理器。如果是HTML类型,浏览器会继续下一步的渲染流程。

浏览器解析HTML文件,创建DOM树,解析CSS进行样式计算,合并CSS和DOM构建渲染树,然后布局和绘制渲染树,完成页面展示

  • 在这一步,浏览器开始解析HTML文件,创建DOM(文档对象模型)树,这是页面内容的逻辑结构。同时,浏览器会解析CSS文件,计算元素的样式,然后将CSS和DOM合并以构建渲染树(Render Tree)。渲染树是用于绘制页面的关键数据结构。
  • 接下来,浏览器进行布局(Layout),它确定每个元素在页面上的位置和大小。最后,浏览器进行绘制(Painting),将页面的内容显示在屏幕上,这是通过将像素渲染到屏幕上来实现的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值