从在浏览器地址栏输入地址到按下回车之后到底都发生了什么?

遇见这个题好久了,看到很多答案,有很多坑也有很多精华,在这里整理出自己的答案~如果有哪些步骤不合理或者存在问题希望小可爱们指正~

  • 在浏览器地址栏输入地址的时候,浏览器就已经在从书签或者历史记录等地方中查询并进行智能补全。同时浏览器对用户输入的网址做初步的格式化检查,只有通过以上检查才会进入下一步。
  • DNS查询:
    (1)按下回车后首先会检查浏览器中是否有缓存,如果有且未过期那么直接返回,否则
    (2)会去查找系统运行内存中的缓存,过程同上,如果依旧没有
    (3)会去查找本地的hosts文件配置,如果仍无对应地址的IP会去请求
    (4)本地的网络服务提供商(ISP),因为一些ISP也会提供缓存服务,如果依旧没有本地的DNS会去
    (5)请求根域名服务器 (比如baidu.com.其完整写法应该是后边有一个点,那个点叫根域名服务器,全球一共13台,DNS服务器知道这13台根域名服务器的地址。) ,但是根域名服务器并不知道具体的IP地址,它将会返回它下一级的域名服务器即顶级域名服务器 ( 顶级域名是国家通用比如.com.cn.org 等) 地址给本地的DNS,
    (6)本地的DNS会去请求顶级域名服务器,顶级域名服务器会返回给他下一级域名服务器的地址
    (7)本地域名服务器会通过迭代最终查询到网址对应的IP返回给客户端
  • 建立连接: 客户端与服务器通过三次握手建立连接(详情见之前的笔记)
  • 发送请求: 连接建立以后开始http请求,发送请求报文。请求报文一般包括请求行:包含请求的方法、协议等;请求头:一些附加的信息,一般以键值对的形式存在,比如设置服务器缓存等等;空行:是请求头和请求主体之间必须的;请求主体:传给后端的参数。
  • 接收响应:在接收到客户端的请求并解释之后会返回给客户端HTTP响应,响应报文格式类似请求报文。
  • 渲染页面:
    (1)解析html,构建DOM树
    (2)解析css,构建CSS规则树
    (3)合并DOM和CSS规则树,生成render渲染树
    (4)布局render树,包括位置、尺寸信息等
    (5)绘制render树,包括页面像素信息等等
    (6)浏览器会将各层的信息发送给 GPU,GPU 会将各层合成( composite ),显示在屏幕上
    ⚠️在文档请求不完全的情况下就开始渲染页面,同时,如果在解析的过程中遇到script的时候,文档的解析将会停止下来,立即解析执行脚本,如果脚本是外部的,则会等待请求完成并解析执行。所以,为了不阻塞页面地呈现,一般会把script脚本放在文档的最后。
  • 断开连接: 通过四次挥手断开连接(具体四次挥手过程详见之前的笔记)

过程中用到的协议:
(1) 应用层:HTTP(WWW访问协议),DNS(域名解析服务)
(2) 传输层:TCP(为HTTP提供可靠的数据传输),UDP(DNS使用UDP传输)
(3) 网络层:IP(IP数据数据包传输和路由选择),ICMP(提供网络传输过程中的差错检测),ARP(将本机的默认网关IP地址映射成物理MAC地址)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值