一、OSI参考模型
将网络通信分成七个层次(面试中考得多的是五层模型),每个层次都有特定的功能和协议
(1)应用层
与应用程序交互,用户直接交互,当中协议有(HTTP协议,SMTP协议,DNS...)
(2)传输层
负责将数据从表示层传输到会话层
(2.1)表示层
负责将数据转换为指定的格式
(2.2)会话层
负责建立、管理和终止会话,当中包括协议(TCP 和 UDP),定义了数据传输的格式和过程
(3)网络层
负责将数据从传输层传输到数据链路层,其中会选择合适的节点确保数据正常传送,包括(IP协议)
(4)数据链路层
负责将比特流组织成数据帧
(5)物理层
负责传输比特流,例如 0 和 1 的电信号(包括中继器、网卡)
二、HTTP协议
用于传输超文本的协议,由请求和响应组成
2.1 组成部分
2.1.1 请求
- 请求行
请求方法、请求 URL 和 HTTP协议版本、状态码及状态描述
- 请求头
请求的主机名、浏览器类型、请求的内容类型等
- 请求体(可选)
请求的数据
2.1.2 响应
- 状态行
包括 HTTP协议版本号、状态码和状态描述
- 响应头
connection 、 content-Type 、 content-encoding 、content-length 、 set-cookie 、 last-Modified 、cache-control 、 Expores
- 响应体
服务器返回的内容
2.2 HTTP1.0的特点
- 无状态
每次请求都是独立的,服务器不会保留客户端的状态信息
- 短连接
每一次请求都需要建立一个新的连接,处理后会立刻关闭连接
- 不支持缓存
会造成过多的资源浪费
2.3 HTTP1.1的特点
- 长连接(持久连接)
多次请求复用一个 TCP 连接,
- 缓存控制
可以通过设置缓存信息头信息Connection字段指定为 keep-alive
- 支持多个请求方法
get、post、put、delete 等等
2.4 HTTP2.0的特点
- 首部压缩
使用特定的算法对对请求和响应的头部进行压缩,减少首部信息的大小,对于多个请求其中相同部分的数据不会重复发送,即第一次请求发送了首部信息,剩下的请求只需发送与前面请求不一样的数据即可
- 服务器推送
允许服务器主动向客户端推送资源
- 多路复用
一个连接中,允许同时发送多个请求或响应,而且它们之间不会阻塞,避免了 HTTP/1.x中的队头阻塞问题
- 二进制格式
将请求和响应分成二进制的帧,解析传输更加高效