输入URL展现过程

1、 输入URL,回车

  1. 敲击某个键时,键盘内的处理器会先对键矩阵进行分析,而后将数据发送到计算机
  2. 计算机接收到来自键盘的信号,由键盘控制器(一种集成电路)进行处理,发送给操做系统
  3. 操做系统会分析,这些数据是否为系统命令,若不是,则将数据传给应用程序。
  4. 应用程序会分析这些数据是否为命令,若是不是命令,则会将数据做为内容接受,不然忽略

2、浏览器解析URL

  1. 浏览器会对URL进行检查,是否合法,若是不合法会将输入内容传给默认的搜索引擎
  2. 针对当前URL检查是否存在本地缓存,若是有缓存就直接跳过请求阶段,从缓存中去取资源

浏览器再获得URL后,调用Socket,使用TCP协议,HTTP请求会被封装,加入本地端口,目标端口等信息 IP地址是在IP协议中被封装的。但光有IP地址是不够的,由于设备是能够移动的,IP地址并不与设备绑定。因此还有一个MAC要被封装,每一个网卡的MAC地址都是固定且惟一的css

3、DNS解析

DNS其实是一个域名与IP对应的数据库,DNS解析主要是为了获取到域名对应的IP,用于下一步的链接创建html

DNS的解析会按照如下顺序尝试获取IP,任意一步找到直接返回IP:chrome

1. 查询浏览器缓存,浏览器会对最近访问的地址的DNS进行缓存,例如chrome对每一个域名会默认缓存60s
2. 检查系统缓存,也就是hosts文件中配置的域名与IP的对应关系
3. 获取路由器的DNS缓存
4. 查询ISP服务商DNS缓存,即本地服务器缓存
5. 最后手段:递归查询,以 根域名服务器 --> 顶级域名服务器 --> 极限域名服务器 的顺序搜索对应域名的IP
复制代码

经过Socket API发送数据,能够选择TCP或UDP协议数据库

1. Socket(套接字)是计算机之间进行通讯的一种约定或一种方式
2. 在应用层和传输层之间的一个抽象层
3. 它把TCP/IP层复杂的操做抽象为几个简单的接口
4. 供应用层调用已实现进程在网络中通讯
复制代码

3、创建链接;

根据上一步获取到的IP地址定位到目标主机,开始于其创建TCP链接,也就是三次握手创建链接:浏览器

  1. 第1次握手:客户端向服务器端发送请求(SYN=1)等待服务器确认;
  2. 第2次握手:服务器收到请求并确认,回复一个指令(SYN=1,ACK=1);
  3. 第3次握手:客户端收到服务器的回复指令并返回确认(ACK=1)。

4、服务器如何处理数据并返回数据

用上一步创建的链接发送http request请求命令和请求头信息缓存

服务器收到信息都会返回应答头信息bash

5、关闭TCP链接,

  • http1.1已经支持keep-alive
  • 根据Connection请求头,若是是keep-alive服务器就保持住tcp链接
  • response传输完后主动关闭tcp链接。
  • 固然如今浏览器都是http1.1都默认是keep-alive的,在浏览器tab关闭时,tcp链接关闭。

6、检查状态码

若是response的状态码出现3XX(跳转),未受权(401),错误(4XX和5XX)会有不一样的处理。服务器

7、准备呈现

若是response status 为304(内容未更改)浏览器则会从原本缓存加载内容进行呈现网络

8、 浏览器如何处理服务器的响应

经过MIME类型,浏览器知道要用页面渲染引擎来处理HTML文件,整个渲染过程都由浏览器来处理,主要分为如下步骤:tcp

  1. 解析资源文件(html)的源代码,构建出一个DOM树
  2. 解析CSS,造成css对象模型CSSOM,其中非法的css会直接被忽略掉
  3. 利用DOM和CSSOM构建一个渲染树
  4. 根据渲染树直接把页面绘制到浏览器窗口中

根据网络模型来的过程

应用层

HTTP、DNS

传输层

TCP/UDP

三网络层

IP

链路层

相关文章
相关标签/搜索