Computer NetworkNotes

第 01 章:网络全景

zjc 于 2026-01-01 发布

这是《计算机网络 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 计算机网络的目标说起来很简单:让两台机器可靠地交换数据。但为了这个目标,系统需要解决寻址、路由、握手、可靠性、拥塞控制、安全、命名、负载均衡、移动性、延迟和海量并发等问题。

本章先建立网络全景图,后续章节再逐层拆解 DNS、TCP、TLS、HTTP、负载均衡和生产排障。

1.1 从一次请求开始

当你在浏览器访问:

https://www.example.com/order/10001

系统大致经历:

flowchart TB
    A[输入 URL] --> B[DNS 解析]
    B --> C[TCP 三次握手]
    C --> D[TLS 握手]
    D --> E[发送 HTTP 请求]
    E --> F[负载均衡]
    F --> G[应用服务]
    G --> H[数据库/缓存/中间件]
    H --> G
    G --> F
    F --> E
    E --> I[渲染响应]

每一步都可能出现问题:

步骤 常见故障
DNS 解析失败、缓存过期、地域调度错误
TCP 握手超时、连接数耗尽、网络丢包
TLS 证书过期、协议不兼容、SNI 配置错误
HTTP 语义错误、超时、重试风暴
负载均衡 后端不健康、会话粘滞、流量倾斜
应用 线程池满、下游依赖慢、内存溢出
数据层 慢查询、锁等待、连接池耗尽

网络排障不是只看 ping,而是沿着请求路径定位失败层。

1.2 分层思想

网络采用分层设计,每层只解决自己的问题,并向上层提供服务。

常见模型:

OSI 七层 TCP/IP 常见分层 作用
应用层 应用层 HTTP、DNS、TLS、RPC
表示层 应用层 编码、加密、压缩
会话层 应用层 会话管理
传输层 传输层 TCP、UDP、端口
网络层 网络层 IP、路由、ICMP
数据链路层 链路层 以太网、ARP、交换机
物理层 链路层 光纤、网线、无线信号

工程视角可以简化成:

Application
Transport
Network
Link
Physical

分层的好处:

  1. 模块化;
  2. 便于排障;
  3. 协议可以独立演进;
  4. 不同网络技术可以互通;
  5. 问题可以逐层定位。

1.3 数据是如何封装的

应用发送一段数据时,网络协议栈会逐层加头。

Data
  -> TCP Segment = TCP Header + Data
  -> IP Packet = IP Header + TCP Segment
  -> Frame = Ethernet Header + IP Packet + FCS

接收方反向解封装:

Frame
  -> IP Packet
  -> TCP Segment
  -> Application Data

几个关键概念:

概念 说明
MTU 链路层单帧最大载荷,常见 1500 字节
MSS TCP 单段最大数据量,常见 1460 字节
分片 IP 层拆包
分段 TCP 按 MSS 拆数据
PMTUD 路径 MTU 发现
Nagle 小包合并算法
Delayed ACK 延迟确认

如果链路上 MTU 配置错误,可能出现 TCP 握手成功但大包传输失败的现象。

1.4 寻址与路由

每台联网设备需要地址。

IP 地址

IPv4:

192.168.1.10/24

IPv6:

2408:8207:1234:abcd::1/64

/24/64 表示网络前缀长度。地址由网络部分和主机部分组成。

路由

路由器根据路由表决定下一跳:

Destination / Mask   Next Hop
0.0.0.0/0           Gateway
10.0.0.0/8          Core Router
192.168.1.0/24      Local Interface

查看本机路由:

ip route

查看路径:

traceroute www.example.com

1.5 域名解析

人使用域名,网络使用 IP,DNS 负责转换。

www.example.com
  -> Local DNS
  -> Root DNS
  -> TLD DNS
  -> Authoritative DNS
  -> IP Address

常见记录:

类型 说明
A IPv4
AAAA IPv6
CNAME 别名
MX 邮件
TXT 文本验证、SPF
NS 授权 DNS
SRV 服务发现

排查:

nslookup www.example.com
dig www.example.com +trace

DNS 缓存会带来解析延迟,也会在切换流量时造成旧地址继续被访问。

1.6 传输层:TCP 与 UDP

维度 TCP UDP
连接 面向连接 无连接
可靠性 可靠 尽力而为
顺序 有序 无序
流控 滑动窗口
拥塞控制 应用自定义
传输单位 Segment Datagram
适用 HTTP、数据库、RPC 视频、游戏、DNS、QUIC

TCP 提供可靠字节流,但可靠性不等于业务成功:

  1. 请求可能到达但对端处理失败;
  2. 连接可能建立但服务超时;
  3. 超时重传可能造成延迟毛刺;
  4. 半打开连接需要心跳检测;
  5. 应用层仍需要幂等和重试策略。

1.7 应用协议

HTTP

HTTP 是无状态请求响应协议。

GET /api/orders/10001 HTTP/1.1
Host: api.example.com
Accept: application/json

HTTPS

HTTPS = HTTP + TLS。

TLS 提供:

RPC

微服务内部常用 RPC:

Client Stub
  -> Network
  -> Server Stub
  -> Business Method

相比 HTTP,RPC 通常更关注:

1.8 延迟与带宽

指标 含义
Bandwidth 单位时间可传输数据量
Latency 一个包从 A 到 B 的时间
RTT 往返时间
Jitter 延迟抖动
Packet Loss 丢包率
Throughput 实际吞吐

一个近似关系:

throughput <= bandwidth
transfer time = transfer_size / throughput
response time = network RTT + queueing + processing

跨城网络 RTT 通常明显高于同城。设计系统时要考虑:

  1. 减少请求次数;
  2. 批量读取;
  3. 缓存热点;
  4. 就近部署;
  5. 控制响应体大小;
  6. 使用长连接;
  7. 异步化非关键链路。

1.9 生产网络观测

常用命令:

ping www.example.com
traceroute www.example.com
mtr www.example.com
curl -v https://www.example.com
ss -s
ss -ntp
netstat -i

抓包:

tcpdump -i any host www.example.com and port 443 -w debug.pcap

分析:

wireshark debug.pcap

生产排障要看:

  1. 客户端本地网络;
  2. DNS 解析;
  3. TCP 连接;
  4. TLS 握手;
  5. 负载均衡;
  6. 服务端日志;
  7. 链路追踪;
  8. 依赖服务状态。

本章小结

计算机网络由分层协议组成,数据经过逐层封装、路由和传输,再由接收方解封装。DNS 负责命名,IP 负责寻址,TCP/UDP 提供传输语义,HTTP/TLS 支撑现代应用。生产排障的关键是把请求拆成路径,逐层确认延迟、失败和安全边界。

思考题

  1. 一次 HTTPS 请求包含哪些关键阶段?
  2. 分层模型对故障排查有什么帮助?
  3. MTU、MSS、IP 分片和 TCP 分段有什么区别?
  4. TCP 可靠是否代表业务请求可靠?
  5. 如何定位“请求偶发超时”这类网络问题?