1. TCP/IP 协议栈概述
TCP/IP 协议栈是互联网与嵌入式设备网络通信的基石。理解其分层架构与核心协议族,是后续配置 IP 地址、端口以及调试 TCP/IP 通信链路的理论基础。本节将从 OSI 七层模型与 TCP/IP 四层模型的对比入手,逐步深入核心协议族。
1.1 OSI 七层模型与 TCP/IP 四层模型对比
OSI(开放系统互连)模型是国际标准化组织(ISO)制定的理论参考模型,而 TCP/IP 模型则是基于实际工程应用发展而来的事实标准。两者在分层理念上一致,但在层数、功能划分和协议对应关系上存在显著差异。
核心要点: OSI 是“理想蓝图”,TCP/IP 是“工程实现”。嵌入式开发中,我们主要遵循 TCP/IP 模型,但常借用 OSI 的术语(如“数据链路层”)来精确描述问题。
分层对比表
| OSI 七层模型 | TCP/IP 四层模型 | 核心功能 | 嵌入式典型协议/接口 |
|---|---|---|---|
| 7. 应用层 | 4. 应用层 | 为用户应用提供网络服务 | HTTP, MQTT, CoAP, Modbus TCP, FTP |
| 6. 表示层 | 数据格式转换、加密、压缩 | TLS/SSL(实际在应用层实现) | |
| 5. 会话层 | 建立、管理和终止会话 | NetBIOS(较少在嵌入式直接使用) | |
| 4. 传输层 | 3. 传输层 | 端到端连接、可靠传输、流量控制 | TCP, UDP |
| 3. 网络层 | 2. 网络层 | 逻辑寻址、路由选择、分组转发 | IP (IPv4/IPv6), ICMP, ARP |
| 2. 数据链路层 | 1. 网络接口层 | 帧封装、物理寻址(MAC)、差错检测 | Ethernet, PPP, SLIP, Wi-Fi (802.11) |
| 1. 物理层 | 比特流传输、电气特性、机械特性 | RJ45, RS-232, RS-485, SPI(内部总线) |
嵌入式视角: 在调试 TCP/IP 链路时,80% 的问题集中在“网络接口层”(如网线松动、PHY 芯片配置错误)和“传输层”(如端口被占用、TCP 连接超时)。OSI 的 5/6/7 层在嵌入式领域通常合并处理。
OSI 与 TCP/IP 模型对比 SVG 图
1.2 核心协议族介绍
TCP/IP 协议族并非单个协议,而是一组协同工作的协议集合。在嵌入式设备端 IP 与 Port 配置及链路调试中,以下协议是必须掌握的核心。
1.2.1 网络层核心协议
- IP(Internet Protocol):提供无连接、不可靠的数据报传输服务。负责将数据包从源主机路由到目标主机。IPv4 地址是 32 位,IPv6 是 128 位。
- ICMP(Internet Control Message Protocol):用于在 IP 网络中传递错误报告和诊断信息。常用工具
ping和traceroute基于 ICMP 实现。 - ARP(Address Resolution Protocol):将网络层 IP 地址解析为数据链路层 MAC 地址。在局域网通信中至关重要。
1.2.2 传输层核心协议
| 特性 | TCP(传输控制协议) | UDP(用户数据报协议) |
|---|---|---|
| 连接方式 | 面向连接(三次握手) | 无连接 |
| 可靠性 | 可靠传输(确认、重传、排序) | 不可靠(尽力交付) |
| 数据边界 | 字节流(无边界) | 报文(保留边界) |
| 流量控制 | 支持(滑动窗口) | 不支持 |
| 典型应用 | HTTP, FTP, Telnet, MQTT | DNS, DHCP, SNMP, 视频流 |
| 嵌入式场景 | 配置管理、固件升级 | 传感器数据上报、设备发现 |
调试陷阱: 在嵌入式设备中,TCP 的“三次握手”和“四次挥手”过程极易受网络延迟和缓冲区大小影响。如果设备端 TCP 连接频繁断开,应优先检查
SO_RCVBUF 和 SO_SNDBUF 的配置,而非盲目修改应用层逻辑。
1.2.3 应用层常用协议
- HTTP/HTTPS:Web 配置接口、RESTful API 通信。
- MQTT:轻量级发布/订阅协议,专为物联网和嵌入式设备设计。
- Modbus TCP:工业自动化领域广泛使用的通信协议。
- DHCP:动态主机配置协议,自动分配 IP 地址。
- DNS:域名解析服务,将域名转换为 IP 地址。
TCP/IP 核心协议栈架构 SVG 图
1.3 数据封装与解封装过程
当设备端发送数据时,数据从应用层向下逐层传递,每层添加自己的头部信息(Header),这个过程称为封装。接收端则反向操作,逐层去掉头部,称为解封装。
封装步骤(以 TCP 为例)
- 应用层:生成应用数据(如 HTTP 请求报文)。
- 传输层:添加 TCP 头部(源端口、目的端口、序列号等),形成 TCP 段。
- 网络层:添加 IP 头部(源 IP、目的 IP、协议号等),形成 IP 数据包。
- 网络接口层:添加帧头部(源 MAC、目的 MAC、类型等)和帧尾部(FCS 校验),形成以太网帧。
调试关键点: 使用 Wireshark 抓包时,观察每一层的头部信息可以快速定位问题。例如,IP 层校验和错误通常指示硬件或驱动问题;TCP 层频繁重传则暗示网络拥塞或对端无响应。
常见协议端口号速查表
| 协议 | 默认端口 | 传输层 | 说明 |
|---|---|---|---|
| HTTP | 80 | TCP | Web 服务 |
| HTTPS | 443 | TCP | 加密 Web 服务 |
| MQTT | 1883 | TCP | 物联网消息推送 |
| Modbus TCP | 502 | TCP | 工业自动化 |
| DHCP | 67/68 | UDP | 动态 IP 分配 |
| DNS | 53 | UDP | 域名解析 |
配置建议: 在设备端配置 IP 与 Port 时,应避免使用知名端口(0-1023)作为自定义服务端口,建议使用 1024-49151 之间的注册端口,并确保端口未被其他服务占用。