TCP/IP 协议栈(TCP/IP Protocol Stack)
TCP/IP 是互联网的核心协议栈,定义了网络通信的标准。TCP/IP 模型将网络分为四层,是实际使用的网络模型。
什么是 TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol)是一组网络通信协议,是互联网的基础。TCP/IP 模型将网络通信分为四层。
TCP/IP 模型的四层结构
应用层(Application Layer) - 第 4 层
传输层(Transport Layer) - 第 3 层
网络层(Internet Layer) - 第 2 层
链路层(Link Layer) - 第 1 层
各层功能详解
1. 链路层(Link Layer)
功能:负责在物理网络上传输数据帧
主要任务:
- 物理地址(MAC 地址)寻址
- 数据帧的封装与解封装
- 错误检测
- 介质访问控制
协议:
- 以太网(Ethernet):最常用的局域网协议
- PPP(Point-to-Point Protocol):点对点协议
- ARP(Address Resolution Protocol):地址解析协议
数据单位:帧(Frame)
设备:网卡、交换机、集线器
2. 网络层(Internet Layer)
功能:负责数据包的路由和转发
主要任务:
- IP 地址寻址
- 路由选择
- 数据包的分片与重组
- 拥塞控制
协议:
- IP(Internet Protocol):网络层核心协议
- ICMP(Internet Control Message Protocol):控制消息协议(ping 使用)
- IGMP(Internet Group Management Protocol):组播管理协议
数据单位:数据包(Packet)
设备:路由器
IP 地址示例:
IPv4: 192.168.1.1
IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
3. 传输层(Transport Layer)
功能:提供端到端的数据传输服务
主要任务:
- 端口号寻址
- 数据分段与重组
- 流量控制
- 可靠性保证(TCP)
- 错误检测
协议:
- TCP(Transmission Control Protocol):面向连接的可靠传输
- UDP(User Datagram Protocol):无连接的不可靠传输
数据单位:段(Segment)
端口号范围:0-65535
- 知名端口:0-1023(如 HTTP 80、HTTPS 443、FTP 21)
- 注册端口:1024-49151
- 动态端口:49152-65535
4. 应用层(Application Layer)
功能:为应用程序提供网络服务接口
主要任务:
- 提供用户接口
- 应用协议定义
- 各种网络应用服务
协议:
- HTTP/HTTPS:Web 服务(端口 80/443)
- FTP:文件传输(端口 21)
- SMTP:邮件发送(端口 25)
- POP3/IMAP:邮件接收(端口 110/143)
- DNS:域名解析(端口 53)
- SSH:安全远程登录(端口 22)
- Telnet:远程登录(端口 23)
数据单位:数据(Data)
TCP/IP 数据封装过程
发送端封装
应用层数据(HTTP 请求)
↓ 添加 TCP 头部(端口号、序列号等)
传输层数据(TCP 段)
↓ 添加 IP 头部(源 IP、目标 IP)
网络层数据(IP 数据包)
↓ 添加以太网头部(MAC 地址)
链路层数据(以太网帧)
↓ 转换为电信号
物理媒介传输
接收端解封装
物理媒介接收
↓ 转换为比特流
链路层数据(以太网帧)
↓ 移除以太网头部
网络层数据(IP 数据包)
↓ 移除 IP 头部
传输层数据(TCP 段)
↓ 移除 TCP 头部
应用层数据(HTTP 请求)
TCP/IP 协议族
核心协议
| 协议 | 层次 | 功能 |
|---|---|---|
| IP | 网络层 | 数据包路由和转发 |
| TCP | 传输层 | 可靠的数据传输 |
| UDP | 传输层 | 不可靠但快速的数据传输 |
| HTTP | 应用层 | Web 服务 |
| HTTPS | 应用层 | 安全的 Web 服务 |
| FTP | 应用层 | 文件传输 |
| SMTP | 应用层 | 邮件发送 |
| DNS | 应用层 | 域名解析 |
| ARP | 链路层 | IP 地址到 MAC 地址的映射 |
TCP/IP 与 OSI 模型对比
OSI 模型(七层)
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
TCP/IP 模型(四层)
应用层(对应 OSI 的应用层、表示层、会话层)
传输层(对应 OSI 的传输层)
网络层(对应 OSI 的网络层)
链路层(对应 OSI 的数据链路层、物理层)
实际应用示例
HTTP 请求在 TCP/IP 中的传输
1. 应用层:浏览器生成 HTTP 请求
GET /index.html HTTP/1.1
Host: www.example.com
2. 传输层:添加 TCP 头部
- 源端口:随机端口(如 54321)
- 目标端口:80(HTTP)
- 序列号、确认号等
3. 网络层:添加 IP 头部
- 源 IP:192.168.1.100
- 目标 IP:93.184.216.34(www.example.com 的 IP)
- 协议类型:TCP
4. 链路层:添加以太网头部
- 源 MAC:AA:BB:CC:DD:EE:FF
- 目标 MAC:路由器 MAC 地址
- 类型:0x0800(IPv4)
5. 物理层:转换为电信号在网线上传输
常见问题
1. TCP/IP 为什么只有四层?
TCP/IP 模型更注重实用性,将 OSI 模型的上三层合并为应用层,将下两层合并为链路层,简化了模型,更符合实际网络实现。
2. TCP 和 UDP 的区别?
- TCP:面向连接、可靠、有流量控制和拥塞控制、速度较慢
- UDP:无连接、不可靠、无流量控制、速度快
3. IP 地址和 MAC 地址的区别?
- IP 地址:逻辑地址,网络层使用,可以变化(如通过 DHCP)
- MAC 地址:物理地址,链路层使用,固化在网卡中,全球唯一
总结
TCP/IP 协议栈要点:
- 四层结构:链路层、网络层、传输层、应用层
- 核心协议:IP、TCP、UDP 以及各种应用层协议
- 数据封装:从上到下封装,从下到上解封装
- 实际应用:互联网的基础协议栈
理解 TCP/IP 协议栈是网络编程和网络问题排查的基础。
相关链接: