网络协议
网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。常用的网络协议有TCP/IP 、TLS等。
HTTP
1.定义
HTTP是“超文本传输协议”的简写,其英文全称为Hyper Text Transfer Protocol 。是一种将超文本标记语言(HTML) 传输到浏览器的协议。
2.特点
- 无状态:http传输对相同URL没有上下文记录,也没有事务处理后记录能力,每次都是独立的传输,如果需要之前的消息,则要重新传输。
- 简单快速:客户端只需要定义请求路径和方法即可发送请求。
- 数据格式灵活性:允许传输任意类型的数据,但需要在content-type字段定义数据类型。
- 无连接:限制每次只处理一个请求,请求响应完成后即关闭连接。
- 支持B/S、C/S模式。
3.HTTP请求方法
- GET / 获取简单的数据
- POST / 发送包含用户信息的请求
- PUT / 对资源进行传输、覆盖
- PATCH / 对资源进行局部更新
- DELETE / 删除操作
- OPTIONS / 查询服务端支持的方法
- HEAD / 获取报文首部,检查资源或超链接的有效性。
- TRACE / 回显服务器收到的请求,主要用于测试或诊断。
4.GET和POST的区别
- 数据位置:GET的请求数据存在请求Path,而POST存在请求Body。
- 安全性:根据请求数据的存储位置,GET会将请求信息暴露在请求连接上,相对于POST安全性不足。
- 传输数据类型:GET只接受ASCLL数据,POST可以接受任意类型数据。
- 数据长度:GET因为将参数存在请求Path,所以GET方法数据长度会受到每个浏览器规定的请求路径长度的限制,而POST则没有限制。
- 历史记录:GET会被完整保存在历史记录,而POST中的参数不会被保留。
- 编码方式:GET只支持URL编码,而POST支持多种编码。
- 缓存处理:GET会被浏览器自动缓存,POST需要手动设置。
- 书签:GET可以存到书签,POST不可以。
- 回退:GET在浏览器回退时是无害的,而POST则会重新提交。
5.状态码
- 1xx - 信息类,请求已收到,正在处理中。
- 2xx - 成功类,请求已收到并完成响应。
- 3xx - 重定向类,请求需要进一步操作才能完成。 需区别301为永久重定向,302为暂时重定向。
- 4xx - 客户端错误,请求不合法。
- 5xx - 服务端错误,信息在服务端处理过程中发生错误。
6.http1.1
- 分块传输 - 在响应消息中Content-Range头域声明了返回的这部分对象的偏移值和长度。
- 缓存处理 - 引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
- 长连接 - 可以在一个TCP连接中传送多个http请求和响应。
- 可扩展性 - 自动忽略未定义的头部信息。
- Host头域 - 随着虚拟机技术发展,定义 host头域以区分。
- 错误提示状态码
7.http 2.0
- 降低延迟 - 多路复用通过多个请求Stream共享一个TCP来解决Head-of-line blocking(队首阻塞)。
- header压缩 - 使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。
- 服务端推送
- 基于https的加密协议