Skip to content

计算机网络与通信协议

计算机网络解决的不是“把一段文本发出去”这么单一的问题,而是让不同设备、不同操作系统和不同链路上的程序,能够找到彼此、建立通信、控制发送速度、发现错误,并用双方都理解的格式交换数据。

一次 HTTPS 请求至少会经过域名解析、路由选择、邻居解析、链路传输、TCP 或 QUIC、TLS、HTTP、代理和应用服务。每一层都可能成功,也都可能独立失败。学习网络协议的关键,是先建立一条完整链路,再逐层进入报文和状态机。

一条请求穿过网络的完整路径

学习路线

阶段需要回答的问题对应内容
1. 建立全局模型数据为什么要分层?Frame、Packet、Segment 有何区别?分层、寻址与路由
2. 理解可靠传输TCP 如何确认、重传、控流和控制拥塞?UDP 为什么仍然重要?TCP、UDP 与 Socket
3. 理解应用协议TLS、HTTP/2、HTTP/3、WebSocket、gRPC 如何工作?现代应用与实时协议
4. 建立容量意识一台主机能维持多少连接?瓶颈为何不只是端口?容量、并发与性能
5. 形成排障方法DNS 正常为何仍打不开?小包正常、大包为何卡住?网络排障方法与案例
6. 扩展特殊网络MCU、工业现场和低功耗设备使用哪些协议?嵌入式与工业通信协议

分层模型

OSI 七层模型适合描述职责,TCP/IP 模型更贴近互联网实现。工程排障通常使用五层表达:应用层、传输层、网络层、链路层和物理层。

OSI 与 TCP/IP 分层

工程层次主要对象关键职责常见协议与技术
应用层Message、Frame、RPC业务语义、认证、缓存、消息边界HTTP、DNS、WebSocket、SSE、gRPC、MQTT
安全与会话Record、Session身份认证、机密性、完整性、会话恢复TLS 1.3、DTLS
传输层Segment、Datagram、Stream端到端交付、顺序、重传、流控、拥塞控制TCP、UDP、QUIC
网络层Packet跨网寻址、路由选择、逐跳转发IPv4、IPv6、ICMP、OSPF、BGP
链路层Frame当前广播域的一跳交付Ethernet、Wi-Fi、ARP、NDP、VLAN
物理层Bit、Signal电气、光学或无线信号传输双绞线、光纤、射频

发送端从上向下逐层添加头部,接收端按相反方向解封装。每层只解释自己的头部,并把 Payload 交给上层。HTTP 不需要知道 Wi-Fi 的调制方式,交换机也不需要理解 JSON 字段。

一次请求的最小心智模型

假设浏览器访问 https://api.example.com/orders

  1. DNS 把域名解析为 IPv4 或 IPv6 地址。
  2. 操作系统查询路由表,决定出口接口和下一跳。
  3. ARP 或 NDP 把下一跳 IP 映射为链路地址。
  4. TCP 完成三次握手,或 QUIC 直接在 UDP 上建立安全连接。
  5. TLS 验证证书并协商会话密钥。
  6. HTTP 发送方法、路径、Header 和 Body。
  7. CDN、负载均衡与反向代理可能终止连接并建立新的上游连接。
  8. 应用处理请求,响应沿协议栈反向返回。

这条链路说明两个重要边界:

  • 连接成功不等于请求成功:TCP 建立只证明端口可达,不能证明 TLS、HTTP 或业务正常。
  • 应用慢不一定是代码慢:DNS、重传、代理排队、连接池和下游服务都可能增加首字节时间。

核心对象速查

对象解决的问题容易混淆的边界
MAC 地址当前二层网络中的接口寻址不会跨路由器端到端传递
IP 地址网络层主机或接口寻址地址可达不代表端口开放
Port区分主机上的传输层端点服务端一个端口可承载大量连接
Socket应用与内核协议栈之间的状态接口不是一根物理连接,也不等同于 TCP
TCP 连接可靠、有序的双向字节流没有应用消息边界
UDP 数据报保留边界的无连接消息不承诺到达、顺序和去重
QUIC StreamQUIC 连接中的独立可靠字节流共享连接级拥塞控制
HTTP Request一次应用层请求可能复用既有连接或 Stream

协议不是孤立选项

协议选型要同时考虑数据方向、可靠性、时延、网络环境和部署能力。

需求常见选择设计重点
普通 Web APIHTTPS + HTTP/2 或 HTTP/3幂等、缓存、超时、连接池
服务端单向事件流SSE事件 ID、代理缓冲、断线补发
浏览器双向消息WebSocket心跳、背压、重连、业务确认
微服务 RPCgRPCProtobuf 兼容、Deadline、重试预算
实时音视频WebRTCICE、TURN、码率控制、抖动缓冲
设备遥测与控制MQTT、CoAPQoS、会话、离线队列、设备身份
高频可丢状态UDP 或 QUIC Datagram序号、过期策略、应用层限速

学习完成后的验证

只记住协议定义还不足以理解网络。至少应能够完成以下验证:

bash
# 域名解析与权威链路
dig example.com
dig +trace example.com

# 路由与邻居
ip route get 1.1.1.1
ip neigh show

# 连接、TLS 和 HTTP 分阶段耗时
curl -sS -o /dev/null \
  -w 'dns=%{time_namelookup} connect=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' \
  https://example.com/

# Socket 与 TCP 状态
ss -s
ss -tanp

# 保留完整报文证据
sudo tcpdump -i any -nn -s 0 -w network.pcap

后续页面会围绕这些命令建立完整解释:命令观察的是哪一层、结果说明什么、不能说明什么,以及下一步应收集哪项证据。

相关专题

别急,先让缓存热一下。