TCP/IP协议栈详解
TCP/IP 协议栈是互联网通信的基础,采用分层架构设计,是事实上的网络通信标准。
OSI 与 TCP/IP 对照
| OSI 七层 | TCP/IP 四层 | 主要协议 | 数据单元 |
|---|---|---|---|
| 应用层 | 应用层 | HTTP、DNS、FTP、SSH、SMTP | 报文 Message |
| 表示层 | 应用层 | SSL/TLS、JPEG、ASCII | — |
| 会话层 | 应用层 | NetBIOS、RPC | — |
| 传输层 | 传输层 | TCP、UDP | 段 Segment / 数据报 Datagram |
| 网络层 | 网络层 | IP、ICMP、ARP | 数据包 Packet |
| 数据链路层 | 网络接口层 | Ethernet、PPP、VLAN | 帧 Frame |
| 物理层 | 网络接口层 | 双绞线、光纤、Wi-Fi | 比特 Bit |
四层模型
1. 网络接口层 (Network Interface Layer)
- 功能:负责物理网络传输,处理硬件细节
- 协议:Ethernet、Wi-Fi、PPP
- 数据单元:帧 (Frame)
- 地址:MAC 地址(48 位)
2. 网络层 (Internet Layer)
- 功能:逻辑寻址和路由选择
- 核心协议:IP (Internet Protocol)
- 数据单元:数据包 (Packet)
- 地址:IP 地址(IPv4/IPv6)
- 关键协议:
- IP:无连接、不可靠的数据报传输(尽力而为)
- ICMP:错误报告和诊断(ping、tracert)
- ARP:IP 地址到 MAC 地址的映射
- RARP:MAC 地址到 IP 地址的解析(早期无盘工作站,已被 BOOTP/DHCP 取代)
3. 传输层 (Transport Layer)
- 功能:端到端通信和可靠性保障
- 主要协议:
TCP (Transmission Control Protocol)
- 面向连接、可靠传输
- 三次握手建立连接,四次挥手释放连接
- 流量控制(滑动窗口)和拥塞控制(慢开始/拥塞避免/快重传/快恢复)
- 数据单元:段 (Segment)
- 端口范围:0-65535
UDP (User Datagram Protocol)
- 无连接、不可靠传输
- 简单高效,开销小(头部仅 8 字节)
- 支持广播和多播
- 适用于实时应用(语音、视频、游戏)
- 数据单元:数据报 (Datagram)
4. 应用层 (Application Layer)
- 功能:为用户提供网络服务
- 常见协议:
- HTTP/HTTPS:Web 服务(80/443 端口)
- FTP:文件传输(20/21 端口)
- SMTP/POP3/IMAP:邮件服务(25/110/143)
- DNS:域名解析(53 端口)
- DHCP:动态主机配置(67/68 端口)
- SSH:安全远程登录(22 端口)
数据封装与解封装
发送端封装(逐层加头):
应用数据 → [TCP头+数据] → [IP头+TCP头+数据] → [以太网头+IP头+TCP头+数据+FCS] → 比特流
接收端解封装(逐层去头):
比特流 → 数据链路层校验FCS并去帧头 → 网络层查看IP目的地址 → 传输层还原端口 → 应用层还原数据
MTU 与分片:以太网 MTU 通常为 1500 字节,超过则 IP 分片;TCP 通过 MSS 协商避免分片。
端口分类
| 类别 | 范围 | 说明 |
|---|---|---|
| 知名端口 | 0-1023 | 系统保留,如 HTTP 80、HTTPS 443 |
| 注册端口 | 1024-49151 | 应用程序注册使用,如 MySQL 3306 |
| 动态/私有端口 | 49152-65535 | 客户端临时分配,用于主动连接 |
常见协议端口速查
| 应用 | 传输层 | 端口 |
|---|---|---|
| Web 浏览 | TCP | 80/443 |
| 文件传输 | TCP | 20/21 |
| 域名解析 | UDP/TCP | 53 |
| 远程登录 | TCP | 22 (SSH) / 23 (Telnet) |
| 邮件发送/接收 | TCP | 25 / 110、143 |
| DHCP | UDP | 67/68 |
| NTP 时间同步 | UDP | 123 |
| SNMP | UDP | 161/162 |
💡 学习建议:理解协议栈的关键是掌握每一层的功能、数据单元名称和封装过程;配合 Wireshark 抓包观察真实报文。