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 运行时 ...
随机推荐
- VMware与Centos系统安装 和重置root密码
VMware与Centos系统安装 今日任务 1.Linux发行版的选择 2.vmware创建一个虚拟机(centos) 3.安装配置centos7 4.xshell配置连接虚拟机(centos) ...
- window10装机 nvem简介,针对于 联想R720系列
1.nvem格式的硬盘比较新,传统的老毛桃,大白菜,并不能有效使用. 2.对于镜像类 goust类,仍然具备 硬盘兼容性差(对于gpt,MAR,uefi并不够智能)成功率极低,容易丢失一些关键文件,造 ...
- update-alternatives符号连接的层数过多
ls -l /opt/jdk/bin/java时,显示/opt/jdk/bin/java -> /usr/bin/java ls -l /usr/bin/ava时,显示/usr/bin/java ...
- linux进程状态D
运行在KVM虚拟机里的一些进程突然出了问题,这些出了问题的进程无法用kill杀掉,使用ps可以看到这些进程处于D状态: [build@kbuild-john ~]$ ps -a -ubuild -o ...
- bootstrape学习
bootstrape学习 已分享到有道上:http://note.youdao.com/share/?id=076fb6314c99c742a79f6fb66b2a58b0&type=note ...
- 《Redis 数据操作》
一:字符串类型(string) - 应用场景 - 用于常规计数,常规的 key-value 存储. - 常用操作 常用操作 设置一个值为(字符串类型) SET key value 设置一个值并设置过 ...
- Java之旅_高级教程_URL处理
摘自 :http://www.runoob.com/java/java-url-processing.html Java URL 处理 URL(Uniform Resource Locator)中文名 ...
- AVD启动报错:Running an x86 based Android Virtual Device (AVD) is 10x faster
1.cmd窗口中输入emulator -avd test 启动AVD时报错: Running an x86 based Android Virtual Device (AVD) is 10x fast ...
- 注解之@CookieValue
@RequestHeader以及@CookieValue这两个注解用法类似,属性也相同,所以,写在一起.二者属性和RequestParam的属性一样,用法也几乎一样. 作用 @RequestHeade ...
- fork多线程进程时的坑(转)
add : 在fork多线程的进程时,创建的子进程只包含一个线程,该线程是调用fork函数的那个线程的副本.在man fork中,有The child process is created with ...