总结“从输入URL到展示出页面“ 这个过程发生了什么

从输入URL到展示页面发生了什么:
1.DNS解析URL为对应的IP地址
浏览器,首先会根据这里的域名,查询对应的 IP 地址;
① 先检查一下自身的缓存
②再查 hosts 文件
③再查 DNS 服务器
在这里插入图片描述
2.浏览器构造一个 HTTP 请求,这个 HTTP 数据就包含了这个域名信息(用户输入的域名)。
3.浏览器调用操作系统的 socket API,把这个 HTTP 数据交给 TCP 做进一步处理,TCP 协议就会将此数据构造一个 TCP 数据段。 在发送 TCP数据段之前,首先要进行“三次握手”,建立连接;当完成三次握手后,客户端和服务器开始传送数据。
4.网络层把TCP数据段进一步封装成一个IP数据报(也可能是多个IP数据报,
IP协议会进行自动分包的过程),然后把数据报交给数据链路层。
5.数据链路层会进一步把这个数据封装成以太网数据帧, 在构造帧头结构时根据IP映射MAC地址,这个构造的过程依赖了ARP协议。然后再把这个数据交给物理层进行传输。
6.物理层将这个数据转换为光/电信号继续进行传输。
7.电信号沿着网线,到达下一个设备(路由器),路由器就会针对收到的数据进行分用,物理层把数据交给了数据链路层,数据链路层把数据交给了网络层,路由器拿到网络层中的IP数据报,取出其中的 IP地址,查询路由表,找到下一个需要传输的目标,进而找到对应的 MAC地址,然后将数据交给数据链路层和物理层进行封装,此时的源MAC和目的MAC 已发生更改。
8.数据到达接收方,需进行分用。层层解析,物理层将电信号转换成以太网数据帧,交给数据链路层;数据链路层解析出 IP数据报,交给网络层,此处涉及到了CRC校验,如果校验和不对,说明数据错误,直接丢弃;IP 协议再进行解析,获得了一个 TCP 数据段(IP报头中有协议类型);这个解析过程可能涉及组包的过程,再根据 TCP数据报中的端口号,找到对应的进程,把数据放入对应的 socket 的接收缓存区中。
9.应用程序调用对应的socket API,从 TCP缓冲区中读取数据,并把这个数据按照 HTTP 协议来解析,获取其中的统一资源定位符(URL),根据 URL 指定的路径,获取到数据的根路径。
10.服务器会对这个根路径进行配置,映射到一个具体的index.html这样的一个HTML文件,服务器读取这个文件,把其中的数据构造成一个 HTTP 响应数据,然后再调用 socket API 进行发送。
11.重复上面封装的过程,服务器发送的响应数据也要层层封装,最终变成一个物理层传输的光电信号。
12.光电信号到达下一个路由器,路由器重复上述的分用过程,解析到网络层,取出其中的目的IP,查路由表找到下一设备在哪里,重新封装数据。
13.然后将数据交给数据链路层和物理层,重复上述过程,依次转发,最后达到用户的主机。
14.用户主机重复上面的分用过程,依次把数据取出来,最终交给应用程序。
15.浏览器拿到响应文本后,解析HTML代码,请求JS,CSS等资源,最后进行页面渲染,呈现给用户。
页面渲染一般分为以下几个步骤:
①解析HTML文件,构建DOM树
②解析CSS文件,构建CSSOM树(CSS规则树)
③DOM树与CSSOM树合成渲染树
④构建好渲染树之后,会过滤掉display:none 这种无需渲染的节点,将render tree渲染到页面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值