URL:统一资源定位符,偏重定位,是URI的子集,例如网址。URL一定是URI,但URI 不一定是URL。规则:只能用英文阿拉伯数字某些符号等,如果有文字就必须编码。

URI:统一资源标识符,偏重标识,字符串格式规范。

Http:

1、http客户端发起请求,创建端口(例:用手机打开浏览器网页,创建到服务器的默认端口80的TCP链接)

2、http服务器在端口监听客户端请求

3、http服务器向客户端返回状态和内容

当我们输入网址回车或者按h5刷新时计算机和浏览器做的事情:

域名解析: 一、浏览器会先搜索自身的DNS缓存,例如a.imooc.com这个域名已经缓存的ip地址,这个缓存的时间只有1分钟,如有缓存看有没有过期,如果过期这个解析就结束了。查看chrome的缓存:chrome://net-internals/#dns

    二、搜索操作系统自身的DNS缓存,浏览器没有找到缓存或缓存已经失效。如果缓存也没有过期,那解析也到此结束。

    三、读取本地的HOST文件,操作系统自身的DNS缓存也没有找到。

      四、浏览器发起一个DNS的一个系统调用。向本地主控DNS服务器(一般来说是宽带运营商提供的)发起的一个域名解析请求。

运营商的DNS服务器:1、宽带运营商服务器查看本身缓存,查找对应的条目,如果没有过期就解析成功了

2、运营商服务器替浏览器发起一个迭代DNS解析的请求

先找到根域DNS:

     

     拿到com域的ip地址:

            

·

    找到imooc.com这个域的DNS服务器(该服务器由域名的注册商提供。如万网、新网等):

imooc.com域的DNS服务器将查找的结果发送给运营商的DNS服务器,这时运营商的DNS服务器拿到了imooc.com这个域名对应的ip地址,将结果返回给操作系统内核,同时也缓存在自己的缓存区。操作系统内核把ip地址返回给浏览器。最终浏览器拿到了www.imooc.com对应的IP地址。

    五、浏览器获得域名对应的IP地址后,发起HTTP "三次握手"

浏览器以一个随机端口向服务器的web程序,如ngix80端口发起一个TCP的连接请求,这个请求通过层层的路由设备到达服务器端以后进入到网卡,进入到内核的TCP/IP协议栈,可能还需要防火墙的过滤,最终到达web服务端,建立起TCP和IP的连接。

 

三次握手做了什么:客户端向服务器

    六、TCP/IP连接建立起来后,浏览器就可以向服务器发送HTTP请求了。使用了比如说,用HTTP的GET方式请求一个根域里的一个域名,协议可以采用HTTP 1.0的一个协议。

    七、服务器端接收到了这个请求,根据路径参数,经过后端的一些处理之后,把处理后的一个结果的数据返回给浏览器,如果是网站页面就会把完整的HTML页面代码返回给浏览器。

    八、浏览器拿到了网站页面完整的HTML代码,在解析和渲染这个页面的时候,里面的js、css、图片静态资源,他们同样是一个个HTTP请求,都需要经过上面的主要的七个步骤。

    九、浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户。

HTTP协议的组成:

HTTP头:发送的是一些附加的信息:内容类型、服务器发送响应的日期、HTTP状态码。

正文:就是用户提交的表单数据。

Node.js进击基础一(http)的更多相关文章

  1. Node.js进击基础一(5-11事件模块)

    res.on res有on方法. 在nodejs中不存在浏览器里的冒泡捕获等行为,集成了一个模块events,对外暴露一个对象EventEmitter ,EventEmitter作用只有2个事件的发射 ...

  2. Node.js进击基础一(5-5http知识填坑)

    蚂蚁部落:谷歌浏览器network用法详解 http://www.softwhy.com/forum.php?mod=viewthread&tid=19119 按下f12->Networ ...

  3. node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法

    1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...

  4. Node.js系列基础学习----安装,实现Hello World, REPL

    Node.js基础学习 简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一 ...

  5. Node.js npm基础安装配置&创建第一个VUE项目

    使用之前,我们先来明白这几个东西是用来干什么的. node.js: 一种javascript的运行环境,能够使得javascript脱离浏览器运行.Node.js的出现,使得前后端使用同一种语言,统一 ...

  6. Node.js系列基础学习-----回调函数,异步

    Node.js基础学习 Node.js回调函数 Node.js异步编程的直接体现就是回调,异步编程依托回调来实现,但不是异步.回调函数在完成任务后就会被调用,Node有很多的回调函数,其所有的API都 ...

  7. node.js零基础详细教程(7.5):mongo可视化工具webstorm插件、nodejs自动重启模块Node Supervisor(修改nodejs后不用再手动命令行启动服务了)

    第七章 建议学习时间4小时  课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...

  8. node.js入门基础

    内容: 1.node.js介绍 2.node.js内置常用模块 3.node.js数据交互 一.node.js介绍 (1)node.js特点 与其他语言相比,有以下优点: 对象.语法和JavaScri ...

  9. 001/Node.js(Mooc)--基础知识

    一.Node.js基础知识 node.js用C++语言编写. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时 ...

随机推荐

  1. Linux 创建文件系统及挂载文件系统流程详解(转)

    作者:北南南北 来自: LinuxSir.Org 摘要:本文对新增硬盘,切割硬盘,创建硬盘分区,为硬盘分区创建文件系统,以及加载文件系统的流程做总结性论述:主要是为初学者弄清楚这一操作过程:本文涉及f ...

  2. LUA 语言易混点

    --代码: tab1 = { key1 = "val1", key2 = "val2","val2", "val3" , ...

  3. HDU 1166 - 敌兵布阵 - [分块]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 题解: 本题作为一个模板题,我用它来检验过总查询时间复杂度为 $O(q \log n)$ 的树状 ...

  4. 使用shell删除目录下几天前生成文件方法

    find /dbfdumpdir/*full* -mtime +21 -exec rm -rf {} \; 这个shell可以删除目录/dbfdumpdir下面21天前生成的,文件名包含full的文件 ...

  5. 扒来的lstdc++.6.0.9有效解决方案

    找到了Xcode10模拟器和真机运行的办法了1.将libstdc++_sim.zip解压,放到目录 /Applications/Xcode.app/Contents/Developer/Platfor ...

  6. C和C指针小记(三)-整型,char,枚举

    1.C语言基本数据类型-整型 仅有4中机泵数据类型:整型,浮点型,指针,聚合类型(数组和结构) 整型家族:字符,短整型,整型,长整型.(都分有符号[singed]和无符号[unsinged]) 短整型 ...

  7. 【基本功】Java动态追踪技术探究 不重启JVM,替换掉已经加载的类?不重启JVM,获知运行时对象的属性

    https://mp.weixin.qq.com/s/_hSaI5yMvPTWxvFgl-UItA 小结: 1.根据Java的类加载机制,在同一个ClassLoader中,类是不允许重复的: 2.单例 ...

  8. js return false\e.preventDefault() 以及session

    @{ ViewBag.Title = "Test"; } <h2>Test</h2> 区别的介绍 <br/> 我们在平时的编码中javascri ...

  9. [daily][mirror][daemonlogger][tc] 我想把一个网卡(port A)的流量,镜像到虚拟机的一个网卡(port VA)上去

    iptables tee 模块 https://blog.gnuers.org/?p=740 http://blog.csdn.net/wesleyflagon/article/details/385 ...

  10. 查找->静态查找表->顺序查找(顺序表)

    文字描述 顺序查找的查找过程为:从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,找到所查记录:反之,若直至第一个记录,其关键字和给定值比较都 ...