网络协议基础及发展历史

经典五层模型

传输层

传输层向用户提供了可靠的端到端的服务

传输层向高层屏蔽了下层数据通信的细节

应用层

为应用软件提供了很多服务

构建与tcp协议之上

屏蔽网络传输相关细节

HTTP 协议发展历史

HTTP/0.9

  • 只有一个命令GET
  • 没有header等描述数据的信息
  • 服务器发送完毕,就关闭TCP连接(http请求和tcp连接不是一个概念)

HTTP/1.0

  • 增加了很多命令
  • 增加了status code 和header
  • 多字符集支持,多部分发送,权限,缓存

HTTP/1.1

  • 持久连接
  • pipelint 同一个连接里面发送多个
  • 增加了host和一些命令,同一个服务器,跑多个不同服务node,java等,可以部署很多不同的服务

HTTP2

  • 所有数据以二进制传输
  • 同一个连接里面发送的多个请求不在需要按照顺序来
  • 头信息压缩及推送等提高效率的功能(请求完html,可以推送css和js)

HTTP三次握手

TCP-connection

wireshark工具,查看网络连接

三次握手时序图

URL\URI\URN

  • URI uniform resource identifier/统一资源标志符
    -URL uniform resource locator /统一资源定位器
  • URN 永久统一资源定位符

HTTP报文格式

请求报文

响应报文

HTTP方法

  • 用来定义对资源的操作

    HTTP CODE

  • 用来定义服务器对请求的处理结果
  • 各自区间的code有各自的语义
  • 好的HTTP服务可以通过code判断结果

使用nodejs创建一个最简单的web服务器

1
2
3
4
5
6
7
8
9
const http=require('http');

http.createServer(function(request,response){
console.log('request come',request.url)

response.end('123')
}).listen(8888)

console.log('server start at http://localhost:8888');