zoukankan      html  css  js  c++  java
  • 从输入url到页面加载完的过程中都发生了什么事情

    这其实是一个经典的面试题了,都可以自由发挥各个方面,说出自己的理解,而且涉及的面也是巨多,就看怎么看待了。

    URL,英文是Uniform / Universal Resource Locator,中文的翻译就是统一资源定位符,俗称网页地址,简短的说法是网址,用于完整地描述Internet上网页和其他资源的地址的一种标识方法。

    它从左到右由如下部分构成:

    1.   传送协议protocol:最常用的是HTTP协议(超文本传输协议),它也是目前WWW中应用最广的协议;其他也还有ftp、file、https、、mailto、git等,当然也有自定义的协议(私有协议),例如tencent等;

    2.   主机host:通常为域名或者IP地址,当然在其前面还可以有连接到服务器所需的用户名和密码;

    3.   端口号port:以数字形式表示,每种协议都有自己默认的端口号,例如http协议的默认端口号就是80,https的默认端口号就是443等;

    4.   路径path:以“/”字元区别路径中的每一个目录名称,一般表示的就是主机上的一个目录或文件地址;

    5.   查询query:以“?”字元为起点,每个参数以“&”隔开,再以“=”分开参数名称与其对应的值;

    6.   片段fragment:也就是在浏览器环境下location的hash值,用于指定网络资源中的片断,一般用于定位到某个位置。

    介绍了URL,下边直说最简单的通过浏览器发起HTTP请求资源过程,没有代理,通过域名访问的情况,将要发生如下事情:

    1.   浏览器查询缓存,如果缓存存在跳到第9步;

    2.   浏览器询问操作系统服务器的IP地址;

    3.   操作系统做DNS查询,返回IP地址给浏览器;

    4.   浏览器打开对服务器的TCP连接;

    5.   浏览器通过TCP连接发送HTTP请求;

    6.   浏览器接收HTTP响应并且可能关掉TCP连接,或者是重新使用连接处理新请求(也就是keepalive);

    7.   浏览器检查HTTP响应是否为一个重定向(3xx 结果状态码 ),一个验证请求(401),错误(4xx 5xx)等等,这些都是不同响应的正常处理(2xx);

    8.   如果响应可缓存,将存入缓存;

    9.   浏览器解码响应(例如:如果它是gziped压缩);

    10.   浏览器决定如何处理这些响应(例如,它是HTML页面,一张图片,一段音乐);

    11.   浏览器展现响应,对未知类型还会弹出下载对话框(现在一般不会弹出了,用户对浏览器设置而定)。

  • 相关阅读:
    scrapy爬虫框架入门教程
    wing IDE破解方法
    python网络画图——networkX
    Flask Web Development —— Web表单(上)
    pandas聚合和分组运算——GroupBy技术(1)
    Python自然语言工具包(NLTK)入门
    python & pandas链接mysql数据库
    Win10家庭版怎么开启Administrator超级管理员帐户
    Echars保存图片
    Windowserver2008R2安装IIS环境
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/13366104.html
Copyright © 2011-2022 走看看