zoukankan      html  css  js  c++  java
  • 输入URL展示过程

    一、 输入URL,回车

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

    二、浏览器解析URL

    1. 浏览器会对URL进行检查,是否合法,如果不合法会将输入内容传给默认的搜索引擎
    2. 针对当前URL检查是否存在本地缓存,如果有缓存就直接跳过请求阶段,从缓存中去取资源
    浏览器再得到URL后,调用Socket,使用TCP协议,HTTP请求会被封装,加入本地端口,目标端口等信息
    IP地址是在IP协议中被封装的。但光有IP地址是不够的,因为设备是可以移动的,IP地址并不与设备绑定。所以还有一个MAC要被封装,每个网卡的MAC地址都是固定且唯一的

    三、DNS解析

    DNS实际上是一个域名与IP对应的数据库,DNS解析主要是为了获取到域名对应的IP,用于下一步的连接建立

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

    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. 供应用层调用已实现进程在网络中通信

    三、建立连接;

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

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

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

    用上一步建立的连接发送http request请求命令和请求头信息

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

    五、关闭TCP连接,

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

    六、检查状态码

    如果response的状态码出现3XX(跳转),未授权(401),错误(4XX和5XX)会有不同的处理。

    七、准备呈现

    如果response status 为304(内容未更改)浏览器则会从本来缓存加载内容进行呈现

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

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

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

    根据网络模型来的过程

    应用层

    HTTP、DNS

    传输层

    TCP/UDP

    三网络层

    IP

    链路层

  • 相关阅读:
    IE6下实现Width:auto
    Dynamic Linq 的Like扩展
    用一句JQuery代码实现表格的简单筛选
    jquery:利用jsonp跨域访问转载
    LINQ动态组合查询
    Windows服务中Timer组件
    正则表达式笔记转载
    继LINQ动态组合查询PredicateExtensions讲解
    错误笔记:在OleDb执行下Access ,程序不报错,但是Update也更新不成功的
    jQuery 1.4 版本的十五个新特性转载
  • 原文地址:https://www.cnblogs.com/magicg/p/13627732.html
Copyright © 2011-2022 走看看