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

应用层之网络应用模型,HTTP/HTTPS协议

应用层是网络协议栈的最顶层,直接为应用程序提供通信服务,定义了不同主机间应用进程交互的规则,包括报文类型、语法、语义及通信时序

一、网络应用模型

1.定义及特点

模型定义核心特点典型应用场景
C/S客户端向服务器发起请求,服务器集中处理并响应资源,依赖中心化架构1. 角色明确(客户端与服务器分离)2. 资源集中在服务器端 3. 依赖网络稳定性与服务器性能 4. 易于管理和维护Web服务(HTTP)、邮件系统(SMTP)、数据库管理、在线支付
P2P节点间直接通信,无中心服务器,每个节点既是客户端又是服务器1. 去中心化,节点对等 2. 资源共享与分布式存储 3. 高扩展性与容错性 4. 依赖节点贡献资源文件共享(BitTorrent)、流媒体(PPLive)、区块链(比特币)、即时通信(Skype)
  1. 架构与通信方式
  • C/S架构
    • 分层结构:客户端仅负责请求与展示,服务器处理逻辑与数据存储。
    • 通信流程:单向请求-响应模式,客户端通过TCP/IP协议连接服务器端口(如HTTP的80端口)
    • 局限性:单点故障风险(服务器宕机导致服务中断);扩展需依赖负载均衡或集群技术 。
  • P2P架构
    • 覆盖网络(Overlay):
      覆盖网络是P2P架构的逻辑核心,通过在物理网络(Underlay)之上构建虚拟拓扑结构,实现节点的自组织与资源定位。其核心形式包括:
      1. 结构化覆盖网络

        • DHT(分布式哈希表): 将资源标识(哈希值)与节点逻辑地址绑定,通过一致性哈希算法(如SHA-3)将资源均匀分布到网络中。例如,Chord协议将节点和资源ID映射到环形拓扑中,每个节点维护一个Finger表(记录距离指数级递增的邻居),实现O(log N)复杂度的资源定位。应用场景 :以太坊节点发现(基于Kademlia DHT)、BitTorrent无Tracker种子分发
        • Chord原理: 节点通过查询Finger表中的“最近但不超过目标ID”的节点,逐步逼近目标资源(如资源ID=54的查找路径:N8→N42→N51→N56)
      2. 非结构化覆盖网络:

        • 泛洪广播机制:节点随机连接邻居,通过TTL(生存时间)和跳数控制查询范围。例如,Gnutella节点收到查询请求后广播至所有邻居,直到找到匹配资源或TTL耗尽。
        • 超级节点优化: 引入高带宽节点作为超级节点(如KaZaA),缓存热门资源索引,减少广播开销
    • 通信流程
      P2P通信通过直接节点交互实现高效分发,典型案例如BitTorrent:
      1. 资源分片与分发逻辑
        • 种子文件(.torrent): 包含文件元数据(分片哈希、Tracker/DHT信息)。种子文件通过哈希校验(如SHA-1)确保数据完整性。
        • 分片交换(Piece Exchange): 节点并行下载不同分片,同时为其他节点上传已下载分片。下载优先级策略(如“最稀缺优先”)优化全局分发效率。
      2. 传输优化技术
        • 并行连接: 单个节点同时与多个Peer建立TCP/UDP连接(如BitTorrent客户端默认连接50个Peer)。
        • 本地Peer交换(PEX): 节点交换已知Peer列表,加速资源定位(如Transmission客户端支持PEX)。
        • WebTorrent扩展: 基于WebRTC实现浏览器内P2P传输,兼容传统BitTorrent协议。
    • . 穿透技术
      P2P节点常位于私有网络(NAT后),需NAT穿透(如STUN/TURN协议)解决私有网络节点连接问题.
  1. 优缺点
模型优点缺点
C/S- 集中管理,安全性高(如权限控制)- 数据一致性易维护- 适合复杂业务逻辑处理- 服务器压力大,扩展成本高- 单点故障风险- 客户端依赖服务器响应速度
P2P- 高扩展性(节点越多性能越优)- 容错性强(部分节点故障不影响整体)- 节省服务器成本- 管理复杂(节点自治性强)- 安全性挑战(如DDoS攻击、版权问题)- 依赖节点资源贡献(可能“搭便车”现象)

二、HTTP/HTTPS

一、核心定义与特点

特性HTTPHTTPS
基础定义基于TCP/IP的无状态协议,用于客户端与服务器间明文传输超文本资源(如HTML、图片)HTTP的安全扩展,通过SSL/TLS加密层实现数据加密传输及身份认证
默认端口80443
数据传输方式明文(未加密),易被中间人窃听或篡改加密传输(结合对称加密与非对称加密),防止数据泄露
身份验证无验证机制,服务器身份无法保证需CA签发数字证书验证服务器身份,防止钓鱼攻击
性能开销低(无加密流程)较高(TLS握手延迟),但现代优化技术(如TLS 1.3)显著降低影响
安全性保障无完整性校验与防篡改机制通过消息认证码(MAC)和数字签名确保数据完整性

二、HTTPS安全机制

  1. 加密技术
    • 非对称加密(RSA/ECC):用于握手阶段交换密钥。客户端用服务器公钥加密随机生成的对称密钥(预主密钥),服务器用私钥解密
    • 对称加密(AES):后续数据传输使用共享的对称密钥加密(对数据加密),效率高且适合大数据量.
  2. 身份验证与数字证书:
    • 数字证书作用:验证服务器身份,防止中间人攻击。证书包含公钥、域名、颁发机构(CA)及签名
    • 证书验证流程
      a. 客户端检查证书有效期、颁发机构可信度。
      b. 验证证书链(根证书→中间证书→服务器证书)。
      c. 检查域名匹配性(如访问www.example.com的证书需包含该域名)
  3. 完整性保护:
    消息认证码(MAC):通过HMAC算法生成校验值,确保数据未被篡改。

三、 HTTPS握手流程与通信流程

在这里插入图片描述

一、HTTP握手阶段(TCP三次握手)

三次握手确保双方具备双向通信能力,为后续HTTP/TLS数据传输提供可靠通道。

  1. SYN(客户端 → 服务器)

    • 客户端发送带有初始序列号的SYN包(如Seq=100),发起连接请求。
    • 作用:告知服务器客户端准备通信,并同步初始序列号。
  2. SYN + ACK(服务器 → 客户端)

    • 服务器响应SYN包,返回SYN+ACK包(Seq=300,ACK=101)。

    • 作用 :

      • 确认客户端的SYN(ACK=101表示已收到Seq=100);
      • 发送服务器自身的初始序列号(Seq=300)。
  3. ACK(客户端 → 服务器)

    • 客户端回复ACK包(Seq=101,ACK=301),确认服务器响应。
    • 作用:双方确认序列号同步,TCP连接正式建立。
二、TLS握手阶段(加密参数协商与密钥交换)

协商加密算法、验证身份、生成会话密钥,建立安全通信通道。

  1. ClientHello(客户端 → 服务器)
    • 发送支持的TLS版本(如TLS 1.3)、加密套件列表(如AES-GCM)、随机数(Client Random)。
    • 作用:告知服务器客户端支持的加密能力。
  2. ServerHello(服务器 → 客户端)
    • 返回选定的TLS版本加密套件(如ECDHE-RSA-AES128-GCM)、随机数(Server Random)。
    • 作用:确定双方使用的加密参数。
  3. Certificate(服务器 → 客户端)
    • 发送服务器的数字证书(含公钥),由CA签发。
    • 作用:客户端验证服务器身份(防止中间人攻击)。
  4. ServerHelloDone(服务器 → 客户端)
    • 通知客户端服务器参数发送完毕,等待客户端响应。
  5. ClientKeyExchange(客户端 → 服务器)
    • 客户端生成预主密钥(Pre-Master Secret),用服务器公钥加密后发送。
    • 作用:结合Client Random和Server Random生成主密钥(Master Secret),用于派生会话密钥。
  6. ChangeCipherSpec(客户端 → 服务器)
    • 客户端通知服务器:后续消息将使用协商的加密套件和密钥加密。
  7. Finished(客户端 → 服务器)
    • 发送加密的验证消息,确保握手过程未被篡改。
  8. ChangeCipherSpec(服务器 → 客户端)
    • 服务器确认切换到加密通信模式。
  9. Finished(服务器 → 客户端)
    • 服务器发送加密验证消息,双方确认握手完成。

TLS握手通过非对称加密交换密钥 + 对称加密传输数据,实现以下安全目标:

  • 机密性:数据加密传输(如AES-GCM);
  • 完整性:HMAC校验防篡改;
  • 身份认证:CA证书验证服务器身份。

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

相关文章:

  • 深度解析manus:技术原理剖析、开源平替方案架构分析
  • 搜广推校招面经五十四
  • linux 命令 vim
  • 【认知框架重构】
  • ubuntu 没有网卡的解决方案
  • 信贷系统的业务流程
  • HTML 专栏总结:回顾与展望
  • Java Stream API 之 flatMap
  • 学习使用 Git 和 GitHub 开发项目的教程推荐
  • Etcd 服务搭建
  • Word 小黑第29套
  • 【k8s】containerd兼容docker镜像
  • 3DXML 与 SOLIDWORKS 格式转换:技术协同及迪威模型方案
  • 【JavaScript】三、数据类型
  • 【第13节】windows sdk编程:GDI编程
  • LeetCode 452. 用最少数量的箭引爆气球 java题解
  • springboot实现调用百度ocr实现身份识别
  • Joker靶机实战攻略
  • 《大语言模型》学习笔记(三)
  • 【R语言】lm线性回归及输出含义,置信区间,预测,R方,ggplot 拟合直线