HTTP协议

embedded/2024/10/19 7:33:31/
http://www.w3.org/2000/svg" style="display: none;">

文章目录

  • 一、HTTP是什么?
  • 二、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 层,使得在安全上达到了极致


http://www.ppmy.cn/embedded/24002.html

相关文章

JVM(Jvm如何管理空间?对象如何存储、管理?)

Jvm如何管理空间(Java运行时数据区域与分配空间的方式) ⭐运行时数据区域 程序计数器 程序计数器(PC),是一块较小的内存空。它可以看作是当前线程所执行的字节码的行号指示器。Java虚拟机的多线程是通过时间片轮转调…

2024年北京高校数学建模校际联赛竞赛赛题浅析

一图流: 题目复杂性技术需求数据处理主要难点A题:格陵兰入海冰川3气象学、物理学、环境科学时间序列分析、空间数据处理多学科集成、预测模型的准确性和策略制定B题:铁道线路动态检测数据分析1数据科学、机器学习、信号处理实时数据流处理、异…

FebHost:什么是挪威.no域名,如何注册?

挪威国家域名介绍 挪威是一个位于北欧的国家,北面和西面是大西洋和北海,东面和南面则与瑞典、芬兰接壤。挪威是一个高度发达的经济体,其政府在经济管理和可持续发展方面也取得了很多成就。挪威的人均GDP在世界范围内排名非常靠前&#xff0c…

看看大家都在做哪些有趣的项目

最近发现两个比较有趣的项目 1.中国独立开发者项目列表 该项目旨在聚合中国独立开发者的项目,分享开发者们正在进行的工作,项目列表包括网站或 App,并且正在持续更新中 项目分为程序员版和主版面: 程序员版:用户是程…

Unity 点击无效的问题

问题 我需要点击下落的音符。这个音符是一个按钮。但是点击一直没有触发这是为什么呢 Button unity的button事件button.onClick.AddListener因为我的音符下落太快,当按钮落下的时候,点击在音符上,但是抬起来的时候不在音符上【因为下落太快…

Ansible 自动化运维

一、介绍 1、定义: ansible是自动化运维工具,基于Python开发,具有批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于 paramiko(框架) 开发的,并且基于模块化工作,本身没有批量…

Llama3 端侧部署:算丰 SG2300x 与爱芯元智 AX650N

美国当地时间4月18日,Meta 开源了 Llama3 大模型,包括一个 8B 模型和一个 70B 模型在测试基准中,Llama 3 模型的表现相当出色,在实用性和安全性评估中,与那些市面上流行的闭源模型不相上下。 Llama3 性能指标&#xf…

SpringBoot---------整合Mybatis

目录 第一步&#xff1a;首先引入依赖 第二步&#xff1a;连接数据库 第三步&#xff1a;配置application.yml文件 第四步&#xff1a;开始编码实现 第一步&#xff1a;首先引入依赖 //mysql依赖<dependency><groupId>mysql</groupId><artifactId>…