zoukankan      html  css  js  c++  java
  • 浏览器输入URL到返回页面的全过程

    【问题描述】

    在浏览器输入www.baidu.com,然后,浏览器显示相应的百度页面,这个过程究竟发生了什么呢?

       

    【第一步,解析域名,找到主机】

    正常情况下,浏览器会缓存DNS一段时间,一般2分钟到30分钟不等。如果有缓存,直接返回IP。

       

    缓存中如果没有查到IP,浏览器会做系统调用,读取主机的hosts文件,如果找到,直接返回IP。

       

    hosts文件里面还是没有找到,则直接去路由器中寻找DNS缓存,一般这个时候都能找到对应的IP。

       

    如果还是没有找到,ISP的DNS服务器就开始从根域名服务器开始递归搜索,从.com顶级域名服务器开始,一直到baidu的域名服务器。

       

    这个时候,浏览器就获取到了对应的IP。在解析的过程中,常常会解析出不通的IP,这是根据不同的用户,不同的网络供应商,所在的地域,等等等等进行计算给出的最优的IP地址。

       

    劫持DNS,可以屏蔽掉很多网点的访问。

       

    【第二步,浏览器与网站建立TCP连接】

    浏览器利用IP直接与网站主机通信。

       

    浏览器发出TCP(SYN=1,ACK=0)连接请求,主机返回TCP(SYN=1,ACK=1)应答报文,浏览器收到应答报文发现ACK标志位为1,表示连接请求确认。

       

    浏览器返回TCP(ACK=1)确认报文,主机收到确认报文,三次握手,TCP链接建立完成。

       

    【第三步,浏览器发起get请求】

    浏览器向主机发起一个HTTP-GET方法报文请求。

       

    请求中包含访问的URL,也就是http://www.baidu.com ,还有User-Agent用户浏览器操作系统信息,编码等。

       

    值得一提的是Accep-Encoding和Cookies项。

    Accept-Encoding一般采用gzip,压缩之后传输html文件。

    Cookies如果是首次访问,会提示服务器建立用户缓存信息,如果不是,可以利用Cookies对应键值,找到相应缓存,缓存里面存放着用户名,密码和一些用户设置项。

       

    【最后一步,显示页面】

    返回状态码,表示服务器已经成功响应后正常返回。

       

    在报文头里面Content-type为"test/html",浏览器以HTML形式呈现。

       

    不过,对于大型网站,一般都存在两个乃至上百个主机站点,往往都不会直接返回请求页面,而是重定向。

    这时候,返回的状态码就不再是200,而是"301,302"等以3开头的重定向码。

    浏览器在获取了重定向响应后,在响应报文中Location项找到重定向地址,浏览器重新第一步访问即可。

       

    最后再补充一点。

    重定向是为了负载均衡或者导入流量提高SEO排名

       

    利用一个前端服务器接受请求,然后负载到不同的主机上,可以大大提高站点的业务并发处理能力;

    重定向也可将多个域名的访问,集中到一个站点,

    由于baidu.com,www.baidu.com会被搜索引擎认为是两个网站,造成每个的链接数都会减少从而降低排名,永久重定向会将两个地址关联起来,搜索引擎会认为是同一个网站,从而提高排名。

       

      

  • 相关阅读:
    Binary Tree Inorder Traversal
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Majority Element
    Excel Sheet Column Number
    Reverse Bits
    Happy Number
    House Robber
    Remove Linked List Elements
    Contains Duplicate
  • 原文地址:https://www.cnblogs.com/liufarui/p/11321469.html
Copyright © 2011-2022 走看看