zoukankan      html  css  js  c++  java
  • 从输入一个url到加载页面发生了什么?

      惭愧了,很久之前被面试的时候也有面试官问了我这个问题,但是当时回答的很不满意,于是回头看了很多资料,现在也整理一下。

      大致可总结为以下几个步骤:

      1. DNS解析。

      2. TCP链接。

      3. 发送HTTP请求。

      4. 服务器处理并且返回HTTP请求。

      5. 浏览器渲染界面。

      6. 连接结束

    一 DNS解析

      简单点说就是寻找域名对应的IP的这个过程。在这个过程中经历了一下几个环节,浏览器缓存=>系统缓存=>路由器缓存=>IPS服务器缓存=>根域名服务器缓存=>顶级域名服务器缓存=>主域名服务器缓存。

      1. 浏览器缓存。在谷歌浏览器下搜索chrome://net-internals/#dns,可以看到dns缓存信息。

      2. 系统缓存。系统缓存可以在命令行中输入 vi  /etc/hosts (linux中),查看,并且设置,当然可以设置假的,用于本地调试。

      DNS负载均衡

      DNS可以返回一个合适的机器的IP给用户,例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等,这种过程就是DNS负载均衡,又叫做DNS重定向。大家耳熟能详的CDN(Content Delivery Network)就是利用DNS的重定向技术,DNS服务器会返回一个跟用户最接近的点的IP地址给用户,CDN节点的服务器负责响应用户的请求,提供所需的内容。

    二 TCP连接

      三次握手,确保连接可靠性。

    三 HTTP相关

      当服务器与主机建立了连接之后,下面主机便与服务器进行通信。网页请求是一个单向请求的过程,即是一个主机向服务器请求数据,服务器返回相应的数据的过程。

    1. 浏览器根据 URL 内容生成 HTTP 请求,请求中包含请求文件的位置、请求文件的方式等等;

    2. 服务器接到请求后,会根据 HTTP 请求中的内容来决定如何获取相应的 HTML 文件;

    3. 服务器将得到的 HTML 文件发送给浏览器;

    4. 在浏览器还没有完全接收 HTML 文件时便开始渲染、显示网页;

    5. 在执行 HTML 中代码时,根据需要,浏览器会继续请求图片、CSS、JavsScript等文件,过程同请求 HTML ;

  • 相关阅读:
    轻重搭配
    EF的优缺点
    使用bootstrap-select有时显示“Nothing selected”
    IIS发布 HTTP 错误 500.21
    js添加的元素无法触发click事件
    sql server查看表是否死锁
    sql server把一个库表的某个字段更新到另一张表的相同字段
    SQLSERVER排查CPU占用高的情况
    SQL server中如何按照某一字段中的分割符将记录拆成多条
    LINQ to Entities does not recognize the method 'System.DateTime AddDays(Double)' method, and this method cannot be translated into a store expression.
  • 原文地址:https://www.cnblogs.com/zhouwenbo/p/8404259.html
Copyright © 2011-2022 走看看