网络协议分层

只关心应用层里的http和传输层里的tcp

  1. 物理层:主要作用是定义物理设备如何传输数据
  2. 数据链路层:在通信的实体间建立数据链路连接
  3. 网络层:为数据在结点之间传输创建逻辑链路
  4. 传输层:向用户提供可靠的端到端(End-to-End)的服务,传输层向高层屏蔽了下层数据通信的细节
  5. 为应用软件提供了很多服务,构建于TCP塄之上,屏蔽网络传输相关细节

clipboard.png

http历史

http0.9

  1. 只有一个命令GET
  2. 没有header等描述数据的信息
  3. 服务器发送完毕,就关闭TCP连接

http1.0

  1. 增加了status,code和header
  2. 多字符集支,多部分发送,权限,缓存

http1.1

  1. 持久连接
  2. pipeline
  3. 增加host和其它一些命令

http2

  1. 所有数据以二进制传输
  2. 同一个连接里面发送多个请求不再需要按照顺序来
  3. 头信息压缩以及推送等提高效率的功能

http,tcp之间的关系

建立了tcp连接之后,http(用户就可以给服务器发送请求和服务器就可以响应了),可以多个http同时进行
clipboard.png

三次握手

clipboard.png

http报文

请求报文的起始行

http方法

  1. 用来定义对资源的操作
  2. 常用的有GET,POST,
  3. 从定义上讲各自的语义

clipboard.png

请求报文的起始行

  1. 定义服务器对请求的处理结果
  2. 各个 区间的code有各自的语义
  3. 好的http服务可以通过code判断结果

最简单的服务器

const http = require('http');
http.createServer(function (req, res) {
    console.log(req.url);
    res.end("hello world")
}).listen(8888)
console.log('server start at port 8888')

clipboard.png


渣渣辉
1.3k 声望147 粉丝