浏览器工作原理-HTTP协议

浏览器工作原理-HTTP协议

浏览器是多进程还是单进程的?

都知道js是单线程,js的运行环境在浏览器的v8引擎,那么浏览器也是单进程的吗?浏览器早期是将所有的功能统一在一个进程里面进行的,而现在的浏览器是多进程多线程的。js的执行环境v8只归浏览器的一个进程中的一个线程。

浏览器的进程有几个:

  1. 浏览器主进程: 负责界面显示,子进程的管理,提供存储功能。
  2. GPU进程:负责3D绘制相关的处理
  3. 渲染进程:任务是将html、css、js转换为页面。每一个tab页都是一个渲染进程。这也是为什么我们一个页面崩了其他页面不会受到影响。v8也在这个进程里面。
  4. 网络进程:负责网络资源的加载。
tcp/ip协议

我们的以太网有7层模型(osi模型),tcp/ip的四层模型对应osi的-层模型。而模型中的下层是为上层服务的。

tcp/ip的四层从上往下,分为应用层、传输层、网络层、数据链路层,我们的浏览器是在应用层。那么下层为上层服务来推,应用层有数据要传输,那么首先要知道传输给谁?谁传输的?ip地址可以做到这一点。因为ip在每一个电脑都是唯一的。所以可以用来确保传递到正确的地方。

应用层的数据块先到传输层,传输层给数据打上传输的标记,再到网络层。网络层就将数据加上ip报文。最后底层传输。

ip的作用

ip的作用就是标记谁传的,传给谁的标识符。解析、添加ip等信息。

tcp的作用

tcp的作用就是添加/解析传输的东西。

tcp的传输分为三个阶段
  1. 建立链接

    在传输之前需要通过和服务器三次握手,建立共识之后,开始传输。通过三次交互确定号连接已经准备好了。

  2. 传输阶段

  3. 关闭链接

    关闭链接有四次挥手,确定好数据已经传输完毕。通过四次取确认数据是否已经传输完毕。

http协议

http主要是用于客户端像服务其请求资源或者发送数据。

我们发送get请求整个流程是怎样的?

  1. 发起请求

    浏览器会构建请求的行,行里包括请求方法、资源、http版本

  2. 查找缓存

    浏览器部分内容会在本地缓存起来,所以我们发起请求会根据缓存策略去查找是否有缓存,有缓存直接读取缓存。

  3. 准备ip地址和端口等信息

    表明我们向什么地方请求,告知服务器从什么地方来。

  4. tcp链接

    需要等到tcp链接建立完成。

  5. 发送http请求

输入url到页面显示流程

这一个完整的案例可以把之前的所有阶段串联起来。

输入url
  1. 用户输入url会有判断是搜索的关键字还是一个正常的ip或者域名。
  2. 是关键字,使用浏览器默认的搜索引擎进行搜索。
  3. 是域名浏览器主进程将这个请求转接到网络进程,由网络进程实际发起网络请求。但是在请求之前需要进入域名解析过程。
域名解析
  1. 域名解析的作用是将域名转换为ip。因为ip才是我们唯一识别服务器的标识。域名解析先是客户端查找本地缓存,找到了直接返回ip没找到向父级域名服务器请求,父级域名服务器查找本地缓存,找到返回,没找到,父级域名服务器像区域域名服务器请求,区域域名服务器又会查找自己的本地缓存。找到返回,没找到在向根域名服务器请求,根域名服务器就找缓存,缓存没有。就去自己的库找,没找到,返回错误。找到返回 。找到了服务器唯一的ip,
请求资源
  1. 请求,拿到了ip,网络进程就可以发起http请求,带上请求信息,以及唯一标识(ip)的信息。在等待tcp链接建立成功。通过tcp传输数据,
  2. 响应,服务器接收到请求,做出相应的返回。
  3. 断开tcp链接。如果在请求头或者返回头里面添加了保持链接的标识tcp将保持链接。下一次请求就省去了tcp建立链接的三次握手。
渲染

浏览器从服务器取得了html、css、js,渲染进程将利用这些东西,对页面进行渲染

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值