文章目录
- 一、HTTP是什么?
- 二、HTTP状态码
- 三、持续连接和非持续连接
- 非持续连接
- 持续连接
- 四、缓存
- 强制缓存
- 协商缓存
- 五、优点和缺点
- 优点
- 缺点
- 总结
一、HTTP是什么?
HTTP 是超文本传输协议,是一个在计算机世界里专门用来在两点之间传输数据的约定和规范,定义了客户程序与服务器进行交换的报文结构及其交换方式,是一个无状态协议,不保存关于客户的信息,不担心数据丢失。
它的端口号是80。
二、HTTP状态码
1xx 类状态码属于提示信息
2xx 类状态码表示服务器成功处理了客户端的请求
3xx 类状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向
4xx 类状态码表示客户端发送的报文有误,服务器无法处理
5xx 类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误
三、持续连接和非持续连接
非持续连接
每个请求/响应是经一个单独的TCP连接发送——HTTP1.0
缺点:
必须为每一个请求的对象建立和维护一个全新的连接
每个对象两倍时延RTT,一个创建一个接收
持续连接
所有请求/响应是经相同的TCP连接发送——HTTP1.1
四、缓存
每次请求得到的数据都一样的,可以把这对「请求-响应」的数据都缓存在本地,那么下次就直接读取本地的数据,不必在通过网络获取服务器的响应了。
强制缓存
只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边
协商缓存
与服务端协商之后,通过协商结果来判断是否使用本地缓存
五、优点和缺点
优点
- 简单:HTTP 基本的报文格式就是 header + body,头部信息也是 key-value 简单文本的形式,易于理解
- 灵活和易于扩展:HTTP 协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发人员自定义和扩充;同时 HTTP 由于是工作在应用层( OSI 第七层),则它下层可以随意变化,比如HTTP/1.1 和 HTTP/2.0 传输协议使用的是 TCP 协议,而到了 HTTP/3.0 传输协议改用了 UDP 协议。
- 应用广泛和跨平台
缺点
- 无状态
服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息,这能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务。既然服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦
解法方案有很多种,其中比较简单的方式用 Cookie 技术,通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。 - 明文传输
在传输过程中的信息,是可方便阅读的,HTTP 的所有信息都暴露在了光天化日下,相当于信息裸奔。 - 不安全
通信使用明文(不加密),内容可能会被窃听。
不验证通信方的身份,因此有可能遭遇伪装。
无法证明报文的完整性,所以有可能已遭篡改。
总结
HTTP 的安全问题,可以用 HTTPS 的方式解决,也就是通过引入 SSL/TLS 层,使得在安全上达到了极致