一次网络请求的整个链路过程分析

概述 常见概念说明 域名(Domain) 定义 :易记的网址(如 example),通过DNS解析为I

概述

常见概念说明

域名(Domain)

定义 :易记的网址(如 example),通过DNS解析为IP地址
作用 :提供访问入口,解耦IP变动。
关联性 :域名解析指向网关或负载均衡IP,触发后续路由。

# DNS解析过程演示
$ dig +short google
142.250.217.78

# 多级域名配置
www.example       → Web服务器
api.example       → 接口网关
static.example    → CDN节点

证书 (SSL/TLS Certificate)

定义:用于加密通信的电子文档,验证服务器身份

核心作用

  • HTTPS加密传输
  • 身份认证
  • 防止中间人攻击
# 生成自签名证书
openssl req -x509 -newkey rsa:4096 -nodes \
-keyout server.key -out server.crt -days 365

# Nginx配置示例
server {
    listen 443 ssl;
    ssl_certificate /path/to/server.crt;
    ssl_certificate_key /path/to/server.key;
}

路由(Routing)

定义 :网络数据包从源到目的地的路径选择过程,依赖路由表、协议(如OSPF、BGP)动态决策。
作用 :决定流量如何在不同网络节点间传递
层级 :OSI网络层(L3)核心功能

# Nginx路由规则示例
location /v1/api {
    proxy_pass http://api-v1;
}

location /v2/api {
    proxy_pass http://api-v2;
}

location /static {
    root /var/www/html;
}

上游/下游

基本概念

“上游”(Upstream)和"下游"(Downstream)是两个相对概念,其定义取决于数据流向和依赖关系

数据流 上游 下游
概念角色定位数据流向典型特征
上游数据/请求的来源端产生数据
发起请求
控制节奏
决定协议
下游数据/请求的接收端消费数据
响应请求
依赖上游
被动接收
举例

场景1:HTTP请求响应

  • 请求阶段:客户端作为下游向服务器(上游)发起请求
  • 响应阶段:服务器成为上游向下游(客户端)返回数据
客户端 服务器 请求(下游→上游) 响应(上游→下游) 客户端 服务器

场景2:微服务调用链

  • 上游:每个服务的调用方(网关→Service A的上游是客户端)
  • 下游:被调用方(Service B的下游是数据库)
网关 Service A Service B 数据库

场景3:消息队列系统

# Kafka生产消费模型
producer = KafkaProducer()  # 上游(数据生产者)
consumer = KafkaConsumer()  # 下游(数据消费者)

灰度发布 (Canary Release)

定义:渐进式的新版本发布策略

核心作用

  • 降低发布风险
  • 渐进式流量切换
  • 快速回滚机制
# 基于用户特征的灰度路由
def route_request(user):
    if user.id % 100 < 10:  # 10%灰度流量
        return canary_cluster
    else:
        return production_cluster

流量染色 (Traffic Tagging)

定义:给特定请求添加元数据标记的行为

核心作用

  • A/B测试隔离
  • 链路追踪标识
  • 调试流量标记

网关(Gateway)

定义 :连接不同网络的枢纽(如企业内网与公网)

功能 :

  • 协议转换(如HTTP/HTTPS)
  • 安全控制(防火墙、WAF)
  • 负载均衡(分发流量到上游)
  • API管理(限流、鉴权)

上述交互关系

概念层级核心功能典型应用场景技术示例
域名应用层网络资源标识网站访问DNS解析
example → 192.168.1.1
证书传输层加密通信HTTPS安全连接SSL/TLS证书
Let’s Encrypt
路由网络层路径选择请求转发决策Nginx路由规则
Kubernetes Ingress
上游架构层后端服务抽象负载均衡目标Upstream server_group
Spring Cloud微服务
灰度发布策略风险控制新功能逐步发布按用户ID分流
10%流量切新版本
流量染色流量治理标记识别A/B测试链路追踪HTTP头添加X-Version: canary
网关管理系统入口统一流量管控API聚合与安全Kong网关配置
Spring Cloud Gateway
路由规则 灰度策略 染色流量 客户端 域名解析 API网关 上游v1 上游v2 调试集群 数据库

关键联动 :四者共同构建了 用户请求从发起到响应 的全链路闭环

  • 路由 是路径决策机制
  • 域名解析是流量进入系统的 起点
  • 网关作为 流量枢纽 ,依赖路由策略指引方向
  • 上游是实际业务 执行终端 ,三者形成完整链路。

TLS/SSL

SSL(安全套接层)和TLS(传输层安全)都是加密协议,用于在互联网上提供安全通信

SSL是较早的版本,而TLS是其后续的升级版本。

现在TLS已经取代了SSL,但通常人们还是习惯用SSL来称呼这类协议

SSL的最终版本(3.0)与TLS的第一个版本无明显差异,名称更改只是表示所有权改变

演进关系

SSL1.0 SSL2.0 1995 SSL 3.0 1996 TLS 1.0 1999 TLS 1.1 2006 TLS 1.2 2008 TLS 1.3 2018

协议握手

SSL 3.0握手流程(已淘汰)

客户端 服务器 ClientHello ServerHello + Certificate + ServerHelloDone ClientKeyExchange + ChangeCipherSpec + Finished ChangeCipherSpec + Finished 客户端 服务器

TLS 1.3握手流程(现代标准):双方: 基于DH参数生成密钥(无需额外往返)

客户端 服务器 ClientHello (包含密钥共享) ServerHello + Certificate + Finished + 应用数据 客户端 服务器

双方: 基于DH参数生成密钥(无需额外往返)

HTTPS

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。

  • HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL。其所用 的端口号是 443。

过程大致如下:

  1. 建立连接获取证书:SSL 客户端通过 TCP 和服务器建立连接之后(443 端口),并且在一般的 tcp 连接协商(握 手)过程中请求证书。即

    1. 客户端发出一个消息给服务器,这个消息里面包含了自己可实现的算 法列表和其它一些需要的消息,
    2. SSL 的服务器端会回应一个数据包,这里面确定了这次通信所 需要的算法,
    3. 然后服务器向客户端返回证书。(证书里面包含了服务器信息:域名。申请证书 的公司,公共秘钥)。
  2. 证书验证:Client 在收到服务器返回的证书后,判断签发这个证书的公共签发机构,并使用这个机构的公 共秘钥确认签名是否有效,客户端还会确保证书中列出的域名就是它正在连接的域名

  3. 数据加密和传输:如果确认证书有效,那么生成对称秘钥并使用服务器的公共秘钥进行加密。然后发送给服务 器,服务器使用它的私钥对它进行解密,这样两台计算机可以开始进行对称加密进行通信

CDN 原理

CDN(内容分发网络,Content Delivery Network)是一种通过分布在不同地理位置的服务器网络来加速内容传输的技术

它的主要功能是将网站的静态资源(如图片、视频、样式表等)缓存到离用户更近的服务器上,从而提高访问速度和用户体

CND 一般包含分发服务系统、负载均衡系统和管理系统

  • 分发服务系统:其基本的工作单元就是各个 Cache 服务器。负责直接响应用户请求,将内容快速分发到用户;同时还 负责内容更新,保证和源站内容的同步

    • 根据内容类型和服务种类的不同,分发服务系统分为多个子服务系统,
      • 如:网页加速服务、流媒体加速 服务、应用加速服务等。
    • 每个子服务系统都是一个分布式的服务集群,由功能类似、地域接近的分布部 署的 Cache 集群组成。
    • 在承担内容同步、更新和响应用户请求之外,分发服务系统还需要向上层的管理调度系统反馈各个 Cache 设备的健康状况、响应情况、内容缓存状况等,以便管理调度系统能够根据设定的策略决定由 哪个 Cache 设备来响应用户的请求
  • 负载均衡系统负载均衡系统是整个 CDN 系统的中枢。负责对所有的用户请求进行调度,确定提供给用户的最终访问 地址

    • 使用分级实现。最基本的两极调度体系包括全局负载均衡(GSLB)和本地负载均衡(SLB)
      • GSLB 根据用户地址和用户请求的内容,主要根据就近性原则,确定向用户服务的节点。
        • 一般通过 DNS 解析或者应用层重定向(Http 3XX 重定向)的方式实现
      • SLB 主要负责节点内部的负载均衡。当用户请求从 GSLB 调度到 SLB 时,SLB 会根据节点内各个 Cache 设备的工作状况和内容分布情况等对用户请求重定向。
        • SLB 的实现有四层调度(LVS)、七层调 度(Nginx)和链路负载调度等。
  • 管理系统分为运营管理和网络管理子系统

    • 网络管理系统:实现对 CDN 系统的设备管理、拓扑管理、链路监控和故障管理,为管理员提供对全网资 源的可视化的集中管理,通常用 web 方式实现
    • 运营管理:是对 CDN 系统的业务管理,负责处理业务层面的与外界系统交互所必须的一些收集、整理、 交付工作。包括用户管理、产品管理、计费管理、统计分析等

网络请求

流程图

用户输入URL DNS解析 获取服务器IP 建立TCP连接 HTTPS? TLS/SSL握手 发送HTTP请求 服务器处理请求 生成HTTP响应 返回响应数据 关闭TCP连接

关键解析阶段

DNS解析

浏览器查询本地缓存 → 系统缓存 → 路由器缓存 → ISP DNS 服务器
最终通过递归查询获取目标服务器的真实 IP 地址

日志查询

# 使用 dig 命令追踪DNS解析
dig +trace www.hihonor

TCP 连接建立

经典的三次握手过程:博客

客户端 --> SYN --> 服务器
客户端 <-- SYN-ACK <-- 服务器
客户端 --> ACK --> 服务器

HTTPS 特有步骤:TLS 握手(平均增加 2 RTT 时间)

  • 交换加密套件
  • 验证证书链
  • 协商会话密钥

请求发送阶段

典型 HTTP 请求结构:详细见

GET /api/v1/products HTTP/1.1Host: api.hihonor
User-Agent: Mozilla/5.0
Accept: application/json

服务器处理流程

反向代理 调用 查询 返回数据 封装 渲染 Nginx Tomcat Service MySQL Controller View

响应返回阶段

标准响应结构:详细见

HTTP/1.1 200 OK
Content-Type: application/json
Date: Tue, 01 Apr 2025 03:28:15 GMT

{"products": [...]}

典型耗时分布(基于 4G 网络)

大致范围分布

客户端 DNS服务器 路由器 基站 网关 服务集群 数据库 DNS查询 (UDP 53) 返回IP (120ms) TCP SYN (RTT1) NAT转换 (15ms) TCP SYN (RTT2) SYN-ACK (RTT2) NAT回写 (10ms) SYN-ACK (RTT1) TLS握手 (3 RTT) SQL查询 (80ms) 返回数据 (5ms) HTTP响应 (150ms) 客户端 DNS服务器 路由器 基站 网关 服务集群 数据库

耗时优化矩阵

优化维度技术手段预期收益实施成本
DNSHTTPDNS+LRU缓存-150ms★☆☆
TCPTFO(TCP Fast Open)-1 RTT★★☆
TLS1.3协议+0-RTT-300ms★★☆
HTTP2/3协议+Hpack压缩-40%带宽★★★
后端异步批处理+缓存-50% CPU★★☆
前端资源预加载+懒加载-30% FCP★☆☆

性能基线指标

阶段优秀值达标值待改善
DNS查询<50ms<150ms>300ms
TCP握手<200ms<400ms>600ms
TLS协商<300ms<500ms>800ms
TTFB<500ms<1200ms>2000ms
资源加载<1500ms<3000ms>5000ms

发布者:admin,转转请注明出处:http://www.yc00.com/web/1753909314a5097178.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信