Node.js进击基础一(http)
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)的更多相关文章
- Node.js进击基础一(5-11事件模块)
res.on res有on方法. 在nodejs中不存在浏览器里的冒泡捕获等行为,集成了一个模块events,对外暴露一个对象EventEmitter ,EventEmitter作用只有2个事件的发射 ...
- Node.js进击基础一(5-5http知识填坑)
蚂蚁部落:谷歌浏览器network用法详解 http://www.softwhy.com/forum.php?mod=viewthread&tid=19119 按下f12->Networ ...
- node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法
1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...
- Node.js系列基础学习----安装,实现Hello World, REPL
Node.js基础学习 简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一 ...
- Node.js npm基础安装配置&创建第一个VUE项目
使用之前,我们先来明白这几个东西是用来干什么的. node.js: 一种javascript的运行环境,能够使得javascript脱离浏览器运行.Node.js的出现,使得前后端使用同一种语言,统一 ...
- Node.js系列基础学习-----回调函数,异步
Node.js基础学习 Node.js回调函数 Node.js异步编程的直接体现就是回调,异步编程依托回调来实现,但不是异步.回调函数在完成任务后就会被调用,Node有很多的回调函数,其所有的API都 ...
- node.js零基础详细教程(7.5):mongo可视化工具webstorm插件、nodejs自动重启模块Node Supervisor(修改nodejs后不用再手动命令行启动服务了)
第七章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- node.js入门基础
内容: 1.node.js介绍 2.node.js内置常用模块 3.node.js数据交互 一.node.js介绍 (1)node.js特点 与其他语言相比,有以下优点: 对象.语法和JavaScri ...
- 001/Node.js(Mooc)--基础知识
一.Node.js基础知识 node.js用C++语言编写. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时 ...
随机推荐
- 微软VBS生成Excel内容和图表示例
<HTML> <BODY> <INPUT id=button1 name=button1 type=button value=Button> <SCRIPT ...
- shell特殊变量,记录一下
$0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传递给脚本或函数的所有参数. ...
- Ubuntu 16.04 编译OpenCV 问题解决stdlib.h: No such file or directory
https://blog.csdn.net/xinyu391/article/details/72867510 https://ask.csdn.net/questions/365969
- cadence xbl封装转AD
下载一个 软件 免费试用 导出到ad,出现一个脚本,脚本工程直接拉到ad里面,然后 有这两个文件,启动是有顺序的,顺序一旦错误就会产生大问题,没有任何反应 设置工程启动顺序,再次启动,出现打开文件窗口 ...
- ssm,dubbo框架搭建得配置文件
在建立了parent,common,manager(pojo,mapper,sercie,web)的maven工程后,开始导入添加配置文件: pojo,mapper 最终会打成jar包,service ...
- [hardware][intel] intel全系列网卡调研
除了公司用,我自己还要买一块家用. 但是在这一切开始之前,还需要搞清楚PCIE到底咋回事. 一, 总线 https://zh.wikipedia.org/wiki/%E6%80%BB%E7%BA%BF ...
- 《HTTP - 概述》
晚上听着 木小雅<可能否>,让我这暴躁的一天得以回复一下. 学习是长久之事,不能急躁.应该系统的去学习一些东西. 1:HTTP 最严谨的叫法应该是 超文本转移协议,但大家一般都叫做 超文本 ...
- 20165225《Java程序设计》第五周学习总结
20165225<Java程序设计>第五周学习总结 1.视频与课本中的学习: - 第七章学习总结 内部类: 内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方 ...
- 20165225《Java程序设计》第四周学习总结
20165225<Java程序设计>第四周学习总结 1.视频与课本中的学习: 继承(extends) 重写 对象的上转型对象 super final instanceof运算符 abstr ...
- 如何使用Beyond Compare 对比差异文件【制作Patch(补丁包)文件】
场景:研发部的代码从SVN变更至GIt,通过Jenkins每天自动生成程序包. 如需要获取单独的程序包更新,而不是整个程序包覆盖更新,这时候就需要用到Beyond Compare 对比工具 操作步骤1 ...