网络核心知识点¶
1. TCP 与 UDP¶
TCP 面向连接,提供可靠、有序、无重复的数据流,具有流量控制和拥塞控制,适合银行交易、文件传输和网页请求。UDP 无连接,不保证可靠性和顺序,协议首部和处理机制通常较少,但不保证端到端传输更快;常用于直播、实时音视频和 DNS 等场景,可靠性等机制需由应用或更高层补充。
TCP 三次握手:客户端发送 SYN,服务端回复 SYN + ACK,客户端回复 ACK。它用于确认双方发送和接收能力,避免历史连接请求造成误建立。四次挥手通常为主动关闭方发送 FIN、对方回复 ACK、对方处理完数据后发送 FIN、主动关闭方回复 ACK。TIME_WAIT 用于保证最后 ACK 到达并等待旧报文过期。
2. IPv4 与子网¶
IPv4 地址为 32 位。/24 掩码为 255.255.255.0,通常有 254 个可用主机地址;/26 每个子网 64 个地址,通常有 62 个可用地址;/30 常用于点到点链路,通常有 2 个可用地址。一般公式为 2^(主机位数) - 2,特殊场景需按题设核验。
网络地址是主机位全 0,广播地址是主机位全 1,两者通常不能分给主机。计算广播地址的步骤:主机位为 32 - 前缀长度;块大小为 2^主机位;按块大小找网络起点;广播地址为网络起点加块大小减 1。
3. DNS¶
| 记录 | 作用 |
|---|---|
| A | 域名到 IPv4 |
| AAAA | 域名到 IPv6 |
| CNAME | 别名指向规范域名 |
| MX | 邮件服务器 |
| PTR | IP 到域名的反向解析 |
| NS | 指定权威名称服务器 |
递归查询由被询问的 DNS 服务器代替请求方继续完成解析,并返回最终结果;迭代查询只返回自己知道的结果或下一级服务器地址,由请求方继续询问。主机向本地 DNS 请求最终 IP 通常属于递归,本地 DNS 依次向根、顶级域和权威 DNS 询问通常体现为迭代。题目若表述为“本地 DNS 代替客户端向根域名服务器发起查询”,存在口径歧义:按请求方角色看,本地 DNS 对客户端承担递归;按本地 DNS 与根服务器的单次交互看,通常是迭代。正向查询是域名查 IP,反向查询是 IP 查域名。
4. 网络层协议辨析¶
ICMP 工作在网络层,配合 IP 报告差错和诊断连通性,ping 使用 Echo 请求/应答,traceroute/tracert 用于追踪路径。ARP 根据 IP 找 MAC;NAT 做私网 IP 与公网 IP 转换;DHCP 动态分配 IP 地址;TCP/UDP 传输用户数据;TLS/IPsec 提供加密通信。ICMP 不负责传输业务数据、不做地址转换。
5. 介质访问与传输控制¶
CSMA/CD 的基本流程是先侦听、空闲后发送、发送过程中检测冲突,冲突后停止发送并随机退避,再尝试重传。它针对传统共享式有线以太网,典型前提是半双工;全双工交换式以太网不存在共享冲突域,通常不需要使用 CSMA/CD。无线局域网由于难以边发送边可靠检测冲突,主要使用 CSMA/CA。
TCP 拥塞控制的典型机制包括慢启动、拥塞避免、快速重传和快速恢复;停止-等待属于较基础的可靠传输或流量控制机制,不是 TCP 拥塞控制算法。
6. HTTP/HTTPS¶
HTTP 默认端口 80,HTTPS 默认端口 443,HTTPS 可以理解为 HTTP 加 TLS,主要提供机密性、完整性和身份认证。HTTPS 不等于业务绝对安全,弱密码、越权和业务逻辑漏洞仍需单独防范。
7. RARP、网桥与总线¶
RARP:由 MAC 地址查询 IPv4 地址¶
RARP(Reverse Address Resolution Protocol,反向地址解析协议)解决的是“设备知道自己的 MAC 地址,但不知道自己的 IPv4 地址”这一问题。它常见于早期无盘工作站:机器没有本地磁盘保存网络配置,启动后先通过网卡取得 MAC 地址,再向局域网中的 RARP 服务器请求与该 MAC 对应的 IP 地址。
可以把它理解成查名册:MAC 地址像设备的硬件编号,RARP 服务器维护“硬件编号 → IP 地址”的对应表。设备广播请求,服务器查表后返回分配给该设备的 IP 地址。RARP 主要只解决 IP 地址映射,不能像现代 DHCP 那样灵活提供子网掩码、默认网关、DNS 等完整网络配置,因此后来通常由 BOOTP、DHCP 等机制取代。
例子:一台无盘工作站启动时只知道网卡 MAC 为 08-00-2B-01-02-03。它广播“这个 MAC 对应的 IP 是什么?”,RARP 服务器查到配置后回复 192.168.1.20。工作站随后使用该 IP 参与 IPv4 通信。
| 协议 | 已知 | 要查询/获取 | 典型用途 |
|---|---|---|---|
| ARP | IPv4 地址 | 局域网内对应的 MAC 地址 | 已知目标 IP,准备封装以太网帧 |
| RARP | MAC 地址 | 对应的 IPv4 地址 | 早期设备启动时获取自身 IP |
| DHCP | 客户端标识/网络接口 | IP 及掩码、网关、DNS 等配置 | 自动完成较完整的主机网络配置 |
记忆方向:ARP 是“IP → MAC”;RARP 是“MAC → IP”。二者不是把数据包转发到远端的路由协议。RARP 依赖本地广播域内可达的服务器,且功能有限,所以现代网络配置通常使用 DHCP。
网桥工作在数据链路层,依据 MAC 地址学习、转发或过滤帧,通常不隔离广播域,也不负责 IP 路由;多桥路径可能产生环路,需要生成树等机制。
总线位宽与总线带宽¶
- 总线位宽:总线一次可以并行传送多少个 bit,回答“一次搬多少”。例如 64 位总线一次传送 64 bit,也就是 8 Byte。
- 总线带宽:总线单位时间内能够传送的数据量,回答“一秒搬多少”。带宽不仅由位宽决定,还与传送频率有关。
可以类比水管:位宽像水管的粗细,传送频率像每秒进行多少次输送,带宽是最终每秒流过的水量。二者不能混为一谈:位宽大,不代表带宽一定大;如果传送频率很低,带宽仍可能不高。
理想峰值带宽公式:
计算例子:一条 64 位总线,传送频率为 100 MHz,即每秒传送 100,000,000 次:
这里是理论峰值。实际吞吐量通常更低,因为还会受到协议控制信息、等待周期、总线仲裁、设备处理速度和内存响应速度等因素影响。
易错辨析:
- 位宽的常用单位是 bit;带宽要先明确是 bit/s 还是 Byte/s,换算时
8 bit = 1 Byte。 - 频率从 100 MHz 提高到 200 MHz,在其他条件不变时,理论带宽约提高一倍。
- 位宽从 32 位提高到 64 位,在频率不变时,理论带宽约提高一倍。
- “64 位总线”描述的是一次传输能力,不是说每秒传输 64 bit。
- 协议开销、等待和设备能力会使实际吞吐量低于理论值。
考前易错速记¶
RIP 是距离向量协议,以跳数为度量;在 RIP 中最多 15 跳可达、16 跳表示不可达。15/16 跳上限限制度量增长范围,但不能单独消除路由环路或“计数到无穷”及其收敛延迟;这一规则仅适用于 RIP,不能泛化为所有距离向量协议或路由协议。OSPF 是链路状态协议,以开销为度量,收敛较快,适合大中型网络。
IPv4 主机地址 192.168.1.100/28 的主机位为 4 位,块大小为 16。最后一段的网段起点为 96,因此网络为 192.168.1.96/28,广播地址为 192.168.1.111,可用主机地址为 192.168.1.97 至 192.168.1.110,不能直接按 /24 写成 .255。
来源:专业课速记/09_考前必背清单.md
大纲补充:物理层与传输介质
物理层负责把比特转换为适合介质的信号并传送,规定接口的机械、电气、功能和过程特性,不解释帧和 IP 地址。数据是所表达的信息,信号是数据的电、光或电磁表现;数字数据既可以经编码作为基带信号传输,也可以经调制在载波上传输。单工为单向,半双工为双方可发但不能同时,全双工为双方可同时收发。
双绞线成本低、易部署,但距离和抗干扰能力受线材与环境影响;同轴电缆具有屏蔽结构;光纤用光传输,抗电磁干扰、适合高带宽与长距离,但接口和施工有相应成本;无线使用电磁波,便于移动,受干扰、遮挡和共享介质条件影响。中继器、集线器主要在物理层再生或转发信号,集线器不会按目的 MAC 选择端口。
码元速率单位是 Baud,表示每秒信号状态变化的符号数;比特率单位是 bit/s。若每个码元有 M 种可区分状态且等长编码,每个码元最多承载 log₂M bit。频分复用划分频带,时分复用划分时隙,波分复用划分光波长,码分复用用不同码序列区分用户;复用不是把单条信道容量无条件扩大。
补充样例 17:码元速率与信道容量
2400 Baud、每码元 4 种状态,对应比特率 2400×log₂4=4800 bit/s。理想无噪声低通信道带宽 B=3000 Hz、M=4 时,奈奎斯特上限 2B log₂M=12000 bit/s;带噪信道若同为 B=3000 Hz、信噪比 30 dB,先换成线性比 S/N=10^(30/10)=1000,再得香农容量 B log₂(1+S/N)≈29902 bit/s。两式前提不同;若同一题设同时给出噪声与码元状态限制,应兼顾两者,不能只取较大的值。
数据链路层:成帧、透明传输与差错控制
数据链路层把网络层分组封装成帧,在相邻结点间传输。帧定界用于识别开始和结束;透明传输通过字节填充或比特填充避免数据内容被误认为定界符。差错检测常用奇偶校验、校验和或 CRC,检测出错不等于自动纠错,是否重传取决于链路协议。以太网通常检测并丢弃差错帧,不提供链路层确认重传;无线局域网等协议可以使用链路确认与重传。
补充样例 18:比特填充与恢复
按“数据中每出现连续 5 个 1 就插入 0”的规则,原数据 01111110 的 6 个连续 1 被拆开,发送的数据部分为 011111010。接收端在数据部分每读到连续 5 个 1 就删除紧随的填充 0,恢复原串;帧边界标志按协议独立识别,不能把整个帧不加区分地全部做删除处理。
补充样例 19:CRC 模 2 除法
数据为 1101,生成多项式对应 1011(3 次),先补 3 个 0 得 1101000。按异或代替减法:1101000 XOR 1011000=0110000,再异或 0101100 得 0011100,再异或 0010110 得 0001010,最后异或 0001011 得余数 001。发送码字为 1101001,接收端用同一除数相除余数应为 0;余数非 0 可判错,余数为 0 不能保证不存在任何未检出的差错。
流量控制限制发送速度,避免接收方缓冲溢出;差错控制处理丢失、损坏和重复;拥塞控制针对网络资源过载,三者不能混为一谈。停止-等待每次只发一个未确认帧;滑动窗口允许多个帧在途。回退 N 帧(GBN)累计确认,超时后重传最早未确认帧及其后的已发送未确认帧;选择重传(SR)缓存合格的失序帧,选择性重传缺失或损坏的帧。
补充样例 20:ACK 丢失与重复帧处理
停止-等待中,发送方发序号 0 的帧,接收方正确接收、交付并回 ACK,但 ACK 丢失。发送方超时后重发序号 0;接收方根据序号识别重复,不再交付同一数据,只重发 ACK。发送方收到确认后才切换到序号 1。具体 ACK 字段表示“已收序号”还是“下一期待序号”随协议变化,不能脱离题设硬套数值。
若用 k 位序号、序号空间为 2^k,常见 GBN 接收窗口为 1,发送窗口最多 2^k−1;常见等大发送与接收窗口的 SR 要求窗口不超过 2^(k−1),避免新旧帧混淆。例如 k=3 时 GBN 最多 7 帧,SR 等大窗口最多 4 帧;这些结论按标准滑窗假设使用。
介质访问与以太网补充
介质访问控制解决多个结点怎样共享传输介质,常见信道划分、随机访问和轮询访问。共享半双工以太网的冲突检测要求发送持续时间足以覆盖最坏往返传播时延;全双工交换式以太网不再用这一冲突检测约束解释帧长。以太网常见 MAC 地址长 48 位;交换机按源 MAC 学习端口,再按目的 MAC 转发,目的未知时在同一 VLAN 内向其他端口泛洪。
传统不带 VLAN 标签的以太网 MAC 帧从目的地址到 FCS 通常为 64~1518 Byte,包含 14 Byte 首部、46~1500 Byte 数据及填充、4 Byte FCS;前导码、帧开始定界符和帧间隙不计入这个 MAC 帧长度。题目涉及 VLAN、巨型帧或线速开销时,应按指定封装重新计算。
网络性能指标与时延口径
- 速率与带宽:网络题中常用 bit/s 表示额定传输能力;信道频带宽度则用 Hz,不能不看单位直接代换。
- 吞吐量与有效吞吐量:吞吐量是观察时间内实际传送的数据量除以时间;有效吞吐量只计应用有效数据,应明确是否扣除首部、重传和重复数据。
- 时延:一次传输通常拆成发送、传播、处理、排队时延;
发送时延=L/R,传播时延=d/v,L 以 bit、R 以 bit/s、d 与 v 的长度单位一致。 - RTT 与时延带宽积:RTT 是往返时间;链路单向传播在途量常为
R×传播时延,为填满端到端往返管道所需窗口常参考R×RTT,两种乘积不能混用。 - 丢包率与利用率:丢包率为丢失分组数除以发送分组数;利用率是资源实际忙碌程度,利用率高并不保证时延低,排队往往会显著增加。
补充样例 21:有效数据与开销区分
某次统计发送 1000 个分组,其中 20 个未到达,按分组数计丢包率为 20/1000=2%;不能据此直接断言有效吞吐量恰为链路速率的 98%,因为还存在首部、空闲、确认和重传等影响。若每帧 1000 Byte 中仅 900 Byte 是有效数据,连续无间隙发送且无重传,10 Mbit/s 的理想有效吞吐量才可按 10×900/1000=9 Mbit/s 计算。
大纲补充:III-1 性能指标的统计边界
- 误码率 BER:接收错误的比特数与统计比特总数之比,无量纲;不同于按分组数统计的丢包率。仅在各比特独立且误码概率同为 p、帧长固定为 L bit 的模型中,帧至少含一处比特错误的概率才为
1−(1−p)^L;它不等于帧丢失概率,是否丢弃还受检测和协议处理影响。 - 信道利用率:统计时间内信道忙于传输的时间比例;网络利用率可按题设对相关链路利用情况统计,不能直接把各链路百分比相加。重传也可占用信道,因此忙碌不等于有效业务完成。
- 时延抖动:时延的变化程度,单位可用 ms;题目可能取最大与最小时延之差,也可能采用统计定义,必须注明口径。平均时延相同不代表实时体验相同。
- 排队与负载:在稳定的单服务台 M/M/1 理想队列中,到达率 λ、服务率 μ 的单位均为分组/s,且
λ<μ,平均排队时延为λ/[μ(μ−λ)]s,平均系统逗留时间为1/(μ−λ)s。该模型假定泊松到达、指数服务时间、无限缓冲和先来先服务,不能用于直接计算固定长度帧的确定性队列;达到或超过服务能力时,不存在该模型下的有限稳态平均值。
大纲补充:III-2 成帧、可靠传输与流量控制的实现边界
成帧方法除已述填充外,还包括长度计数法和物理层编码违例法:长度字段指示帧范围,但长度字段受损可能导致失步;编码违例法利用正常数据编码中不出现的信号模式定界,仅适用于允许该机制的编码系统。字节填充遇到数据中的标志字节或转义字节时,要按协议插入转义字节;接收端只在帧数据的约定位置解转义,不能删除所有相同字节。
差错控制可以采用前向纠错 FEC 或自动重传请求 ARQ。FEC 利用冗余直接纠正能力范围内的错误,适合反馈困难或重传代价高的场景;ARQ 通常结合检错、序号、确认与超时重传。可靠传输不仅需要检测损坏,还需应对数据帧丢失、ACK 丢失和重复帧;接收端只有正确识别新帧才交付,重发 ACK 不等于再次交付数据。有限重试次数的实际协议可能最终报告失败,“可靠”不是在任意故障下必定送达。
停止-等待可用交替的 0/1 序号区分相邻新旧帧,前提是标准停等模型对报文寿命与迟到副本作相应约束;不能用它处理无限延迟且跨多个序号周期的旧帧。GBN 接收方通常只接受下一期待帧并丢弃失序帧;SR 则缓存接收窗口内的合格失序帧,缺口补齐后按序交付,缓存不等于立即向上交付。
滑动窗口同时体现发送许可和未确认数据上限,ACK 推进窗口,但接收缓存不足也可能限制发送。链路层流量控制面向相邻结点,TCP 流量控制面向端到端接收方;并非所有链路协议都提供流量控制。TCP 发送还受拥塞窗口限制,不能把接收窗口充足理解为可无条件满速发送。
大纲补充:III-2-05 传输层机制——TCP 字节序号、确认与发送边界
服务与字节序号:TCP 提供面向连接、可靠、按序的双向字节流,不保留应用消息边界;一次应用写入可能被拆成多个 TCP 段,多次写入也可能合并,应用应自行约定长度、分隔符等消息边界。两个传输方向各有独立序号空间。TCP 首部 Seq 表示本段第一个数据字节的序号,数据长度为 L 时覆盖 Seq~Seq+L−1,下一个新数据字节序号为 Seq+L。SYN 和 FIN 各占一个序号,纯 ACK 不占序号;序号按 32 位空间循环,以下样例不涉及回绕。
累计 ACK 与失序:ACK 标志有效时,确认号 Ack=N 表示 N 之前的字节已连续收到,下一期待字节为 N,不是“第 N 个报文段已收到”。收到缺口之后的失序数据时,即使缓存它们,累计确认号也不能越过缺口;缺口补齐后,ACK 可以一次跨过多段已缓存数据。支持并协商 SACK 时,可额外告知已收到的非连续字节块,但不能把 SACK 块的右边界当成累计 ACK。TCP 接收端识别重复字节,不把同一字节重复交付给应用;ACK 证明对端 TCP 已接收,不证明对端应用已读取、处理或持久化。
重传与超时:发送端保留尚未确认的数据,利用重传定时器应对数据或 ACK 丢失。RTO 根据往返时间 RTT 及其波动估计,不能简单设为固定 RTT;超时后重传最早未确认数据,RTO 通常指数退避,并触发拥塞控制反应,而不是无条件重发全部已发送数据。经典快速重传通常在收到 3 个重复 ACK 后、不等 RTO 到期就重传疑似丢失段;并非任何一个重复 ACK 都能触发快速重传,现代实现还可能采用其他丢包检测机制。ACK 丢失不必然引发重传:若后续更大的累计 ACK 在超时前到达,也会确认之前的数据。
滑动窗口与流量/拥塞边界:以字节为单位,发送端维护最早未确认位置 SND.UNA 和下一个新数据位置 SND.NXT;累计 ACK 前进会释放重传缓存并推动窗口左沿。接收窗口 rwnd 由接收方通告,保护接收缓冲;拥塞窗口 cwnd 由发送方根据网络反馈维护,约束注入网络的在途数据。简化题设中,未确认在途量为 FlightSize=SND.NXT−SND.UNA,可新增发送量约为 max(0,min(rwnd,cwnd)−FlightSize),不能把 min(rwnd,cwnd) 全部当成额外可发量;实际还须遵守最近通告窗口的右沿、MSS、恢复算法等约束。窗口扩大不等于 ACK 已推进,ACK 推进也不保证窗口变大。
拥塞控制与零窗口:经典 TCP 用慢开始、拥塞避免、快速重传和快速恢复等机制调节 cwnd;慢开始在理想每段确认条件下约每 RTT 翻倍,拥塞避免约每 RTT 增加一个 MSS,不能据此认为每次 ACK 都把 cwnd 翻倍。超时通常比重复 ACK 指示更严重的拥塞;具体阈值和恢复动作取决于算法。rwnd=0 表示接收方暂时无空间,发送方停止发送新的普通数据,并用持续计时/零窗口探测避免窗口更新丢失导致永久等待;这不等于网络拥塞,也不等于连接关闭。rwnd 大而 cwnd 小仍不能大量发送;cwnd 大而 rwnd 小同样受限。
完整过程样例 22:丢段、累计确认、超时重传与窗口推进:假设连接已经建立,客户端 SYN 的 Seq=1000,故首个数据字节 Seq=1001;只考察客户端向服务器发送的方向。MSS=1000 Byte,初始 rwnd=4000 Byte、cwnd=3000 Byte,无在途数据。服务器缓存合格失序数据,忽略延迟 ACK;除明确丢失的数据段外,其余段及 ACK 均正常到达。
| 步骤 | 数据/反馈 | 字节与窗口状态 |
|---|---|---|
| 1 | 客户端连续发送 A、B、C,每段 1000 Byte | A:1001~2000;B:2001~3000;C:3001~4000。发送后 SND.UNA=1001、SND.NXT=4001、FlightSize=3000,受 cwnd 限制暂不能再发新数据。 |
| 2 | A 到达,服务器回 Ack=2001;B 在途中丢失 | 客户端收到 ACK 后,SND.UNA=2001,B、C 共 2000 Byte 尚未累计确认。为突出恢复过程,客户端此时不追加新数据。 |
| 3 | C 到达并被服务器缓存,服务器仍回 Ack=2001 | 2001~3000 仍是缺口,不能回 Ack=4001;本次仅形成 1 个重复 ACK,不够经典快速重传的 3 个重复 ACK 门槛。 |
| 4 | 最早未确认数据的 RTO 到期,客户端重传 B,仍用 Seq=2001、长度 1000 | 重传不分配新序号,SND.NXT 仍为 4001;按本例经典超时处理,cwnd 收缩至 1 MSS=1000 Byte,RTO 退避,暂不发送新数据。 |
| 5 | B 到达,缺口补齐;服务器把 B 与已缓存 C 按序交付,回 Ack=4001 | 累计确认一次跨过 B、C;客户端收到后 SND.UNA=SND.NXT=4001、FlightSize=0,A、B、C 共 3000 Byte 均已确认。 |
| 6 | 假设处理该 ACK 后 cwnd=2000 Byte,服务器此时通告 rwnd=1000 Byte | 新数据发送上限为 min(1000,2000)−0=1000 Byte,由接收方流量控制限制,而不是由拥塞窗口限制。 |
| 7 | 客户端发送 D:Seq=4001、长度 1000;服务器收到后回 Ack=5001 | 发送 D 后在途量为 1000 Byte,不能再加发;收到 Ack=5001 后在途量归零,四段共 4000 Byte 传输完成,后续是否可发还要看最新 rwnd 与 cwnd。 |
样例核对:重传 B 不增加有效数据总字节数,不能将累计有效数据算成 5000 Byte;Seq=4001 是 D 的起点,Ack=4001 则确认 D 之前的连续字节,两者含义不同。步骤 6 的窗口值是本例明确给定的后续状态,不是“每次超时后均固定得到该窗口”的通用结论。若最后的 ACK 丢失且没有更大累计 ACK 到来,发送端可能超时重发 D,服务器应识别重复并再次确认,不重复向应用交付。
大纲补充:III-2-06 应用层——HTTP/HTTPS 请求响应、连接资源与 TLS 边界
请求与响应:HTTP 定义应用层语义。请求包含方法、目标、首部及可选消息体;响应包含状态码、首部及可选消息体。以 HTTP/1.1 文本形式为例,请求行为 GET /index.html HTTP/1.1,Host: example.com 指明目标主机;状态行为 HTTP/1.1 200 OK,Content-Type 说明表示类型,Content-Length 在适用时界定消息体字节数。HTTP/1.1 还可采用分块传输编码等合法定界方式,不能靠“一次 TCP recv”或“一条 TCP 段”判断响应结束。HTTP/2、HTTP/3 使用各自帧格式,不应照搬 HTTP/1.1 的文本报文格式。
语义与状态:GET 获取资源表示,POST 通常提交数据或触发处理,不能把方法名当成安全加密机制。常见 200 表示请求成功,301/302 等表示重定向并通常配合 Location,304 表示条件请求可复用缓存表示且不携带消息体,404 表示目标资源未找到,500 表示服务器内部错误。收到有效的 404/500 响应不等于 TCP 或 TLS 连接失败。HTTP 无状态指协议不强制服务端记住前次请求业务状态,不等于没有连接,也不等于无法通过 Cookie、令牌或服务端会话维持登录状态。
连接与资源:URL 指定协议方案、主机、端口及路径等信息;域名通常需经 DNS 解析为可连接地址,但命中缓存时不必重新查询。一个网页常由 HTML、CSS、脚本、图片等多个资源组成,每个未被缓存或内联提供的资源通常需要自己的请求,不是一个 HTML 响应自动携带全部外部资源。HTTP/1.1 默认持久连接,在消息定界清楚且双方未要求关闭时可复用 TCP;非流水线的顺序复用并不等于多路复用,浏览器也可能开多个连接。HTTP/2 可在同一 TCP 连接上多路复用多个流,但 TCP 丢包仍可能阻塞多个流;HTTP/3 使用基于 UDP 的 QUIC,不走“TCP 三次握手后再建立 TLS”的路径。请求数、资源数、连接数和 TCP 段数不是同一个量。
HTTPS 与 TLS 边界:HTTPS 是受安全传输保护的 HTTP。常见 HTTP/1.1、HTTP/2 的 HTTPS 流程为先建立 TCP,再进行 TLS 握手,验证服务端证书的信任链、主机名及有效期等,并协商密钥,随后使用对称密钥保护 HTTP 数据;通常不要求客户端证书,不能把 HTTPS 说成默认双向证书认证。TLS 提供传输机密性、完整性和对端认证能力,不改变 GET/POST、状态码、缓存等 HTTP 语义。HTTP/3 的 QUIC 集成 TLS 1.3 握手,不使用 TCP;会话恢复、0-RTT 等也会改变具体握手往返,不能给所有 HTTPS 固定套同一时延公式。
安全可见性与信任边界:正常 HTTPS 下,请求路径、查询参数、首部、Cookie 和消息体在 TLS 保护范围内;IP 地址、流量大小与时序仍可能被观察,普通 DNS 查询和未受 ECH 保护的 SNI 也可能暴露域名,因此“HTTPS 隐藏所有元数据”不成立。证书验证成功表示与所认证域名对应的端点建立了受保护连接,不保证网站业务诚实、内容无恶意或服务器存储安全。TLS 在浏览器与实际 TLS 终止端之间生效;若 CDN/反向代理终止 TLS,它能读取 HTTP 明文,其到源站的链路是否加密须另行确认。默认 HTTPS 不自动端到端保护到数据库,也不能替代权限校验、输入校验或防御 XSS/CSRF。
完整场景样例 23:打开 HTTPS 页面并获取外部图片:假设用户首次打开 https://example.com/index.html,无 DNS、连接、TLS 会话及资源缓存;为便于追踪,明确使用 HTTP/1.1 over TLS,同源图片顺序复用同一连接,不考虑代理、重定向、预加载和并行连接。
- 解析与连通:浏览器解析 URL,HTTPS 默认目标端口为 443;DNS 得到服务器 IP 后,与该 IP 的 443 端口完成 TCP 三次握手。此时 TCP 可传输字节,但尚未完成 TLS 身份验证,也尚未拿到网页。
- TLS 建立:浏览器与服务端执行 TLS 握手,验证证书与
example.com匹配且可信,并协商流量密钥。若证书验证失败,应报错/终止,不能当作正常安全连接继续;本例验证成功后才发送普通 HTTP 请求。 - 请求 HTML:浏览器在 TLS 内发送
GET /index.html HTTP/1.1、Host: example.com等首部及首部结束空行;普通 GET 无请求体。服务端返回200 OK、Content-Type: text/html、Content-Length: 1200、空行和恰好 1200 Byte 的 HTML 消息体,其中引用/logo.png。此处 Content-Length 不包括 HTTP 首部、TLS、TCP 或 IP 开销。 - 请求图片:浏览器解析 HTML 后发现外部图片,因无资源缓存,在同一条仍可复用的 TLS/TCP 连接上再发送
GET /logo.png HTTP/1.1。服务端返回200 OK、Content-Type: image/png、Content-Length: 4096、空行及 4096 Byte 的图片消息体。浏览器依消息边界分别读取两次响应并渲染,不把 TCP 分段当成资源边界。 - 完成与复用:本例共取得 2 个资源,发生 2 次 HTTP 请求和 2 次 HTTP 响应,只新建 1 条 TCP 连接、执行 1 次完整 TLS 握手;TCP 段数及 TLS 记录数不能据此确定。连接可留待后续请求复用,也可在空闲超时或显式关闭时结束,不是每个资源下载完都必须重建连接。
- 边界复核:若图片不存在,图片请求可得到 404,但 HTML 仍可显示,TCP/TLS 未必失败;若以后存在有效缓存,则可能无需网络请求,或以条件请求得到 304 后复用本地消息体。若更换为 HTTP/2,可在一个连接上多路复用;若协商 HTTP/3,则需按 QUIC/TLS 流程分析,不能继续沿用本例的 TCP 建连计数。