• 从输入URL到页面展现的全过程


    在比较全面的学习了计算机网络之后,我们可以来谈一谈生活中经常遇到的一个比较经典的问题,就是描述一下从输入url到页面返回的全过程。

    1.      我们输入一个域名:www.baidu.com,然后点击确认;

    2.      浏览器查找域名的IP地址。查找过程如下:

    首先是浏览器缓存,浏览器会缓存DNS记录一段时间;

    如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用,获取系统缓存中的记录;

    然后是路由器缓存,路由器一般会有自己的缓存;

    如果前者都没有找到,就需要从本地域名服务器开始进行DNS查询了。详细的DNS查询过程我在DNS工作原理及过程中讲到过。

    3.      现在浏览器找到了域名的IP地址,则需要向Web服务器建立TCP连接,然后发送HTTP请求了。TCP连接过程我在TCP中讲到过,具体的请求过程我在HTTP中讲到过。

     

    好吧,我们结合DNS、TCP和HTTP来详细地说一下输入url到页面返回的全过程吧。

    1.      我们输入一个域名:www.baidu.com  

    2.      浏览器查找浏览器缓存,如果有域名的IP地址则返回,如果没有继续查找;

    3.      系统查找系统缓存,如果有域名的IP地址则返回,如果没有继续查找;

    4.      路由器查找路由器缓存,如果有域名的IP地址则返回,如果没有继续查找;

    5.      本地域名服务器采用迭代查询,它先向一个根域名服务器查询;

    6.      根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP地址;

    7.      本地域名服务器向顶级域名服务器dns.com进行查询;

    8.      顶级域名服务器dns.com告诉本地域名服务器,下一次应查询的权限域名服务器dns.baidu.com的IP地址;

    9.      本地域名服务器向权限域名服务器dns.baidu.com进行查询;

    10.  权限域名服务器dns.baidu.com告诉本地域名服务器,所查询的主机www.baidu.com的IP地址;

    11.  本地域名服务器最后把查询结果告诉主机;

    12.  主机浏览器获取到Web服务器的IP地址后,与服务器建立TCP连接;

    13.  浏览器所在的客户机向服务器发出连接请求报文;

    14.  服务器接收报文后,同意建立连接,向客户机发出确认报文;

    15.  客户机接收到确认报文后,再次向服务器发出报文,确认已接收到确认报文;

    16.  此处客户机与服务器之间的TCP连接建立完成,开始通信;

    17.  浏览器发出取文件命令:GET;

    18.  服务器给出响应,将指定文件发送给浏览器;

    19.  浏览器释放TCP连接;

    20.  浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;

    21.  服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;

    22.  服务器数据传输完毕后,向客户机发送连接释放报文;

    23.  客户机接收到报文后,发出确认,然后等待一段时间后,释放TCP连接;

    24.  浏览器显示页面中所有文本。

     

    以上就是从输入url到页面返回的全部详细过程了。

    参考:http://blog.csdn.net/mevicky/article/details/46789381

  • 相关阅读:
    Python 爬取网易云歌手的50首热门作品
    对于AES和RSA的个人理解
    sqlzoo
    项目部署 uwsgi+nginx+crm
    nginx学习
    redis补充知识--- 缓存击穿、缓存雪崩、缓存穿透
    redis-cluster 搭建
    redis主从复制
    redis-sentinel (哨兵)
    redis 发布订阅
  • 原文地址:https://www.cnblogs.com/seasondaily/p/7718945.html
Copyright © 2020-2023  润新知