浅述从输入网址到网页呈现的过程

这是一道非常经典的面试题,需要对网络应用是如何工作有一个层次化的认知,涉及到浏览器、HTTP协议、网络服务器等相关知识。在这里只发表下个人初步的理解。

  • 在浏览器地址栏输入目标网站的URL
    例如: https://www.baidu.com/

    其中,https:// 代表使用ssl传输的超文本传输协议,www.baidu.com 代表域名。

  • 域名解析,查找域名对应的IP地址
    1.浏览器缓存——浏览器会缓存DNS记录一段时间。
    2.系统缓存——如果在浏览器缓存里没有找到需要的记录,浏览器会调用系统缓存中的记录(windows系统存储在host文件中)。
    3.路由器缓存——将查询请求发向路由器,一般会有自己的DNS缓存。
    4.ISP DNS 缓存——即向互联网服务提供商(电信、联通等)查找。
    5.如果经历以上四步还无法找到对应IP,则向根域名服务器查找域名对应IP地址。根域名服务器把请求转发到下一级,直到找到对应IP。

  • 与服务器建立连接并给web服务器发送一个HTTP请求
    浏览器根据连接到web服务器(一般为TCP/IP协议),向服务器发送请求,发送请求的过程中,浏览器会向Web服务器以Stream(流)的形式传输数据,告诉Web服务器要访问服务器里面的哪个Web应用下的Web资源。

  • 服务器处理请求
    服务器(常见的有 Apache、Nginx、IIS、Lighttpd)接收到浏览器传输的数据后,开始解析接收到的数据,生成HTML文件并返回给浏览器。

    浅述从输入网址到网页呈现的过程_第1张图片

  • 浏览器处理
    HTML字符串被浏览器接受后被一句句读取解析。
    解析到link标签后重新发送请求获取css
    解析到script标签后发送请求获取js,并执行代码
    解析到img标签后发送请求获取图片资源
    浏览器根据HTMLCSS计算得到渲染树,绘制到屏幕上,js会被执行。

你可能感兴趣的:(浅述从输入网址到网页呈现的过程)