zoukankan      html  css  js  c++  java
  • 浏览器输入网址后的事情~

    • 浏览器查找域名的IP地址

    一条域名的DNS记录会在本地有两种缓存:浏览器缓存和操作系统(OS)缓存。

    在浏览器中访问的时候,

    1、会优先访问浏览器缓存,查看缓存中有没有相关类名以及缓存的ip地址(这个缓存的时间大概只有一分钟)。如果有缓存,会查看缓存是否过期。

      如何查看浏览器的缓存,以chrome为例:在网址处输入 chrome://net-internals/#dns (具体内容我也没细看,,)

    2、如果浏览器没有缓存或者缓存已经失效,则访问OS缓存(即操作系统自身的DNS缓存),

    3、如果还没有找到,会尝试读取本地的HOST文件,

    4、如果在HOST文件中也没有找到,浏览器会发起一个DNS的系统调用,访问DNS服务器,一般是ISP(宽带运营商提供),宽带运营商服务器查找自身的缓存,查看有无过期。

      如果未找到或过期,运营商服务器会发起一个迭代DNS解析的请求(首先找根域的DNS的IP地址,比如说找https://www.cnblogs.com/的ip地址,就会先找到com域的顶级域的ip地址,然后再找到cnblogs.com的ip地址,然后返回并缓存)。

      运营商服务器把结果返回操作系统内核同时缓存起来,操作系统内核把结果返回给浏览器,最终浏览器拿到了域名对应的ip地址。

    • 浏览器给web服务器发送一个HTTP请求

    5、浏览器获得域名对应的ip地址后,发起HTTP“三次握手

      浏览器以一个随机的端口向服务器的web程序发起TCP连接请求,连接请求通过层层路由设备到达服务器网卡,然后进入到内核的TCP/IP协议栈,还有可能经过防火墙的过滤,最终到了web服务端,建立起TCP/IP连接。

    6、TCP/IP连接建立起来后,浏览器就可以向服务器发送HTTP请求。比如用HTTP的GET方法请求一个根域里的一个域名。

    • 网站服务的永久重定向响应

    服务器给浏览器响应一个301永久重定向响应。为什么服务器一定要重定向而不是直接发用户想看的网页内容?其中一个原因与搜索引擎排名有关。如果一个页面有两个地址,搜索引擎会认为它们是两个网站,结果造成每一个搜索链接都减少从而排名降低。但搜索引擎知道301永久重定向的意思,这样会把访问地址归到同一个网站排名下。用不同的地址会造成缓存友好性变差,当一个页面有好几个网址时,可能会在缓存里出现好几次。

    • 浏览器跟踪重定向地址

    现在浏览器知道了要访问的正确地址,会发送另一个获取请求

    • 服务器处理请求

    7、服务器端接收到这个请求,根据路径参数,经过后端的一些处理之后,把处理后的一个结果的数据返回给浏览器。比如是博客园的网页,就会把完整的HTML页面代码返回给浏览器。

    • 浏览器开始显示HTML

    8、浏览器拿到完整的HTML页面代码,在解析和渲染这个页面的时候,里面的JS、CSS、图片静态资源,同样也是一个个HTTP请求,都需要经过上面的步骤

    9、浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户。

        

  • 相关阅读:
    glBlendFunc的几种常用情况
    android发布版本的几个命令
    android拾遗——Android 动画学习笔记
    android拾遗——四大基本组件介绍与生命周期
    C++拾遗——重新开始
    mark Java NIO
    转 mysql中int、bigint、smallint 和 tinyint的区别与长度的含义
    mysql到redis的复制
    MySQL UDF(自定义函数)
    windows下redis 和 hiredis的编译与使用
  • 原文地址:https://www.cnblogs.com/lianglanlan/p/8058611.html
Copyright © 2011-2022 走看看