Files
2026-05-27 23:01:37 +08:00
..
2026-05-24 11:42:38 +08:00
2026-05-24 11:42:38 +08:00
2026-05-24 11:42:38 +08:00
2026-05-24 11:42:38 +08:00
2026-05-24 11:42:38 +08:00
2026-05-24 11:42:38 +08:00
2026-05-24 11:42:38 +08:00
2026-05-24 11:42:38 +08:00

tags, create time
tags create time
计算机网络
网络协议
TCP/IP
HTTP
网络安全
运维
2026-05-17 22:00

计算机网络知识索引

概述

计算机网络是现代软件工程的基石——从浏览器发出一个请求到服务器返回响应,中间经历了 DNS 解析、TCP 三次握手、TLS 握手、HTTP 报文传输等十几道工序。本知识库从零开始,沿着 OSI / TCP-IP 模型的层次逐层深入,同时覆盖工程实践中不可或缺的工具链和安全体系。

[!QUESTION] 为什么学网络这么重要?

  • 排查线上问题(连接超时、延迟飙升、SSL 错误)需要理解协议底层行为
  • API 设计、服务间通信选择(HTTP/gRPC/WebSocket/gRPC-TCP)依赖于对协议的深度理解
  • 高并发场景下的连接复用、零拷贝、epoll 等技术本质都是网络问题的解法
  • 安全审计、渗透防御需要掌握攻击面和各层漏洞原理

文档统计

章节 文档数 文件路径前缀
一、基础概念与分层模型 4 01-基础概念/
二、链路层 5 02-链路层/
三、网络层 8 03-网络层/
四、传输层 6 04-传输层/
五、应用层协议 6 05-应用层协议/
六、Socket 编程 3 06-Socket编程/
七、网络工具与诊断 2 07-网络工具与诊断/
八、网络安全 4 08-网络安全/
九、性能优化 2 09-性能优化/
十、前沿与进阶 4 10-前沿与进阶/
总计 44 —

知识体系

一、基础概念与分层模型

# 主题 链接 说明
1.1 OSI 七层 vs TCP/IP 四层模型 hhs/NETWORK/01-基础概念/01-OSI与TCP-IP模型对比 两种模型的对比、每层职责映射、为什么现实中使用五层模型
1.2 数据封装与解封装 hhs/NETWORK/01-基础概念/02-数据封装与解封装 发送端逐层加头 → 网线比特流 → 接收端逐层剥头
1.3 寻址体系:MAC / IP / Port hhs/NETWORK/01-基础概念/03-寻址体系MAC-IPTPort 三层地址 vs 四层端口,ip:port = 进程 的经典比喻
1.4 带宽、延迟、RTT、吞吐量 hhs/NETWORK/01-基础概念/04-带宽延迟RTT与吞吐量 核心性能指标定义与关系公式 BDP = 带宽 × 延迟
flowchart TD
    subgraph "应用层 L5"
        A["HTTP / DNS / SMTP / FTP"]
    end
    subgraph "传输层 L4"
        B["TCP — 可靠面向连接"]
        C["UDP — 无连接尽最大努力"]
    end
    subgraph "网络层 L3"
        D["IP (v4/v6) / ICMP / ARP / NAT"]
    end
    subgraph "链路层 L2"
        E["Ethernet / Wi-Fi / VLAN / ARP*"]
    end
    subgraph "物理层 L1"
        F["双绞线 / 光纤 / 无线电波"]
    end
    A --> B
    A --> C
    B --> D
    C --> D
    D --> E
    E --> F

[!tip] 记住一句话 每一层只管自己的事,不知道上层在传什么内容,也不关心下层怎么搬。这就是 分层解耦 的威力。

二、链路层

# 主题 链接 说明
2.1 Ethernet 帧结构 hhs/NETWORK/02-链路层/01-Ethernet帧结构 MAC 地址、EtherType、Payload 长度、FCS 校验
2.2 CSMA/CD 与以太网退避 hhs/NETWORK/02-链路层/02-CSMA-CD与以太网退避 碰撞检测、二进制指数退避算法
2.3 MAC 地址与广播域 hhs/NETWORK/02-链路层/03-MAC地址与广播域 全球唯一性、OUI 查询、二层广播 vs 三层组播
2.4 Switch vs Hub vs Router hhs/NETWORK/02-链路层/04-Switch与路由器 冲突域隔离、MAC 表学习、VLAN 划分
2.5 VLAN 与 Trunk hhs/NETWORK/02-链路层/05-VLAN与Trunk 802.1Q 标签、不同 Switch 间的 VLAN 透传

[!question] ARP 为什么跨不了网段? ARP 走的是 二层广播(目的 MAC ff:ff:ff:ff:ff:ff),路由器不转发广播包,因此跨网段必须靠网关做 ARP 代理或发起 Gratuitous ARP。

三、网络层(核心)

# 主题 链接 说明
3.1 IPv4 首部与分段重组 hhs/NETWORK/03-网络层/01-IPv4首部与分段重组 TTL、Identification、DF/MF 标志、MTU 概念
3.2 CIDR 与子网划分 hhs/NETWORK/03-网络层/02-CIDR与子网划分 无类编址、子网掩码计算、超网聚合
3.3 IPv6 地址与扩展头部 hhs/NETWORK/03-网络层/03-IPv6地址与扩展头部 简化首部、128位地址空间、SLAAC 自动配置
3.4 ARP 协议完整流程 hhs/NETWORK/03-网络层/04-ARP协议完整流程 免费 ARP(Gratuitous ARP)、ARP 缓存老化、ARP Spoofing 防护
3.5 ICMP 与 Ping / Traceroute hhs/NETWORK/03-网络层/05-ICMP与Ping-Traceroute Echo Request/Reply、TTL 超时机制实现路由追踪
3.6 静态路由与默认网关 hhs/NETWORK/03-网络层/06-静态路由与默认网关 route 命令、路由表优先级、多网卡策略路由
3.7 动态路由协议 hhs/NETWORK/03-网络层/07-动态路由协议OSPF-BGP OSPF 区域内/区域间/LSA、BGP 选路规则
3.8 NAT 原理与应用 hhs/NETWORK/03-网络层/08-NAT原理与应用 SNAT / DNAT / PAT(端口复用)、NAT 对 TCP 的影响、穿透技术(STUN/TURN/ICE)
sequenceDiagram
    participant Client as 客户端<br/>192.168.1.100
    participant GW as 网关/NAT<br/>203.0.113.5:12345
    participant Server as 服务端<br/>93.184.216.34:80

    Client->>GW: SYN 192.168.1.100:54321 → 93.184.216.34:80
    Note over GW: SNAT: 源地址改写
    GW->>Server: SYN 203.0.113.5:12345 → 93.184.216.34:80
    Server-->>GW: SYN-ACK ack=1
    Note over GW: DNAT: 端口反向映射
    GW-->>Client: SYN-ACK ack=1
    Client->>GW: ACK ack=2
    GW->>Server: ACK ack=2

[!warning] NAT 的陷阱 NAT 破坏了端到端原则——它在修改 IP 甚至端口,相当于在网络中间强行「翻译」数据包。某些协议(如 FTP 主动模式、P2P)在 NAT 后无法正常工作,需要 ALG 或打洞技术。

四、传输层(重点)

# 主题 链接 说明
4.1 TCP 段结构与状态机 hhs/NETWORK/04-传输层/01-TCP段结构与状态机 34 字节最小首部、11 种状态、全图详解
4.2 三次握手与四次挥手 hhs/NETWORK/04-传输层/02-TCP三次握手与四次挥手 为什么不能两次?TIME_WAIT 的意义和代价
4.3 可靠传输机制 hhs/NETWORK/04-传输层/03-TCP可靠传输机制 序列号/确认号、重传策略、快重传/快恢复
4.4 流量控制与拥塞控制 hhs/NETWORK/04-传输层/04-TCP流量控制与拥塞控制 滑动窗口、BBR vs Cubic 算法对比
4.5 TCP 粘包与拆包 hhs/NETWORK/04-传输层/05-TCP粘包与拆包 边界的成因、应用层解决方案(定长/分隔符/长度前缀)
4.6 UDP 协议与 SCTP hhs/NETWORK/04-传输层/06-UDP协议与SCTP UDP 低延迟特性、SCTP 多流独立有序
stateDiagram-v2
    [*] --> CLOSED
    CLOSED --> LISTEN: Accept / Connect
    LISTEN --> SYN_RCVD: Accept
    SYN_RCVD --> ESTABLISHED: 3-Way Handshake Complete
    ESTABLISHED --> FIN_WAIT_1: Application closes
    ESTABLISHED --> CLOSE_WAIT: Remote close
    CLOSE_WAIT --> LAST_ACK: Local close
    FIN_WAIT_1 --> FIN_WAIT_2: Local ACK received
    FIN_WAIT_1 --> CLOSING: Simultaneous close
    FIN_WAIT_2 --> TIME_WAIT: Remote close
    CLOSING --> TIME_WAIT: Remote ACK
    TIME_WAIT --> CLOSED: 2MSL timeout
    LAST_ACK --> CLOSED: Final ACK received

    note right of TIME_WAIT
        等待 2 * MSL
        确保最后一个 ACK 到达
        防止旧连接的重复报文干扰新连接
    end note

[!question] 为什么 TCP 挥手需要 TIME_WAIT? 如果服务端直接关闭,客户端的 ACK 丢失会导致 RST。TIME_WAIT(2MSL)给时间让 ACK 重试,同时也让旧连接的报文在网络中自然消亡。但这意味着高并发服务器的 TIME_WAIT 堆积是常态而非异常。

五、应用层协议

# 主题 链接 说明
5.1 HTTP/1.1 完全指南 hhs/NETWORK/05-应用层协议/01-HTTP-1-1完全指南 Method/Status/Header/Payload、Keep-Alive、管道化缺陷
5.2 HTTP/2 多路复用 hhs/NETWORK/05-应用层协议/02-HTTP-2多路复用 二进制分帧、Header 压缩(HPACK)、Server Push、Stream Priority
5.3 HTTP/3 与 QUIC hhs/NETWORK/05-应用层协议/03-HTTP-3与QUIC 基于 UDP、内置拥塞控制、0-RTT 握手、Head-of-Line 消除
5.4 HTTPS 与 TLS 握手 hhs/NETWORK/05-应用层协议/04-HTTPS与TLS握手 对称+非对称混合加密、证书链验证、Cipher Suite 协商
5.5 DNS / DHCP / WebSocket hhs/NETWORK/05-应用层协议/05-DNS与DHCP与WebSocket 递归 vs 权威查询、DORA 四步、握手升级
5.6 SSH 与邮件协议 hhs/NETWORK/05-应用层协议/06-SSH与邮件协议 密钥交换、公钥认证、端口转发、SMTP/IMAP/POP3 三大协议对比
sequenceDiagram
    participant B as Browser
    participant S as Server
    participant CA as CA/证书机构

    B->>S: TCP 三次握手
    B->>S: ClientHello (cipher suites, extensions)
    S->>B: ServerHello + Certificate (含公钥)
    CA-->>B: 证书验签通过 (可选 OCSP/Stapling)
    B->>S: ClientKeyExchange + Finished
    S->>B: ServerFinished
    Note over B,S: TLS 握手完成 ✨ 后续通信全部加密
    B->>S: HTTP Request (TLS 保护下)
    S->>B: HTTP Response (TLS 保护下)

[!tip] HTTPS 为什么叫「双重握手」? TCP 三次握手建通道 → TLS 握手协商加密参数并验证书 → 之后才是真正的 HTTP 请求。完整的 HTTPS 页面加载至少需要 2~3 个 RTT。

六、Socket 编程

# 主题 链接 说明
6.1 Socket API 与 backlog hhs/NETWORK/06-Socket编程/01-SocketAPI与backlog详解 socket/bind/listen/accept 映射到 TCP 状态,backlog 双队列机制 (SYN Queue + Accept Queue)
6.2 I/O 多路复用:select → poll → epoll hhs/NETWORK/06-Socket编程/02-epoll深度解析ETvsLT 三阶段进化,ET vs LT 模式深度对比,最小可用 epoll 框架
6.3 零拷贝技术与 Go netpoller hhs/NETWORK/06-Socket编程/03-零拷贝与GoNetpoller sendfile/sendmmsg/io_uring,Go M:N 调度模型,net/http.Server 超时配置
flowchart LR
    App["应用程序"] -->|"accept()"| FD["file descriptor"]
    FD -->|"register"| EPOLL["epoll instance<br/>红黑树 + 就绪链表"]
    EPOLL -->|"wait"| App
    FD -.->|"内核回调加入就绪链表"| EPOLL
    
    style EPOLL fill:#DDA0DD,color:#000

[!tip] Go 的优势 Go 不需要像 C 那样手动维护 epoll + callback 地狱。每个连接挂起一个 goroutine(栈 2KB 起步),CPU 和内存效率极高。这被称为 "C10K problem solved by goroutines"。

七、网络工具与诊断

# 主题 链接 说明
7.1 连通性与状态探测 hhs/NETWORK/07-网络工具与诊断/01-连通性与状态探测工具 ping 指标解读、nc/telnet 端口测试、ss 连接状态快照(含全状态速查表)、traceroute
7.2 抓包、HTTP 与 DNS 诊断 hhs/NETWORK/07-网络工具与诊断/02-抓包HTTPDNS诊断工具 tcpdump BPF 表达式精选、curl 计时分解、dig 查询模式、iptables 规则排查

[!tip] 排错黄金思路 ping(通不通?)→ telnet port(端口通不通?)→ tcpdump(报文到了没?)→ ss(本地连接状态如何?)→ traceroute(哪一跳丢了?)→ 读应用日志

八、网络安全

# 主题 链接 说明
8.1 DDoS 与 MitM 防御 hhs/NETWORK/08-网络安全/01-DDoS与MITM防御 L3/L4/D7 攻击矩阵,Linux 内置防御命令,ARP 欺骗 MITM 全流程,DNS 劫持检测,Slowloris
8.2 SSRF 与 DNS 安全 hhs/NETWORK/08-网络安全/02-SSRF与DNS安全 Go SSRF 完整防御代码(含 DNS Rebinding),NAT 穿透 (STUN/TURN/ICE),DNSSEC / DoH / DoT
8.3 CSRF / XSS / XXE 防御 hhs/NETWORK/08-网络安全/03-CSRFxss与XXE防御 三巨头对比表,SameSite Cookie,CSP,html/template 自动转义,CORS vs CSRF
8.4 JWT 认证与 TLS 安全 hhs/NETWORK/08-网络安全/04-JWT认证与TLS安全 JWT 六大漏洞+修复,Refresh Token 模式,OAuth 2.0 vs OIDC,Cipher Suite 选择,OCSP Stapling,mTLS

九、网络性能优化

# 主题 链接 说明
9.1 TCP 内核调优与连接复用 hhs/NETWORK/09-性能优化/01-TCP内核调优与连接复用 sysctl 二十余参数生产级配置,BBR 启用,TCP Buffer BDP 适配,HTTP/gRPC/Nginx Keep-Alive 全栈方案
9.2 CDN、负载均衡与 Go Server 调优 hhs/NETWORK/09-性能优化/02-CDN负载均衡与GoServer调优 Cache-Control 速查,L4 vs L7 LB 选型决策树,Nginx upstream 策略,Go http.Server 终极配置

十、前沿与进阶

# 主题 链接 说明
10.1 QUIC 协议深度解析 hhs/NETWORK/10-前沿与进阶/01-QUIC协议深度解析 Connection ID NAT 迁移,Stream 独立性消除队头阻塞,0-RTT + 重放攻击风险,QPACK vs HPACK
10.2 eBPF 与 Service Mesh hhs/NETWORK/10-前沿与进阶/02-eBPF与ServiceMesh XDP/TC/kprobe 三层次架构,bpftrace/bcc/cilium-hubble 实战,Istio sidecar + VirtualService 路由
10.3 WireGuard VPN 原理与实践 hhs/NETWORK/10-前沿与进阶/03-WireGuardVPN原理与实践 Curve25519 + ChaCha20-Poly1305 AEAD,三重加密手风琴握手,运维命令全解,性能对比实测
10.4 SDN / SRv6 与 Go 网络编程最佳实践 hhs/NETWORK/10-前沿与进阶/04-SDNSRv6与网络编程最佳实践 Segment Routing over IPv6 包结构,OpenFlow/P4 可编程数据平面,Go 高性能 Server 模板

学习路径建议

flowchart LR
    BASE["一、基础概念<br/>OSI/TCP-IP/地址"] --> LINK["二、链路层<br/>Ethernet/ARP/Switch"]
    LINK --> NET["三、网络层<br/>IPv4/IPv6/Routing/NAT"]
    NET --> TRANSP["四、传输层<br/>TCP/UDP/状态机/拥塞控制"]
    TRANSP --> APP["五、应用层<br/>HTTP/DNS/TLS/WebSocket"]
    TRANSP --> SOCKETS["六、Socket编程<br/>epoll/零拷贝"]
    APP --> TOOLS["七、网络工具<br/>tcpdump/curl/dig"]
    TOOLS --> SEC["八、网络安全"]
    SEC --> PERF["九、性能优化"]
    PERF --> FRONTIER["十、前沿进阶"]

    style BASE fill:#DDA0DD
    style TRANSP fill:#FFD700
    style APP fill:#98FB98
    style PERF fill:#FFA07A
    style FRONTIER fill:#B0C4DE

关联笔记