当前位置: 首页 > article >正文

【HTTP】详解

目录

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

HTTP 基本概念

啥是HTTP,有什么用?

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

举个咱们最熟悉的例子:

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

无状态性:每个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. 客户端处理响应:
    客户端解析并展示网页或处理数据。

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

HTTP的协议头

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

请求头(对应客户端)

HTTP请求包含三部分:请求行(构建请求阶段),请求头,请求体。
在这里插入图片描述

一些请求头
  • 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)。
请求方法

在这里插入图片描述

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

服务器端接收到客户端的请求,将作出处理并返回相应数据,包含响应行,响应头,响应体。
在这里插入图片描述

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?

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

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

https要解决两个问题

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

在这里插入图片描述

https特点

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

https工作流程

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


http://www.kler.cn/a/511350.html

相关文章:

  • 前沿技术趋势洞察与分析:探寻科技变革的多维密码
  • Android Studio:Linux环境下安装与配置
  • Unity补充 -- 协程相关
  • STM32 学习笔记【补充】(十)硬件I2C读写MPU6050
  • 解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题
  • Spring Boot 集成 MongoDB:启动即注入的便捷实践
  • STL--set(集合)
  • 一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用
  • JVM 面试八股文
  • Redis学习笔记1【数据类型和常用命令】
  • 查看代理设置Get-Item Env:https_proxy
  • < OS 有关 > 阿里云:轻量应用服务器 的使用 安装 Tailscale 后DNS 出错, 修复并替换 apt 数据源
  • 安装指南:LLaMA Factory、AutoGPTQ 和 vllm
  • 算法刷题笔记——图论篇
  • Java反射、静态代理、动态代理
  • 以单用户模式启动 Linux 的方法
  • 调试Hadoop源代码
  • 020:为什么 Resnet 如此重要?
  • K8S 容器重启策略
  • C#中如何使用异步编程
  • Mysql--实战篇--@Transactional失效场景及避免策略(@Transactional实现原理,失效场景,内部调用问题等)
  • 深度学习 DAY1:RNN 神经网络及其变体网络(LSTM、GRU)
  • Spring AI入门示例HelloWorld
  • 基于微信小程序的购物系统设计与实现(LW+源码+讲解)
  • 【江西新能源科技职业学院主办 | JPCS(ISSN: 1742-6588)出版,快速见刊检索】2025年可再生能源与节能国际会议(REEC 2025)
  • Windows中安装RabbitMQ