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、浏览器根据拿到的资源,对页面进行渲染,最终把一个完整的页面呈现给用户。

Http简单解析过程的更多相关文章

  1. HTTP请求解析过程 (简单概括)

    1.域名解析 用户输入网址,由域名系统DNS解析输入的网址: 2.TCP的3次握手 通过域名解析出的IP地址来向web服务器发起TCP连接请求,如果3次握手通过,则与web服务端建立了可靠的连接: 3 ...

  2. 解读JSP的解析过程

    解读JSP的解析过程 互联网上,这方面的资料实在太少了,故把自己研究的一些结果公布出来. 首先,问大家几个问题,看大家能不能回答出来,或者在网上能不能找到答案: 1.page.include.tagl ...

  3. 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)

    深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...

  4. 【原创】大数据基础之Hive(2)Hive SQL执行过程之SQL解析过程

    Hive SQL解析过程 SQL->AST(Abstract Syntax Tree)->Task(MapRedTask,FetchTask)->QueryPlan(Task集合)- ...

  5. MyBatis 源码分析 - 映射文件解析过程

    1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程.由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因.所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来, ...

  6. MyBatis 源码分析 - 配置文件解析过程

    * 本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括.本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于settings,typeAl ...

  7. MySQL解析过程、执行过程

    转载:https://student-lp.iteye.com/blog/2152601 https://www.cnblogs.com/cdf-opensource-007/p/6502556.ht ...

  8. spring cron表达式及解析过程

    1.cron表达式 cron表达式是用来配置spring定时任务执行时间的字符串,由5个空格分隔成的6个域构成,格式如下: {秒}  {分}  {时}  {日}  {月}  {周} 每一个域的含义解释 ...

  9. DNS解析过程和DNS挟持

    1.DNS解析过程详解 1).在浏览器中输入一个域名,例如www.tmall.com,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析, ...

随机推荐

  1. js变量按照存储方式区分,有哪些类型,并表述其特点

    // 值类型 拷贝形式 不像引用类型是指针指向,共用空间 值类型有 undefined string number Boolean var a = 100; var b = a; var a = 20 ...

  2. Bash 和 Zsh 开启 vi-mode

    Bash 和 Zsh 开启 vi-mode bash 有两种操作模式,分别是 emacs 和 vi . 在 bash 中 set -o vi # 临时开启 vi 模式 vi ~/.bashrc # 在 ...

  3. C++ 复习要点、面试常见问题总结

    本文总结一下C++面试时常遇到的问题.C++面试中,主要涉及的考点有: 关键字极其用法,常考的关键字有const, sizeof, typedef, inline, static, extern, n ...

  4. zipkin启动报错(Caused by: java.lang.ClassNotFoundException: zipkin.Component)的解决方法

    使用ziplin依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifact ...

  5. selenium打开chrome时,出现 "您使用的是不受支持的命令行标记:--ignore-certificate-errors""

    from selenium import webdriveroptions = webdriver.ChromeOptions()options.add_experimental_option(&qu ...

  6. sql 查询字段是中文/英文/数字 正则表达式

    一.包含中文字符 select * from 表名 where 列名 like '%[吖-座]%' 二.包含英文字符 select * from 表名 where 列名 like '%[a-z]%' ...

  7. 有了art-template,如有神助

    <div class="form-group col-lg-12"> <label class="control-label col-lg-3 text ...

  8. ROC与AUC原理

    来自:https://blog.csdn.net/shenxiaoming77/article/details/72627882 来自:https://blog.csdn.net/u010705209 ...

  9. npm和yarn的区别

    npm和yarn的区别,我们该如何选择? 周一入职,同事JJ让我熟悉一下基于React的新项目.按照以往,我的步骤都是: git clone xxx npm install npm run dev 这 ...

  10. echarts的学习

    博客1.:https://zrysmt.github.io/ 博客2:http://blog.csdn.net/future_todo/article/details/60956942 工作中一个需求 ...