认识浏览器-写在前面

访问原理.png

写在前面

浏览器的工作就是解析 HTTP 协议然后将内容渲染出来,了解浏览器之前得先做一个简单的过渡,重温一下 HTTP。

HTTP

  • 超文本传输协议(HTTP)是一种 通 信 协 议 \color{#db5a6b}{通信协议} ,它允许将超文本标记语言(HTML)文档从web服务器传送到客户端的浏览器。
  • HTTP,它于1990年提出,是一个属于 应 用 层 的 面 向 对 象 的 协 议 \color{#db5a6b}{应用层的面向对象的协议}

Web 与 HTTP

  • WEB 是一种基于超文本和 HTTP 的、全球性的、动态交互的、跨平台的分布式系统。
  • 建立在 Internet 上的一种 网 络 服 务 \color{#db5a6b}{网络服务} ,供用户上网’冲浪’的时候提供图形化、易于访问的直观界面,随着web的发展网页不仅仅是信息预览的页面还能进行很多复杂的交互,随着短视频的兴起,诞生了很多视频合成的web系统,剪贝就是一个很优秀的案例。其中的文档及超链接将 Internet 上的信息节点组织成一个互为关联的网状解构。

QUIC协议

相信各从事互联网的同学从面试开始就已经很熟悉 HTTP 0.9~2.0 的各个版本的特性及HTTP 加 上 SSL/TLS 协议而来的 HTTPS 这里就不再赘述。QUIC全称 quick udp internet connection,因为其对比广泛应用的 HTTP 2的优势之大,逐渐进入大家的视野,HTTP 3.0就是重新实现了一遍QUIC协议而诞生。

http3.0成为新的标准为时尚早,先简单概括它的优点,如下:

  • 减少 TCP、SSL/TLS 握手的时间
    TCP 建立链接需要经过三次握手,这导致建立 TCP 的延迟,TLS 也需要两个 RTT ,抛开延迟延迟不说,TCP 和 TLS 由于机制问题都无法避免队头阻塞的问题,而QUIC 协议选择了 UDP 协议,没有握手的概念,它在应用程序层面实现了 TCP 的可靠性、TLS 的安全性、HTTP2 的并发性。
  • 可控的拥塞控制
    TCP 协议的拥塞控制必须基于操作系统到操作系统之间的网络协议栈。QUIC 在应用程序层面能轻松切换不同的拥塞控制算法,根据场景配置好,甚至不需要停止服务 reload 一下就能切换。
  • 解决报文重传的歧义问题:
    QUIC 和 TCP 都是可靠协议,TCP 重传请求里的 seq 保持不变,这会使重传产生歧义,响应的这个是原始请求还是重传请求不好判断,而 QUIC 每个请求的 Packet Number 都严格递增,解决了这个问题。
  • 报文加密
    使用 TCP 传输报文的时候头部没有经过加密和认证,传输过程很容易被网络设备篡改,注入和窃听。QUIC 几乎所有报文头部都经过认证,报文的 body 都经过加密,一旦传输过程被修改也能及时发现,有效地降低了安全风险。
  • 保持连接
    TCP的连接是由四元组标识的(源 IP,源端口,目的 IP,目的端口),一旦切换网络,比如从 WIFI 和 4G 的切换,客户端 IP 肯定会改变,服务端需要重新建立 TCP 连接。而 QUIC 是以一个64位随机数作为 ID 来标识的,只要 ID 不变连接依然维持着不会中断。

HTTP 数据传输过程:

传输过程

DNS域名解析:

通常域名更容易让人记住,所以访问一个网站通常是使用域名进行访问的。DNS
服务提供 域 名 到 I P 地 址 之 间 的 解 析 服 务 \color{#db5a6b}{域名到IP地址之间的解析服务} IP
DNS解析步骤:
1⃣️查找本地映射:本地电脑经常访问的域名会跟其对应的 ip 地址建立一个映射关系存到系统文件(hosts)里,域名解析之前会优先进入 hosts 文件里寻找是否存在将要访问的域名和其对应 ip 的映射,有则直接使用它。
2⃣️向 DNS 服务器求助:上步没有查到 ip 的映射,系统会向本地的 DNS 服务器发送请求查询域名对应的 ip 地址,本地的 DNS 若没查到对应的 ip 地址,如果本地的 DNS 服务器设置了转发模式,会逐层的向上层 DNS 服务器求助,否则直接到根 DNS 服务器,过程查询到 ip 地址会回传到浏览器。

回溯 HTTP 事务处理过程

从浏览器浏览一个页面:
1、我们将从 url 里分解出:协议名、主机名、端口号、路径等信息
2、DNS 服务解析出主机对应的 ip 地址
3、将 ip 地址和其他信息封装成 HTTP 请求的数据包(应用层)
4、将数据包封装成 TCP 包,建立 TCP 连接,三次握手(传输层)
5、在 HTTP 工作之前,客户端和服务器首先要通过 TCP 协议和 IP 协议组成的互联网连接起来(网络层)
6、发送 HTTP 请求报文到服务器
7、服务器接收到请求返回 HTTP 响应报文给客户端,释放 TCP 连接。响应报文里面会有状态码、协议版本号、成功或失败的状态码、MAC 信息、服务器信息等数据
8、浏览器根据服务器返回的报文里的状态吗做响应的处理,失败提醒或成功渲染页面。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值