【计算机网络】TCP/IP 协议族核心笔记
计算机网络是 CS 基础课中最贴近实际开发的一门。这里整理了 TCP/IP 协议族的核心知识点。
OSI 七层 vs TCP/IP 四层
| OSI | TCP/IP | 协议示例 |
|---|---|---|
| 应用层 | 应用层 | HTTP, DNS, SMTP |
| 表示层 | ↑ | SSL/TLS |
| 会话层 | ↑ | - |
| 传输层 | 传输层 | TCP, UDP |
| 网络层 | 网络层 | IP, ICMP, ARP |
| 数据链路层 | 网络接口层 | Ethernet |
| 物理层 | ↑ | - |
TCP 三次握手
Client Server
|--- SYN seq=x ------->|
|<-- SYN+ACK seq=y -----|
| ack=x+1 |
|--- ACK ack=y+1 ----->|
| 连接建立 |
为什么是三次? 为了确认双方的发送和接收能力都正常。两次无法确认客户端的接收能力。
TCP 四次挥手
Client Server
|--- FIN ------------->|
|<-- ACK --------------|
|<-- FIN --------------|
|--- ACK ------------->|
| TIME_WAIT(2MSL) |
为什么要 TIME_WAIT? 确保最后一个 ACK 被对方收到,防止已关闭连接的延迟报文被新连接接收。
TCP 拥塞控制
四个阶段:
- 慢启动:窗口从 1 开始指数增长
- 拥塞避免:达到阈值后线性增长
- 快重传:收到 3 个重复 ACK 立即重传
- 快恢复:阈值减半,窗口从阈值开始
HTTP/1.1 vs HTTP/2 vs HTTP/3
| 特性 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| 多路复用 | ❌ | ✅ | ✅ |
| 头部压缩 | ❌ | HPACK | QPACK |
| 传输层 | TCP | TCP | QUIC(UDP) |
| 队头阻塞 | 有 | 流级别 | 无 |
DNS 解析过程
浏览器缓存 → 系统缓存 → 路由器缓存
→ ISP DNS → 根域名服务器 → 顶级域名服务器 → 权威域名服务器
这些基础概念在日常开发中会频繁遇到,理解底层原理有助于排查网络相关的问题。