<第五章>Node 学习笔记 |>HTTP知识填充<|

想象用浏览器打开imooc.com网站,HTTP走过的环节:

1.首先,是对imooc.com域名解析,
(1.1)浏览器搜索浏览器自身的DNS缓存。
怎么看呢? 在Chrome浏览器

chrome://net-internals/#dns

(1.2)如果浏览器没有找到自身的DNS缓存或之前的缓存已失效,那么浏览器会搜索操作系统自身的DNS缓存。
(1.3)如果操作系统的DNS缓存也没有找到,那么系统会尝试在本地的HOST文件去找。
(1.4)如果在HOST里依然没有找到,浏览器会发起一个DNS的系统调用,即一般向本地的宽带运营商发起域名解析请求。这后面又可以试情况分很多步骤,第一,宽带运营商服务器会首先查看自身的缓存,看是否有结果,如果没有,那么运营商服务器会发起一个迭代DNS解析请求(根域,顶级域,域名注册商),最终会返回对DNS解析的结果。运营商服务器然后把结果返回给操作系统内核(同时也缓存在自己的缓存区),然后操作系统把结果返回给浏览器。
(1.5)以上的最终结果,是让浏览器拿到imooc.com的IP地址,DNS解析完成。

2.然后,在浏览器获得域名的IP地址后,发起“三次握手”,建立TCP/IP连接。

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

4.服务器端接受这个请求,根据路径参数,经过后端的一些处理之后,把处理后的一个结果以数据的形式返回给浏览器,如果是imooc.com网站的页面,服务器就会把完整的HTML页面代码返回给浏览器。

5.浏览器拿到了imooc.com这个网站的完整HTML页面代码,在解析和渲染这个页面的时候,里面的Javascript、CSS、图片等静态资源,它们同样也是一个个HTTP请求,都需要经过上面的步骤来获取。

6.浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现出来。

http 请求方法

  1. GET 获取 读取数据
  2. POST 提交资源
  3. PUT更新
  4. DELETE 删除资源
  5. HEAD 请求状态码 :

3XX重定向
4XX 有语法错误
5XX 服务器端的错误
200 客服端请求成功
400 客户端请求语法错误
401请求没有经过授权
403 拒绝提供服务 是因为没有权限等等
404 没找到 有可能输入的URL地址错误
500 服务器 发生错误 503
服务器端当前还不能处理客户端请求

可能需要过一段时间

Stalled: 等待时机,浏览器要发生请求,到能发出请求的时间。不包括DNS查询和连接建立时间

Proxy negotiation: 代理协商的时间
Request sent 请求时间。从请求报文的第一个字节发出,到最后一个字节发送完毕的时间
Waiting(TTFB) 请求发出后至收到第一个字节响应的时间
Content Download 从接收到响应第一个字节开始到最后一个字节结束花费的时间


<第五章>Node 学习笔记 |>HTTP知识填充<|_第1张图片
通过自己的理解这些问题

1.回掉,即后续处理的函数作为参数出现在前驱函数中,对前驱函数中的一些操作进行处理
去医院看病,得先去挂号,不管你是去看腰腿胳膊心肝肾,挂完号才能去对应的科室。如此你要挂号,是你要挂什么病,挂完就去看病,如果把看病当做参数给挂号,看病这件事就是回掉

2.同步与异步
挂号可以让票贩子挂自己回家睡觉,挂号这件事就是异步的
如果是非要自己半夜排队,那挂号这件事就是同步的

//同步 打电话 等待 查询 返回结果 挂电话
//异步 打电话 留号码 说明查询 挂电话 出结果 回电话 完成
//同步 下载 等待 完成 看片儿
//异步 下载a 下载b 下载c 下载完播放提示音看片儿 顺序不定

3.单线程/多线程
今天周日,人多,但是你还是一个人给自己挂号,你就是单线程的
本周日,漩涡鸣人用多重影分身给自己挂号,鸣人就是多线程的

4.i/o
磁盘的写入 挂号的时候护士把你的信息录入,这就是写入
磁盘的读出 你挂完号去看病,轮到你了,医生把你的信息调出来,82岁 未婚, 哦,大龄单身狗啊,这就是读出

5.阻塞/非阻塞
医生告诉你你得好好检查检查,然后对你一阵敲敲打打,你啥也干不了,只能被动享受,你就被阻塞了
医生拍个片子就让你滚回家,说看看,过两天电话通知你结果,你想干啥就干啥,你就是非阻塞的

6.事件/事件驱动
医生过两天打电话告诉你,你得了蛋疼得切病,让你去医院,你就得去医院,这就是事件驱动
医生过两天打电话告诉你,你这玩意没切完,你又得去医院,这也是事件驱动
过两天医生告诉你不用切了,推荐你做变性手术,你没去,这事算完 ,ok
医生给你电话就是事件,你接到电话去医院也好,不去也罢,你一直被电话驱动着

7.事件循环 队列

你去挂的诊室有点多,有切蛋蛋的,有切咪咪的,有治疗菊花的,你的电话一个接一个,你有分身乏术,就按照取得顺序和执行时间拍了个顺序,顺便挂点其他的课科室,就这样 周一接电话去切蛋蛋,周二切咪咪,周三挂个前列腺号,前列腺一生的电话也留着监听监听,周四治菊花,周五本来说挂个号,但是周三前列腺的医生说你得去检查检查,你就去了,本来要挂的治疗没蛋也疼的只好拖到下周一了<第五章>Node 学习笔记 |>HTTP知识填充<|_第2张图片

顺序执行

var c = 0;

function add(   ) {
    console.log(c)
}
function plus() {
    c += 520
}
plus();
add();

<第五章>Node 学习笔记 |>HTTP知识填充<|_第3张图片

你可能感兴趣的:(node.js)