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

【网络】HTTP协议、HTTPS协议

HTTP与HTTPS

HTTP协议概述
  • HTTP(超文本传输协议):工作在OSI顶层应用层,用于客户端(浏览器)与服务器之间的通信,B/S模式
    • 无状态:每次请求独立,服务器不保存客户端状态(通过Cookie/Session扩展状态管理)。
    • 基于TCP:默认端口80(HTTP)、443(HTTPS),保证可靠传输。
    • 请求-响应模型:客户端发起请求,服务器返回响应。
HTTP协议工作方式
  1. 建立TCP连接:客户端与服务器通过三次握手建立TCP连接。
  2. 发送HTTP请求:客户端构造HTTP请求报文并发送。
  3. 服务器处理请求:服务器解析请求,执行逻辑,生成响应。
  4. 返回HTTP响应:服务器构造响应报文并返回。
  5. 关闭TCP连接:默认HTTP/1.1使用持久连接(Connection: keep-alive),可复用连接。
    在这里插入图片描述
HTTP报文格式
  • HTTP报文分为请求报文应答报文,均由起始行首部字段空行实体主体(可选)组成

  • HTTP request

    GET /index.html HTTP/1.1		//起始行:方法+URL+协议版本
    Host: www.example.com			//首部字段:客户端、请求参数
    User-Agent: Mozilla/5.0
    Content-Type: application/x-www-form-urlencoded
    
    username=admin&password=123		//实体主体:get、post等方法携带的参数
    
  • HTTP response

    HTTP/1.1 200 OK				//起始行:协议版本+状态码
    Content-Type: text/html		//首部字段:服务器信息、响应参数等
    Content-Length: 1234
    Set-Cookie: sessionid=abc123
    
    <html>...</html>			//实体主体:返回的数据HTML/json等
    
HTTP请求方法(函数体)
  • get(安全,幂等,url可见):获取资源
  • post(不安全,不幂等):提交数据,参数在请求体中(表单)
  • put(幂等,不安全):更新资源
  • delete(幂等,不安全):删除资源
    在这里插入图片描述
HTTP状态码
  1. 1XX:信息类状态码,100继续发送请求体
  2. 2XX:成功状态码,200请求成功
  3. 3XX:重定向状态码,301/302资源永久重定向
  4. 4XX:客户端错误,401未授权须身份验证;403服务器拒绝请求(权限不足);404资源不存在(隐藏资源),
  5. 5XX:服务器错误,500服务器内部错误
HTTP历史演变
  1. HTTP/1.1:支持持久连接,管道化
  2. HTTP/2.0:二进制分帧,多路复用,首部压缩
  3. HTTP/3.0:基于UDP的QUIC协议,减少延迟
HTTPS(安全通信)
  1. HTTPS通信特性:
    • 数据机密性:防止数据传输过程中被窃听
    • 数据完整性:防止数据在传输过程中被篡改
    • 身份验证:确认服务器(及客户端)身份真实性,避免中间人攻击,依赖数字证书和CA(证书颁发机构)
    • 不可否认性:通过数字签名实现行为可回溯
  2. 对称加密与非对称加密:
    1. 对称加密(如AES、ChaCha20)
      • 特点:加密与解密使用同一密钥,速度快,适合大数据传输。
      • 问题:密钥分发需安全通道,否则可能被截获。
    2. 非对称加密(如RSA、ECC)
      • 特点:公钥加密、私钥解密,解决密钥分发问题,但速度慢(比对称加密慢1000倍以上)。
      • 用途:主要用于交换对称密钥或数字签名。
  3. HTTP优缺点:
    • 优点:数据加密,防窃听与篡改;支持HTTP/2、HTTP/3现代协议,提升网站性能
    • 缺点:需购买和维护SSL/TLS证书;解密加密消耗额外CPU资源;握手延迟增加(可通过TLS 1.3优化)
  4. HTTP与HTTPS
  5. TLS 1.3握手过程
    1. ClientHello(客户端问候)
      • 发送支持的 TLS 版本
      • 列出加密套件(如 ECDHE-RSA-AES256-GCM-SHA384)
      • 生成随机数(Client Random)
    2. ServerHello(服务器响应)
      • 选择 TLS 版本和加密套件
      • 发送服务器证书(含公钥)
      • 生成随机数(Server Random)
    3. 密钥交换
      • 客户端使用服务器公钥加密 “预主密钥”
      • 双方通过 Client Random + Server Random + 预主密钥生成对称会话密钥
    4. 身份验证
      • 客户端验证证书有效性(检查 CA 签名、有效期、CN 是否匹配)
      • 服务器验证客户端证书(可选双向认证)
    5. 加密通信
      • 使用对称密钥加密后续数据
      • 通过 HMAC 保证数据完整性

相关文章:

  • PyTorch系列教程:编写高效模型训练流程
  • go的grpc
  • 视觉 Yolov11 环境配置(GPU版)
  • 使用websocket,注入依赖service的bean为null
  • golang从入门到做牛马:第四篇-Go语言基础语法
  • C++20 模块:告别头文件,迎接现代化的模块系统
  • hyperlane使用SSE实现服务端主动推送
  • 【0013】Python数据类型-列表类型详解
  • 详解常用集合和映射中的线程安全问题
  • 练习题:74
  • svn删除所有隐藏.svn文件,文件夹脱离svn控制
  • 第九章:把函数当变量传递,匿名函数、闭包、panic/recover
  • 背包九讲
  • 全自动数据强制备份程序,无视占用直接硬复制各种数据文件、文档、音视频、软件、数据库等的VSS卷拷贝批处理脚本程序,解放双手,一劳永逸
  • el-table一格两行;概率;find
  • 每日一题——搜索二维矩阵
  • 动态规划--斐波那契类型
  • Java基础系列:深入解析包装器类型与类型转换的奥秘与陷阱
  • C#类型转换基本概念
  • 数据结构链表的C++实现
  • wordpress 4.6/郑州百度搜索优化
  • 做网站推广有前景吗/360手机优化大师下载
  • 做个网站怎么做/最新搜索关键词
  • 外贸企业招聘/惠州seo推广外包
  • 怎么做网页版手机版网站/网络营销模式
  • 服务公司取名/郑州seo使用教程