HTTP协议


一、HTTP是什么?

HTTP 是超文本传输协议,是一个在计算机世界里专门用来在两点之间传输数据的约定和规范,定义了客户程序与服务器进行交换的报文结构及其交换方式,是一个无状态协议,不保存关于客户的信息,不担心数据丢失。

它的端口号是80。

二、HTTP状态码

1xx 类状态码属于提示信息
2xx 类状态码表示服务器成功处理了客户端的请求
3xx 类状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向
4xx 类状态码表示客户端发送的报文有误,服务器无法处理
5xx 类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误

三、持续连接和非持续连接

非持续连接

每个请求/响应是经一个单独的TCP连接发送——HTTP1.0
缺点:
必须为每一个请求的对象建立和维护一个全新的连接
每个对象两倍时延RTT,一个创建一个接收

持续连接

所有请求/响应是经相同的TCP连接发送——HTTP1.1

四、缓存

每次请求得到的数据都一样的,可以把这对「请求-响应」的数据都缓存在本地,那么下次就直接读取本地的数据,不必在通过网络获取服务器的响应了。

强制缓存

只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边

协商缓存

与服务端协商之后,通过协商结果来判断是否使用本地缓存

五、优点和缺点

优点

  1. 简单:HTTP 基本的报文格式就是 header + body,头部信息也是 key-value 简单文本的形式,易于理解
  2. 灵活和易于扩展:HTTP 协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发人员自定义和扩充;同时 HTTP 由于是工作在应用层( OSI 第七层),则它下层可以随意变化,比如HTTP/1.1 和 HTTP/2.0 传输协议使用的是 TCP 协议,而到了 HTTP/3.0 传输协议改用了 UDP 协议。
  3. 应用广泛和跨平台

缺点

  1. 无状态
    服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息,这能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务。既然服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦
    解法方案有很多种,其中比较简单的方式用 Cookie 技术,通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
  2. 明文传输
    在传输过程中的信息,是可方便阅读的,HTTP 的所有信息都暴露在了光天化日下,相当于信息裸奔。
  3. 不安全
    通信使用明文(不加密),内容可能会被窃听。
    不验证通信方的身份,因此有可能遭遇伪装。
    无法证明报文的完整性,所以有可能已遭篡改。

总结

HTTP 的安全问题,可以用 HTTPS 的方式解决,也就是通过引入 SSL/TLS 层,使得在安全上达到了极致

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力找工作的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值