前提
- tcp:传输层的三次握手
- http:应用层的访问资源协议
- URL:格式是—协议://主机域名或者ip地址:port/资源路径
nodejs请求数据包
- 请求行:请求方式POST、GET和http版本
- 请求头:主机域名,操作系统和浏览器内核信息,浏览器能处理的文本和语言以及编码,cookie,connection
- 空行:分割请求头和消息体
- 请求体:具体内容
nodejs相应数据包
- 状态行:http版本,状态码(200、302、404、500)
- 1xx:指示信息—表示请求已接受,继续处理。
- 2xx:成功—表示请求已被成功连接、理解、接受。
- 3xx:重定向—要完成请求,必须进行更进一步的操作。
- 4xx:客户端错误—请求由语法错误或者请求无法实现。
- 5xx:服务器端错误—服务器未能实现合法的请求。(服务器代码出错)
- 响应头:时间、服务器采用的版本比如apache,编码类型,超时时间设置等
- 空行: 分割这个响应头和消息体
- 消息体:相应的具体内容
nodejs是什么js
什么是js
- javascript,解释性语言,不需要经过编译,必须要通过浏览器来执行
浏览器怎么执行
- 通过浏览器的js引擎
- 火狐的js引擎叫spidermonky
- 谷歌的js引擎叫v8
- 苹果浏览器(Safari)的解析引擎叫做nitro
- 不同浏览器引擎不一样,但是都是ECMA标准。所以可以解析同一段js代码。
什么是node.js
- 因为js必须通过浏览器运行,有人就希望js代码可以脱离浏览器在外部的环境来运行,这个人(ryan dahl)就把谷歌的v8引擎给脱离出来了,因为v8是所有引擎中效率最高的,封装好v8后生成了一个运行平台,就是node.js
- 所以node.js是基于v8开发的一个js的运行平台,用于搭建相应速度快,易于扩展的网络应用
- 为什么说响应快
- Ryan Dahl这个人,早就封装好了一套库。我们直接基于它的库,就能开发我们对应的网络应用。
- Node.js使用事件驱动,非阻塞I/O模型。
- 开发出来的应用,轻量、高效,执行效率比较高。
node.js特点
- 异步IO:完成一件事情后才能做第二件叫做同步,烧开水的时候同时去扫地叫做异步的操作。
- 事件与回调:水烧开了之后,以事件的形式通知你,回来倒开水,就是在回调(处理烧完开水之后的结果)
- 单线程:如果不想自己异步,可以在同步的时候叫多几个小伙伴帮忙,叫做多