【HTTP】详解

embedded/2025/1/17 13:16:30/
http://www.w3.org/2000/svg" style="display: none;">

目录

  • HTTP 基本概念
    • 啥是HTTP,有什么用?
    • 一次HTTP请求的过程
    • 当你在浏览器中输入一个浏览器地址,它会发送什么 ?---(底层流程)
    • HTTP的协议头
      • 请求头(对应客户端)
        • 一些请求头
        • 请求方法
      • 响应头(对应服务端返回)
      • POST与GET的区别
      • HTTP状态码
  • HTTPS

HTTP 基本概念

啥是HTTP,有什么用?

HTTP(HyperTextTransferProtocol,超文本传输协议)是用于客户端和服务器之间数据传输的应用层协议,主要用在Web浏览器和服务器之间的通信。HTTP最初是为传输HTML文档设计的,但现在支持多种类型的数据,如图片、视频、文本等。

举个咱们最熟悉的例子:

  • Web浏览:浏览器使用HTTP从服务器获取网页和资源,如图片和CSS文件。
  • 数据传输:开发者使用HTTP在客户端和服务器之间发送和接收数据,特别是在WebAPI和REST服务中。你看当你通过浏览器访问一个网页的时候。你往往会输入:http://www.baidu.com.
    https://i-blog.csdnimg.cn/direct/6bdf8e191b7e4608a9c7305039d31ecf.png" alt="在这里插入图片描述" />

无状态性:每个HTTP请求都是独立的,不记录之前的任何请求信息,请求一次,就返回一次。这简化了协议的实现,但可能会需要使用其他方式(如Cookies或Sessions)来保存状态。

一次HTTP请求的过程

  1. 建立连接:
    客户端(如浏览器)与服务器之间建立TCP连接。对于HTTPS请求,建立 SSL/TLS安全连接。
  2. 发送请求:
    客户端向服务器发送一个HTTP请求,包括请求行(如GET/index.html HTTP/1.1)、请求头(如Host、User-Agent等)和可选的请求主体(如 POST数据)。
  3. 服务器处理请求:
    服务器接收并解析请求,根据请求路径和参数决定返回的数据或页面内容。
  4. 发送响应:
    服务器向客户端发送HTTP响应,包括状态行(如HTTP/1.1 200 OK)、响应头(如Content-Type等)和响应主体(如网页内容)。
  5. 关闭连接:
    连接可以被立即关闭,或保持一段时间(使用Connection:keep-alive)。
  6. 客户端处理响应:
    客户端解析并展示网页或处理数据。

https://i-blog.csdnimg.cn/direct/0786cf1238824938b032d00c484a0dc5.png" alt="在这里插入图片描述" />

当你在浏览器中输入一个浏览器地址,它会发送什么 ?—(底层流程)

https://i-blog.csdnimg.cn/direct/e4f001c01f1241c7a105a280627447e5.png" alt="在这里插入图片描述" />
https://i-blog.csdnimg.cn/direct/c70e823d020d4d1cac1a924b16e8121f.png" alt="在这里插入图片描述" />https://i-blog.csdnimg.cn/direct/9c18b9fc14094d97922bef1a3419bd72.png" alt="在这里插入图片描述" />

HTTP的协议头

HTTP协议分为请求头和响应头

请求头(对应客户端)

HTTP请求包含三部分:请求行(构建请求阶段),请求头,请求体。
https://i-blog.csdnimg.cn/direct/80d28bf4fa6b425f8eecb59583dae163.png" alt="在这里插入图片描述" />

一些请求头
  • Host:指定服务器的域名和端口号(例如:Host:www.example.com)。
  • User-Agent:描述客户端应用程序的名称和版本(例如:User-Agent:Mozilla/5.0)。
  • Accept:指示客户端可以处理的媒体类型(例如:Accept:text/html)。
  • Content-Type:指示请求主体的数据类型,常见于POST或PUT请求(例如:Content-Type:applic ation/json)。
  • Authorization:包含认证凭据,用于保护的资源访问(例如:Authorization:Basic)。
请求方法

https://i-blog.csdnimg.cn/direct/6302d301757f47d28b37811d2d7e7a84.png" alt="在这里插入图片描述" />

响应头(对应服务端返回)

服务器端接收到客户端的请求,将作出处理并返回相应数据,包含响应行,响应头,响应体。
https://i-blog.csdnimg.cn/direct/90fbcd83b9ff424591811fdb0277ef23.png" alt="在这里插入图片描述" />

POST与GET的区别

  • 数据传输方式
    • GET请求:参数通过URL传递,数据包含在URL的查询字符串中(如?name=John&age=30)。URL长度有限,传输的数据量较小,适用于不敏感数据的请求。
    • POST请求:参数在请求主体中传输,适合发送较大数据量或敏感信息,如表单数据或文件上传。
  • 安全性
    • GET请求:不适合传输敏感数据,因为参数会暴露在URL中,可能被缓存或记录。
    • POST请求:更安全,参数不会显示在URL中,但仍需通过加密(如HTTPS)来保护数据。
  • 缓存
    • GET请求:可被浏览器缓存,适合可重复访问的请求。
    • POST请求:默认不被缓存,一般用于提交数据。

HTTP状态码

状态码类别含义
1xx信息状态码
2xx成功状态码
3xx重定向状态码
4xx客户端错误状态码
404Not Found资源未找到,服务器无法提供请求资源
5xx服务器错误状态码

HTTPS

https_84">什么是https?

HTTPS(HyperTextTransferProtocolSecure)是HTTP协议的安全版本,用于在客户端(如浏览器)和服务器之间安全地传输数据。HTTPS通过加密机制来保护用户和网站之间传输的信息,确保数据的机密性和完整性。

早期很多公司刚起步的时候,使用的应用层协议都是HTTP,而HTTP无论是用GET方法还是POST方法传参,都是没有经过任何加密的,因此早期很多的信息都是可以通过抓包工具抓到的。
为了解决这个问题,于是出现了HTTPS协议,HTTPS实际就是在应用层和传输层协议之间加了一层加密层(SSL&TLS),这层加密层本身也是属于应用层的,它会对用户的个人信息进行各种程度的加密。HTTPS在交付数据时先把数据交给加密层,由加密层对数据加密后再交给传输层。

https_89">https要解决两个问题

  • 加密防篡改
  • 通过证书来验证服务端是可靠的

https://i-blog.csdnimg.cn/direct/70e62c509bc74afaacb82be27cbe1294.png" alt="在这里插入图片描述" />

https_95">https特点

  • 数据加密:
    HTTPS使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密数据。即使数据被第三方拦截,拦截者也无法读耳改数据内容,因为它们是加密的。
  • 数据完整性:
    数据在传输过程中不会被篡改或损坏。加密协议会对数据进行校验,过程中没有被意外或恶意修改。
  • 身份验证:
    HTTPS使用数字证书来验证服务器的身份,确保用户连接到的是真正的服务器,而不是被冒充的网站。这种身份验证可以防止“中间人攻击”,提高信任。

https_103">https工作流程

  • 握手过程:
    • 当你在浏览器中访问一个HTTPS网站时,浏览器和服务器会进行一个加密“握手”过程。
    • 握手的目的是交换加密密钥,并建立一个安全的加密连接。这个过程会使用SSL/TLS协议,并涉及验证服务器的数字证书。
  • 加密传输:
    • 握手成功后,浏览器和服务器之间的所有数据都将通过加密通道传输,确保数据的安全性。
  • 使用数字证书:
    • 网站通过使用由可信的证书颁发机构(CA)签发的数字证书来证明自已的身份。浏览器会检查证书的有效性,并显示安全锁图标,提示用户这是一个安全的连接。


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

相关文章

CV 图像处理基础笔记大全(超全版哦~)!!!

一、图像的数字化表示 像素 数字图像由众多像素组成,是图像的基本构成单位。在灰度图像中,一个像素用一个数值表示其亮度,通常 8 位存储,取值范围 0 - 255,0 为纯黑,255 为纯白。例如,一幅简单的…

鸿蒙-UIAbility组件生命周期

import { AbilityConstant, UIAbility, Want } from kit.AbilityKit;export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {// 页面初始化}// ... }import { UIAbility } from kit.AbilityKit; impor…

标准通上线标准「全文检索」功能,提升查询精准度!

前言 标准全文检索:在大量文档或数据库中查找与特定标准相关的全文内容。这种检索方式对于获取详细、精确的信息非常有用,尤其是在需要查找特定标准、规范或法规的详细条款时。 如何在大量的标准中准确、快速地获取所需的标准信息,同时还能…

PostMan测试webSocket接口(保姆级教程)

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注一下! 也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!让我们在成长的道路上互相学习&…

C 语言中二维数组的退化

目录 1. 一维数组的退化 2.字符串数组的退化 3. 二维数组的退化 3.1 为什么退化为 int (*)[4] 而不是 int **? 3.2举例说明 3.3 .总结 在 C 语言中,数组名在大多数情况下会退化为指向其第一个元素的指针,这种机制称为数组退化&#xf…

NLP DAY1: 文本数据读取

实验介绍 在自然语言处理的第一步,我们要面对的是各种各样以不同形式表现的文本数据,比如,有的是纯 txt 文档,有的是存储在 Excel 中的表格数据,还有的是无法直接打开的 pkl 文件等。刚开始接触编程的同学在这里就犯难…

【springboot】读取本地nacos配置

目录 1. 说明2. 截图示例3. 代码示例4. 关键代码 1. 说明 1.springboot读取服务器上nacos配置会在客户端本地缓存配置。2.在没有服务器nacos配置的情况下,可以在本地新建一个目录,里面放入配置文件,也可以读到配置。3.注意不同版本的nacos配…

路由环路的产生原因与解决方法(1)

路由环路 路由环路就是数据包不断在这个网络传输,始终到达不了目的地,导致掉线或者网络瘫痪。 TTL (生存时间):数据包每经过一个路由器的转发,其数值减1,当一个数据包的TTL值为0是,路…