zoukankan      html  css  js  c++  java
  • Http简单解析过程

    1、域名解析;
    浏览器先搜索自身的DNS缓存
    ->搜索操作系统自身的DNS缓存(浏览器没有找到缓存或缓存已经失效)
    ->读取本地host文件(操作系统DNS也没找到)
    ->浏览器发起DNS的系统调用(宽带运营服务商提供)
    ->宽带运营服务器查看本身缓存
    ->运营商服务器发起一个迭代DNS解析的请求
    (imooc.com为例:先找根域DNS的IP地址->拿到com域的顶级域的IP地址->拿到imooc.com域的IP地址->将查到的结果发送给运营商服务器->运营商服务器把结果返回给操作系统内核同时缓存起来->内核从DNS拿到IP地址将结果返回给浏览器->浏览器拿到imooc.com对应的IP地址)  
    查看浏览器自身的DNS缓存(chrome为例):chrome://net-internals/#dns
    2、浏览器获得域名对应的IP地址后,发起HTTP‘三次握手’
    浏览器以随机端口向服务器的web程序发起tcp连接请求:通过层层的路由设备到达服务器端以后,进入到网卡,然后进入到内核的TCP/IP协议栈,还可能经历防火墙的过滤,最终到web服务端。
    3、TCP/IP连接建立起来后,浏览器就可以向服务器发送HTTP请求了,比如:用HTTP的GET方法请求一个根域里的一个域名,协议可以采用HTTP1.0的一个协议。
    4、服务器端接受到这个请求,根据路径参数,经过后端的一些处理后,把处理后的一个结果的数据返回给浏览器,如果是慕课网的页面,就会把完整的html页面代码返回给浏览器。
    5、浏览器拿到了慕课网的完整的html页面代码,在解析和渲染这个页面的时候,里面的js、css、图片静态资源,他们同样也是一个个http请求,都需要经过上面的4个步骤。
    6、浏览器根据拿到的资源,对页面进行渲染,最终把一个完整的页面呈现给用户。

  • 相关阅读:
    2018.8.20 Python之路---常用模块
    2018.8.16 正则表达式
    2018.8.15 python中的冒泡法排序
    2018.8.15 python 中的sorted()、filter()、map()函数
    2018.8.14 python中的内置函数(68个)
    2018.8.13 python中生成器和生成器表达式
    2018.8.10 python中的迭代器
    2018.8.9 python中的动态传参与命名空间
    python测试开发django(1)--开始Hello World!
    UPC-5120 Open-Pit Mining(最大权闭合子图)
  • 原文地址:https://www.cnblogs.com/zynn/p/10436523.html
Copyright © 2011-2022 走看看