• 浏览器输入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会被搜索引擎认为是两个网站,造成每个的链接数都会减少从而降低排名,永久重定向会将两个地址关联起来,搜索引擎会认为是同一个网站,从而提高排名。

       

      

  • 相关阅读:
    C# 连接 Oracle 的几种方式
    Mac电脑卸载软件后删除残余图标
    文件监视器数量达到系统限制
    Android实现伸缩弹力分布菜单效果
    XMPP协议实现原理介绍
    Android开发之日历控件实现
    OpenGL开发之旅基础知识介绍
    Android in Mono开发初体验之DataBase
    JAVA实现随机无重复数字功能
    Android实现宫格图片连续滑动效果
  • 原文地址:https://www.cnblogs.com/liufarui/p/11321469.html
Copyright © 2020-2023  润新知