第20章 重定向与负载均衡
比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向
第20章 重定向与负载均衡
“第20章 重定向与负载均衡”锁定David Gourley、Brian Totty、Marjorie Sayer、Sailu Reddy、Anshu Aggarwal著,陈涓、赵振平译《HTTP权威指南》,人民邮电出版社,2012年,ISBN 9787115281487;英文原版HTTP: The Definitive Guide,O'Reilly Media,2002年9月,656页,ISBN 1565925092。O'Reilly官方页面确认英文首版的5个正文部分、21章和8个附录;中文版完整印刷目录另含“第六部分 附录”和索引。忠实度分母共586个部分、章、编号节/小节、附录与索引节点。
“第20章 重定向与负载均衡”未取得未获授权的完整中文正文;课程以 O’Reilly 官方在线版 与 章级导览 界定首版范围,中文解释、报文、实验和练习均为独立教学重写。现代语义仅以 RFC 9110、RFC 9111 和 RFC 9112 核对差异。
学习目标
- 能解释“第20章 重定向与负载均衡”的全部正式节点及其HTTP事务位置。
- 能绘制请求、响应、TCP连接、中间实体和资源状态。
- 能设计单变量实验,验证“每次流量选择都能解释决策层、缓存影响、健康状态、粘性、回退和安全边界”。
- 能写出含首版边界、原始报文、故障、恢复和复核人的证据包。
从一条可证伪的HTTP事务开始
先预测:只看最终后端而不记录DNS缓存、PAC/WPAD和网络重定向会误判负载均衡。把预测写成“URL/资源、连接、请求报文、中间实体、响应报文、身份与编码”六行,再运行客户端、代理或服务器。结果不同先定位首个字节或状态偏差。
本页主问题是:比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向。每条消息要注明发送者、接收者、HTTP版本、连接复用、逐跳/端到端首部、主体边界与历史协议状态。
验收不变量是:每次流量选择都能解释决策层、缓存影响、健康状态、粘性、回退和安全边界。最终页面正常、状态码200或TLS通道建立都只是局部事实,不能单独证明资源身份、缓存变体、代理转发与证书身份全部正确。
核心词汇与首版边界
↡把客户端或网络流量引向另一位置或服务实例的机制、↡通过轮换同名多地址记录分散客户端选择的方式、↡多个节点通告同一地址并由路由把流量送往某一节点的寻址方式、↡让客户端自动发现代理配置的历史协议集合、↡网络设备与缓存协作重定向Web流量的协议
这些词汇固定在2002年英文首版和2012年中译本语境。在“第20章 重定向与负载均衡”中,HTTP/2、HTTP/3、OAuth、JWT、SameSite、HSTS和现代CDN行为只作独立比较,不得替换HTTP-NG、Digest、WebDAV、WPAD等首版节点。
核心机制深读
先从重定向画出事务
比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向。先固定资源身份和请求目标,再标出客户端、中间实体与源服务器,任何优化或安全结论都不能跳过原始报文。
动手试:先手写预期请求与响应,再抓取正常事务和一个单变量故障事务。标出首个不同字节或状态,不用最终页面猜根因。
区分重定向与DNS轮转
重定向和DNS轮转可能在同一事务中协作,但责任、状态位置和失败语义不同。对比正常请求、单个首部变化和单个连接故障,定位首个偏差。
动手试:先手写预期请求与响应,再抓取正常事务和一个单变量故障事务。标出首个不同字节或状态,不用最终页面猜根因。
让任播经过真实中间实体
代理、缓存、网关或隧道会读取、添加、删除或转发不同首部。逐跳记录Via、Connection列出的字段、缓存决策和认证边界。
动手试:先手写预期请求与响应,再抓取正常事务和一个单变量故障事务。标出首个不同字节或状态,不用最终页面猜根因。
验证WPAD的历史语境
原书写于2002年,以HTTP/1.0、HTTP/1.1、SSL/TLS早期版本和当时Web基础设施为背景。现代实现可做对照,但不能冒充原书节点。
动手试:先手写预期请求与响应,再抓取正常事务和一个单变量故障事务。标出首个不同字节或状态,不用最终页面猜根因。
用WCCP关闭证据门
每次流量选择都能解释决策层、缓存影响、健康状态、粘性、回退和安全边界。证据至少包含原始请求/响应、TCP时间线、中间状态、失败注入、恢复动作和第三方复核。
动手试:先手写预期请求与响应,再抓取正常事务和一个单变量故障事务。标出首个不同字节或状态,不用最终页面猜根因。
首版机制逐项深读
第20章 重定向与负载均衡
“第20章 重定向与负载均衡”在本章用于回答“比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。
20.1 为什么要重定向
“20.1 为什么要重定向”在本章用于回答“比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。
20.2 重定向到何地
“20.2 重定向到何地”在本章用于回答“比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。
20.3 重定向协议概览
“20.3 重定向协议概览”在本章用于回答“比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。
20.4 通用的重定向方法
“20.4 通用的重定向方法”必须在线路语义中判断:请求方法声明意图,状态码表达处理结果,首部携带元数据,主体边界由明确的报文规则确定。
20.4.1 http 重定向
“20.4.1 http 重定向”在本章用于回答“比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。
20.4.2 dns 重定向
“20.4.2 dns 重定向”在名称解析阶段把客户端导向不同地址,能按地域或负载分流,但看不到单个 HTTP 请求路径且受 DNS 缓存影响。
20.4.3 任播寻址
“20.4.3 任播寻址”让多个节点宣告同一网络地址,由路由选择较近路径;它改善入口分布,却需要处理路由变化对会话的影响。
20.4.4 ip mac 转发
“20.4.4 ip mac 转发”在二层改写或选择目标 MAC,把入站包交给集群节点;它依赖同一局域网,HTTP 主机语义仍由上层处理。
20.4.5 ip 地址转发
“20.4.5 ip 地址转发”在网络层重写或转发目标地址以分配流量;返回路径、连接状态和源地址可见性必须与负载均衡策略一致。
20.4.6 网元控制协议
“20.4.6 网元控制协议”在本章用于回答“比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。
20.5 代理的重定向方法
“20.5 代理的重定向方法”必须在线路语义中判断:请求方法声明意图,状态码表达处理结果,首部携带元数据,主体边界由明确的报文规则确定。
20.5.1 显式浏览器配置
“20.5.1 显式浏览器配置”在本章用于回答“比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。
20.5.2 代理自动配置
诊断“20.5.2 代理自动配置”先确认它是转发 HTTP、转换协议还是盲转发字节;三种角色拥有不同的解析能力和安全责任。
20.5.3 web 代理自动发现协议
核对“20.5.3 web 代理自动发现协议”在每一跳保存请求形式、Via、Connection 所列字段与目标端点,区分端到端字段和只作用于当前连接的字段。
20.6 缓存重定向方法
验证“20.6 缓存重定向方法”构造一条合法报文和一条只改一个字节的反例,比较解析、状态码、连接复用与后续消息边界。
20.7 因特网缓存协议
分析“20.7 因特网缓存协议”先计算校正年龄与新鲜寿命,再检查 Vary、ETag 或 Last-Modified 和请求指令;是否联系源站不是唯一证据。
20.8 缓存阵列路由协议
“20.8 缓存阵列路由协议”由缓存键、当前年龄、新鲜寿命、Vary 维度和验证器共同决定;命中不等于新鲜,过期对象也可能通过条件请求复用。
20.9 超文本缓存协议
分析“20.9 超文本缓存协议”先计算校正年龄与新鲜寿命,再检查 Vary、ETag 或 Last-Modified 和请求指令;是否联系源站不是唯一证据。
20.9.1 htcp 认证
“20.9.1 htcp 认证”把 HTTP 等待拆成 DNS、建连、请求发送、服务器处理和响应传输;连接复用影响握手次数,但不能改变报文边界与应用语义。
20.9.2 设置缓存策略
“20.9.2 设置缓存策略”的故障常来自错误变体键、过期算法或共享与私有策略混用;证据包必须包含缓存日志和源站条件请求。
20.10 更多信息
“20.10 更多信息”是原书的延伸资料入口,不增加新的协议结论;使用时必须记录资料版本、适用的 HTTP 年代和与本章结论的对应关系。
复原原始HTTP事务
固定URL、资源、连接与版本,写出请求行、首部、主体、响应和所有中间实体。
HTTP/1.1 message laboratory
第20章 重定向与负载均衡
比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向
GET /resource?chapter=%E7%AC%AC20%E7%AB%A0%20%E9%87%8D%E5%AE%9A%E5%90%91%E4%B8%8E%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1 HTTP/1.1 Host: example.test Connection: keep-alive
章内坐标:第20章 重定向与负载均衡、20.1 为什么要重定向、20.2 重定向到何地、20.3 重定向协议概览、20.4 通用的重定向方法、20.4.1 http 重定向、20.4.2 dns 重定向、20.4.3 任播寻址
可复现实验记录
GET /resource HTTP/1.1
Host: example.test
Connection: keep-alive
Accept: */*HTTP/1.1 200 OK
Date: Tue, 01 Jan 2002 00:00:00 GMT
Content-Type: text/plain
Content-Length: 5
helloevidence = request_bytes + response_bytes + tcp_timeline + intermediary_state + recovery动手试:保存一次正常请求、一次缓存或连接边界和一次单变量故障。记录客户端、代理、缓存、网关与源服务器看到的原始报文,以及统一时间戳和恢复动作。
独立证据门
最小证据包包含:首版节点、URL、原始请求/响应、连接时间线、代理与缓存决策、身份和编码、单变量故障、恢复、偏差、责任人与复核人。
练习
练习
问题 1:为什么“第20章 重定向与负载均衡”必须固定2002年首版?
问题 2:怎样构造“只看最终后端而不记录DNS缓存、PAC/WPAD和网络重定向会误判负载均衡”的最小反例?
问题 3:何时可以认为本页完成独立交接?
本章回顾
“第20章 重定向与负载均衡”的核心是比较HTTP、DNS、任播、IP、代理发现、WCCP、ICP、CARP和HTCP重定向。真正掌握不是记首部名,而是能用原始报文、连接和中间状态证明资源如何被定位、传输、缓存、保护与交付。
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 重定向
把客户端或网络流量引向另一位置或服务实例的机制。掌握标准是能在原始HTTP报文、中间状态或历史规范中定位,并构造最小失败反例。
- DNS轮转
通过轮换同名多地址记录分散客户端选择的方式。掌握标准是能在原始HTTP报文、中间状态或历史规范中定位,并构造最小失败反例。
- 任播
多个节点通告同一地址并由路由把流量送往某一节点的寻址方式。掌握标准是能在原始HTTP报文、中间状态或历史规范中定位,并构造最小失败反例。
- WPAD
让客户端自动发现代理配置的历史协议集合。掌握标准是能在原始HTTP报文、中间状态或历史规范中定位,并构造最小失败反例。
- WCCP
网络设备与缓存协作重定向Web流量的协议。掌握标准是能在原始HTTP报文、中间状态或历史规范中定位,并构造最小失败反例。