zoukankan      html  css  js  c++  java
  • Web访问原理-从输入URL到页面加载完成的过程中都发生了什么事情?

            从输入URL到页面加载完成的过程中都发生了什么事情?--这是一个经典的面试题;

            主要是关于计算机网络方面的知识基础,对于非科班计算机自学web开发的同学可能理解起来就很困难。

           

            StackOverFlow上有一个简要回答:

              http://stackoverflow.com/questions/2092527/what-happens-when-you-type-in-a-url-in-browser

    Piskvor的回答:
        作一个简单粗暴的描述,假设是简单的HTTP请求,IPV4,没有代理。
    1.浏览器查询缓存,如果缓存存在跳到第9步。
    
    2.浏览器询问操作系统服务器的IP地址。
    
    3.操作系统做DNS查询,返回IP地址给浏览器。
    
    4.浏览器打开对服务器的TCP连接(如果是HTTPS协议的话会更复杂)。
    
    5.浏览器通过TCP连接发送HTTP请求。
    
    6.浏览器接收HTTP响应并且可能关掉TCP连接,或者是重新使用连接处理新请求。
    
    7.浏览器检查HTTP响应是否为一个重定向(3xx 结果状态码 ),一个验证请求(401),错误(4xx 5xx)等等,这些都是不同响应的正常处理(2xx).
    
    8.如果响应可缓存,将存入缓存。
    
    9.浏览器解码响应(例如:如果它是gzziped压缩)。
    
    10.浏览器决定如何处理这些响应(例如,它是HTML页面,一张图片,一段音乐)。
    
    11.浏览器展现响应,对未知类型还会弹出下载对话框。
    
    这里边的每个步骤都可以长篇大论一番,当然还有很多东西与这些步骤平行发生。

            主要要掌握计算机与网络设备之间通信

            Web使用一种HTTP(HyperText TransFer Protocol,超文本协议)的协议作为规范,完成从客户端到服务器等一系列运作流程。可见web是建立在HTTP协议上通信的。

            通常我们使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集。

          

            计算机与网络设备之间通信的协议总称为TCP/IP.该协议最重要的一点就是分层

             clip_image001

            利用TCP/IP协议族进行通信时,会通过分层顺序与对方进行通信。

            clip_image003

     

           与HTTP关系紧密的协议有:

           DNS:负责域名解析

           TCP:确保可靠性,会数据分割

           IP:负责传输

          传输过程图如下:

            clip_image005

     

     

            深入理解整个计算机体系和硬件的话,FEX团队的nwind专门有对该问题的文章:

              http://fex.baidu.com/blog/2014/05/what-happen/

            该回答真的非常有深度和广度。值得学习。

     

     

     

     

  • 相关阅读:
    python运行出现TypeError: super() takes at least 1 argument (0 given)错误
    python使用Pyinstaller打包
    python 将字符串中的unicode字符码转换成字符
    python 复制列表
    AetherUpload大文件传输
    phpstom激活
    BusyBox telnetd配置
    MDK链接脚本错误
    利用mass storage class 做免驱动usb设备.
    BMP图片的解析,关于压缩方式
  • 原文地址:https://www.cnblogs.com/Peng2014/p/4686327.html
Copyright © 2011-2022 走看看