【浅谈浏览器工作原理】(1) 地址导航和数据返回

35 篇文章 1 订阅

1 我们在地址栏输入url,然后回车导航,请求到网页内容,并在页面显示,这个过程其实是很复杂的;

2 在web性能相关优化措施中,可以在地址导航和返回过程中通过优化硬件及带宽方式提高性能

下面让我们对浏览器工作原理简单了解下;

1 导航

        导航是加载网页的第一步。每当用户通过在地址栏中输入URL、单击链接、提交表单以及其他操作来请求页面时,都会发生这种情况。

        Web 性能的目标之一是最大限度地减少完成导航所需的时间。在理想情况下,这通常不会花费太长时间;但是网络延迟和带宽这两个因素可能会影响导航性能。

导航过程发生了什么?

(1) 第一步:DNS解析 (找到 域名所在的服务器

        导航到网页的第一步是找到该页面资源所在的位置,如果导航到http://xiaobaigis.com,则 HTML 页面位于 IP 地址为106.184.216.34 的服务器上。如果您从未访问过此站点,则必须进行 DNS 查找。

        IP可能会被缓存一段时间,后续可能会从缓存中检索IP地址来加速后续请求;而不是再次请求名称服务器

DNS解析过程我们称之为DNS寻址,这里不做详细介绍;

(2) 第二步:TCP握手建立 客户端与服务器的连接

        一旦知道IP地址,浏览器会通过TCP三次握手建立与服务器的连接;这种机制目的在让两个尝试通信的实体(浏览器和web服务器)可以在传输数据之前协商网络TCP套接字连接的参数,通常是通过HTTPS

        TCP 的三向握手技术通常被称为“SYN-SYN-ACK”——或者更准确地说是 SYN、SYN-ACK、ACK——因为 TCP 传输了三个消息来协商和启动两台计算机之间的 TCP 会话。是的,这意味着在每个服务器之间来回传递三个消息,并且尚未发出请求。

        SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。

        ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。

(3) 第三步:TLS协商加密 客户端与服务器的连接通道

        对于通过 HTTPS 建立的安全连接,需要另一个“握手”。这种握手,或者更确切地说是TLS协商,确定将使用哪个密码来加密通信,验证服务器,并在开始实际传输数据之前建立安全连接。这需要在实际发送内容请求之前再到服务器进行 3 次往返。

        具体的TSL加密过程及秘钥相关点不做详解,后续会整理。

        虽然TLS连接安全增加了页面加载时间,但安全连接带来的延迟费用成本是可以接受的,因为在浏览器和 Web 服务器之间传输的数据不能被第三方解密。

        总结下来上面的8次往返就是三步:查找服务器、跟服务器建立连接、跟服务器加密;如下 

        

 经过 8 次往返,浏览器终于​​可以发出请求了。

2 回复 (返回数据

        一旦我们建立了与 Web 服务器的连接,浏览器就会代表用户发送一个初始HTTPGET请求,对于网站来说,该请求通常是一个 HTML 文件。一旦服务器收到请求,它将回复相关的响应头和 HTML 的内容。

        服务器返回数据包遵循一个14kb原则;该原则是TCP慢启动中的一个概念;

        举例解释:如果浏览器发送的get请求,请求一个10MB的html文件,但是服务器带宽只有2MB,那么很容易造成网络拥塞,导致数据丢失;所以就出现了TCP慢启动的概念;第一次默认返回14KB数据,下一次28KB,后续指数增加;直到确认数据包达到硬件或网络带宽传输阈值时,开始以这个速度稳定传输

        什么是慢启动?

         最初的TCP的实现方式是,在连接建立成功后便会向网络中发送大尺寸的数据包,假如网络出现问题,很多这样的大包会积攒在路由器上,很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。

        因此现在的TCP协议规定了,新建立的连接不能够一开始就发送大尺寸的数据包,而只能从一个小尺寸的包开始发送,在发送和数据被对方确认的过程中去计算对方的接收速度,来逐步增加每次发送的数据量(最后到达一个稳定的值,进入高速传输阶段。相应的,慢启动过程中,TCP通道处在低速传输阶段),以避免上述现象的发生。这个就是慢启动。

        什么是拥塞控制?

        当服务器以 TCP 数据包的形式发送数据时,用户的客户端通过返回确认或 ACK 来确认交付。连接容量有限,具体取决于硬件和网络条件。如果服务器发送太多数据包太快,它们将被丢弃。意思是,不会有任何承认。服务器将此注册为丢失的 ACK。拥塞控制算法使用已发送数据包和 ACK 流来确定发送速率,然后根据网络条件的能力发送对应数量的数据包。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨大大28

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值