输入地址栏的背后

01: 用户在地址栏输入关键字,地址栏会判断是搜索内容还是url地址

         I: 搜索内容 => 浏览器默认搜索引擎加上搜索信息合成url

        II: url地址  => 浏览器加上协议(http|https)合成url

   

    02: 按下回车,浏览器导航loading状态,页面还是之前页面,等待新的数据返回渲染

    03: 浏览器进程通过进程间的相互通信IPC, 把url传递给网络进程

    04: 网络进程接收到url地址后,先查找有没有缓存

        I:  有缓存返回换新资源(强缓存+协商缓存)

        II: 没有缓存,则发出真正的网络请求 => 先获取域名IP,自动从hosts问就按找到映射的ip地址, 如果没有找到则提交给DNS域名解析(本地DNS服务商没有,则去上层查找,最后返回)找到IP

   

    05: 利用IP和服务器建立TCP链接(3次握手)

         防止和客户端连接失败,服务端占用连接资源(检测双方都有数据链接能力)

         I: 客户端 => 服务端 发送一个syn码

        II: 服务端 => 客户端  服务端接收到syn码,一并返回 syn码 + ACK码给浏览器

       III:浏览器接收ACK码,验证是否正确,发送数据,建立数据连接


 

    06: 建立连接后,浏览器构建数据包(请求行,头,正文,相关Cookie等数据附加到请求头)给服务端

    07: 服务端接收到数据, 构建响应数据(包括响应行,响应头,响应正文),返回给浏览器网络进程(四次挥手)

           I: 客户端 => 服务端  发送一个FIN码,告诉服务器,我数据传输完成,可以断开链接了

          II: 服务端 => 客户端  服务端接收到FIN码,返回 FIN码 + ACK码给浏览器, 我可能数据没处理完毕,等一下

         III: 服务端 => 客户端  服务继续发送FIN码 + ACK码给浏览器,告诉浏览器数据,我数据处理完毕,你可以断开了

        IIII: 客户端 => 服务端  浏览器接收到FIN+ACK码,然后发送ACK码给服务器,告诉服务器,我已经断开了,你可也以断开了



 

    08: 网络进程解析HTTP出来响应头数据,并将其转发给浏览器进程

         I: 状态码301 | 302, 则需要从响应头的Location字段,重定向新的地址

        II: 状态码200 服务器返回了数据

       III: 响应头Content-Type字段, 告诉浏览器服务器返回的数据格式,是要页面渲染还是下载(浏览器下载管理器)

   

    09: 浏览器进程接收到网络进程的响应头数据之后,发出“提交文档”消息告知渲染进程,渲染进程开始和网路进程建立数据通道,并传输文档给渲染进程, 传输完毕,渲染进程会发出“确认提交”消息给浏览器进程



 

    10: 浏览器进程接收到确认后,开始更新浏览器界面内容, 此时渲染进程可能没有渲染完毕,等渲染完毕后则发送一个消息给浏览器进程,此时浏览器停止loading加载图标转动

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值