目录
TCP/IP 协议栈(TCP/IP Protocol Stack)是实际应用最广泛的网络通信协议体系结构,几乎所有互联网设备和嵌入式联网设备都基于它。它是一个分层架构,每层都有独立职责,共同完成数据从源主机到目的主机的传输。
下面是对 TCP/IP 协议栈 的全面解析,包含各层功能、典型协议、封装流程、结构图等。
一、TCP/IP 协议栈分层结构
TCP/IP协议栈是互联网通信的核心框架,定义了数据在网络中的传输规则。它由多个协议组成,核心为 TCP(传输控制协议) 和 IP(互联网协议),支持跨网络的数据交换。
四层模型(从上到下):
层级 | 名称 | 主要功能 | 常见协议 |
第4层 | 应用层(Application) | 为用户程序提供网络服务接口 | HTTP、FTP、SMTP、DNS、DHCP、SSH、Telnet |
第3层 | 传输层(Transport) | 提供端到端连接和可靠/不可靠数据传输 | TCP、UDP |
第2层 | 网络层 / Internet 层 | 路由选择与逻辑寻址 | IP、ICMP、ARP、IGMP |
第1层 | 网络接口层 / 链路层 | 实际链路通信,封装物理地址 | Ethernet、Wi-Fi、PPP、帧中继等 |
二、各层详解
1. 应用层
-
功能:
-
提供用户级服务接口(如Web、邮件、文件传输)。
-
数据格式转换与加密(如HTTPS的TLS/SSL)。
-
-
常见协议:
-
HTTP/HTTPS:超文本传输协议,用于网页浏览。
-
FTP:文件传输协议,支持文件上传/下载。
-
SMTP/POP3/IMAP:电子邮件发送与接收协议。
-
DNS:域名解析协议,将域名转换为IP地址。
-
SSH:加密远程登录协议,替代不安全的Telnet。
-
2. 传输层
-
功能:
-
端到端通信:通过端口号(0-65535)标识应用程序。
-
流量控制与拥塞控制:确保网络资源合理利用。
-
-
协议对比:
协议 | 特点 | 应用场景 |
TCP(传输控制协议) | 连接导向、可靠、有序传输,流量控制 | 浏览器、电子邮件、SSH |
UDP(用户数据报协议) | 无连接、快速、不可靠 | 视频直播、VoIP、DNS 查询 |
3. 网络层(Internet 层)
-
功能:
-
IP寻址:通过IP地址(IPv4/IPv6)标识设备。
-
路由选择:基于路由表决定数据包的最佳路径。
-
分片与重组:处理超过链路MTU的数据包。
-
-
核心协议:
-
IP协议:
-
IPv4:32位地址(如
192.168.1.1
),面临地址枯竭问题。 -
IPv6:128位地址(如
2001:0db8::1
),支持更大地址空间和自动配置。
-
-
ARP(地址解析协议):将IP地址映射到MAC地址。
-
ICMP(互联网控制消息协议):用于网络诊断(如
ping
命令)。
-
4. 网络接口层(链路层)
-
功能:
-
数据帧的封装与解封装(如以太网帧格式)。
-
物理地址(MAC地址)寻址与局域网通信。
-
差错检测(如CRC校验)。
-
-
关键技术:
-
以太网(Ethernet):局域网主流技术,MTU(最大传输单元)通常为1500字节。
-
Wi-Fi(IEEE 802.11):无线局域网协议,支持动态速率调整。
-
PPP(点对点协议):用于拨号连接或串行链路通信。
-
三、TCP/IP 数据封装流程图
[应用层数据]
↓ 封装为:
[应用层报文(HTTP、FTP等)]
↓ 加入 TCP/UDP 头部 →
[传输层段]
↓ 加入 IP 头部 →
[网络层数据包]
↓ 加入 MAC 帧头、尾 →
[链路层帧]
↓ 变成电信号或无线波发送 →
[物理传输]
四、封装实例图(示意)
+-------------------------------------------------------------+
| 应用层:HTTP 数据 |
+-------------------------------------------------------------+
| 传输层:TCP Header + HTTP 数据 |
+-------------------------------------------------------------+
| 网络层:IP Header + TCP 段(Header + Data) |
+-------------------------------------------------------------+
| 链路层:MAC Header + IP 数据包 + MAC Trailer(如CRC) |
+-------------------------------------------------------------+
五、TCP/IP 通信流程的时序图
1.总体通信流程概览
①TCP 三次握手(连接建立)
②应用层数据传输
③TCP 四次挥手(连接终止)
2.TCP/IP 通信流程时序图
客户端 服务器
| |
| -----------[SYN]-----------------------------> |
| |
| <----------[SYN + ACK]------------------------ |
| |
| -----------[ACK]-----------------------------> |
| (TCP连接建立完成,三次握手) |
| |
| ====> 应用层请求数据(HTTP/FTP/自定义) |
| -----------[PSH, ACK]------------------------> |
| |
| <----------[ACK + 数据响应]------------------- |
| |
| ====> 可进行多次双向数据传输(基于TCP) |
| |
| -----------[FIN]-----------------------------> |
| |
| <----------[ACK]------------------------------ |
| <----------[FIN]------------------------------ |
| |
| -----------[ACK]-----------------------------> |
| (TCP连接断开,四次挥手完成) |
3.补充说明
(1)三次握手(TCP连接建立)
-
第一次握手:客户端发送 SYN 包,表示想建立连接。
-
第二次握手:服务器回应 SYN + ACK,确认收到连接请求。
-
第三次握手:客户端发送 ACK,连接建立成功。
(2)数据传输阶段
-
应用层协议(如 HTTP)将请求数据发送给服务器。
-
每一条消息都会经历:
-
应用层(构建数据)
-
传输层(加 TCP 头)
-
网络层(加 IP 头)
-
链路层(加 MAC 帧)
-
物理层(通过网卡发送比特流)
-
(3)四次挥手(TCP连接释放)
-
第一次挥手:客户端发送 FIN,请求断开连接。
-
第二次挥手:服务器 ACK 确认。
-
第三次挥手:服务器发送 FIN。
-
第四次挥手:客户端 ACK,连接完全断开。
4.Wireshark 抓包时的典型帧展示
步骤 | 抓包标志 | 含义 |
1 | SYN | 建立连接请求 |
2 | SYN, ACK | 确认并响应 |
3 | ACK | 建立连接成功 |
4 | PSH, ACK | 发送数据 |
5 | FIN | 终止连接 |
6 | FIN, ACK | 响应终止请求 |
5.TCP/IP 分层与报文结构关系图(封装)
应用层: [ HTTP 请求内容 ]
传输层: [ TCP 头 ] + [ HTTP 数据 ]
网络层: [ IP 头 ] + [ TCP 段 ]
链路层: [ MAC 头 + CRC 尾 ] + [ IP 包 ]
物理层: 比特流发送
六、TCP/IP 协议栈在实际中的映射(以浏览器请求为例)
步骤 | 协议层 | 实际协议 |
浏览器请求网页 | 应用层 | HTTP |
建立连接 | 传输层 | TCP |
路由寻址 | 网络层 | IP |
物理传输 | 链路层 | Ethernet / Wi-Fi |
七、常用端口示例(传输层)
协议 | 默认端口 | 描述 |
HTTP | 80 | 超文本传输 |
HTTPS | 443 | 加密 HTTP |
FTP | 21 | 文件传输协议 |
SMTP | 25 | 发送邮件 |
DNS | 53 | 域名解析(UDP) |
SSH | 22 | 安全远程登录 |
DHCP | 67/68 | 动态主机配置 |
八、与 OSI 模型对比结构图
OSI: | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
TCP/IP: | A | T | N | L |
对应: 应 表 会 传 网 数 物
用 示 会 输 络 据 理
九、常见实现栈(软件/嵌入式)
系统/平台 | TCP/IP 协议栈实现 |
Linux/Unix | BSD Socket、Netfilter |
Windows | Winsock |
ESP32 | LWIP(轻量级 TCP/IP 协议栈) |
STM32 | uIP、CycloneTCP、LwIP |
Android/iOS | 内置 TCP/IP 栈 |
十、总结
特性 | 描述 |
标准化 | 跨平台、跨设备通信的基石 |
简洁实用 | 实际开发首选 |
可扩展性 | 支持 IPv6、TLS、QoS 等 |
面向协议栈开发 | 嵌入式网络应用、内核、驱动需理解封装流程 |
扩展阅读:
【软件系统架构】系列四:嵌入式技术 | 【软件系统架构】系列四:嵌入式技术 |
【软件系统架构】系列四:嵌入式软件开发流程全解析(包含示例) | 【软件系统架构】系列四:嵌入式软件开发流程全解析(包含示例) |
【软件系统架构】系列四:嵌入式软件-DO-178B 安全认证标准 | 【软件系统架构】系列四:嵌入式软件-DO-178B 安全认证标准 |
【软件系统架构】系列四:嵌入式软件-CMMI 安全认证标准及认证所需资源模板 | 【软件系统架构】系列四:嵌入式软件-CMMI 安全认证标准及认证所需资源模板 |
【软件系统架构】系列四:嵌入式软件-M2M(Machine to Machine)系统详解及开发模板 | 【软件系统架构】系列四:嵌入式软件-M2M(Machine to Machine)系统详解及开发模板 |
【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板 | 【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板 |
【软件系统架构】系列四:嵌入式软件-M2M 与 NPU 技术对比及协同设计方案 | 【软件系统架构】系列四:嵌入式软件-M2M 与 NPU 技术对比及协同设计方案 |
【软件系统架构】系列四:嵌入式微处理器(MPU) | 【软件系统架构】系列四:嵌入式微处理器(MPU) |
【软件系统架构】系列四:嵌入式微控制器(MCU) | 【软件系统架构】系列四:嵌入式微控制器(MCU) |
【软件系统架构】系列四:数字信号处理器(DSP) | 【软件系统架构】系列四:数字信号处理器(DSP) |
【软件系统架构】系列四:SoC(System on Chip,片上系统) | 【软件系统架构】系列四:SoC(System on Chip,片上系统) |
【软件系统架构】系列四:MPU vs MCU vs DSP vs SoC 嵌入式处理器选型终极指南 | 【软件系统架构】系列四:MPU vs MCU vs DSP vs SoC 嵌入式处理器选型终极指南 |
【软件系统架构】系列四:嵌入式微处理器 | 【软件系统架构】系列四:嵌入式微处理器 |
【软件系统架构】系列四:多核处理器架构与调度(Deep Dive) | 【软件系统架构】系列四:多核处理器架构与调度(Deep Dive) |
【软件系统架构】系列四:嵌入式软件与操作系统 | 【软件系统架构】系列四:嵌入式软件与操作系统 |
【软件系统架构】系列四:嵌入式软件与操作系统 | 【软件系统架构】系列四:嵌入式软件与操作系统 |
【软件系统架构】系列四:嵌入式协议栈架构详解 | 【软件系统架构】系列四:嵌入式协议栈架构详解 |
【软件系统架构】系列四:嵌入式中间件设计全景解析 | 【软件系统架构】系列四:嵌入式中间件设计全景解析 |
【软件系统架构】系列四:嵌入式 SDK 框架设计指南 | 【软件系统架构】系列四:嵌入式 SDK 框架设计指南 |
【软件系统架构】系列四:AI 模型在嵌入式设备部署指南 | 【软件系统架构】系列四:AI 模型在嵌入式设备部署指南 |
【软件系统架构】系列四:嵌入式操作系统 | 【软件系统架构】系列四:嵌入式操作系统 |
【软件系统架构】系列四:嵌入式实时操作系统(RTOS) | 【软件系统架构】系列四:嵌入式实时操作系统(RTOS) |
【软件系统架构】系列四:设备驱动与板级支持包(BSP) | 【软件系统架构】系列四:设备驱动与板级支持包(BSP) |
【软件系统架构】系列五:OSI/RM 七层模型和TCP/IP分层模型深入解析 | 【软件系统架构】系列五:OSI/RM 七层模型和TCP/IP分层模型深入解析 |
【软件系统架构】系列五:TCP/IP 协议栈 | 【软件系统架构】系列五:TCP/IP 协议栈 |
【软件系统架构】系列五:LwIP协议-轻量级开源TCP/IP协议栈 | 【软件系统架构】系列五:LwIP协议-轻量级开源TCP/IP协议栈 |
【软件系统架构】系列五:通信方式&同步方式 | 【软件系统架构】系列五:通信方式&同步方式 |
【软件系统架构】系列五:深入解析物联网网络分类及其在智能锁系统中的应用架构设计 | 【软件系统架构】系列五:深入解析物联网网络分类及其在智能锁系统中的应用架构设计 |