LwIP 协议栈核心.c 文件依赖关系图

LwIP协议栈核心.c文件依赖关系图

以下通过Mermaid结构图清晰展示LwIP核心.c文件的层级依赖、调用关系,按「基础层→核心层→应用层」的逻辑梳理,同时标注关键文件的核心作用:
基础类型定义
数据载体
可选依赖
cc.c

平台数据类型适配
所有文件
sys_arch.c

OS/裸机适配(线程/信号量)
mem.c

堆内存管理
tcp.c

TCP核心逻辑
netconn.c

NETCONN API
memp.c

内存池管理
pbuf.c

数据包缓冲管理
所有数据收发模块
netif.c

网卡接口管理
ethernetif.c

以太网驱动适配
arp.c

ARP协议处理
ip4.c

IPv4核心(转发/封装)
ip_frag.c

IP分片/重组
icmp.c

ICMP协议(Ping)
igmp.c

组播管理(可选)
udp.c

UDP协议
tcp_in.c

TCP接收处理
tcp_out.c

TCP发送处理
tcp_timer.c

TCP超时重传
tcp_win.c

TCP滑动窗口
api_lib.c

RAW API核心
api_msg.c

RAW API消息处理
sockets.c

Socket API(BSD兼容)
dhcp.c

DHCP客户端
dns.c

DNS解析
debug.c

调试日志
chksum.c

校验和计算

核心文件关系说明

1. 基础依赖链(必选)
  • 最底层cc.c(定义u8_t/u16_t等跨平台类型)、sys_arch.c(OS/裸机适配)是所有模块的基础;
  • 内存/缓冲mem.c/memp.c(内存管理)→ pbuf.c(数据包缓冲),所有数据收发模块(tcp/udp/ip)都依赖pbuf.c传递数据;
  • 网卡接口netif.c(网卡管理)是链路层与网络层的桥梁,ethernetif.c是具体的以太网驱动适配,依赖netif.c
2. 协议层调用链
  • 网络层ip4.c是核心,承接arp.c(地址解析)、icmp.c(差错报告),向下调用pbuf.c,向上为传输层提供IP封装/解封装;
  • 传输层
    • UDP:udp.c直接依赖ip4.c,逻辑简单,无复杂状态管理;
    • TCP:tcp.c是核心,拆分tcp_in.c(接收)、tcp_out.c(发送)、tcp_timer.c(超时)、tcp_win.c(窗口),整体依赖ip4.csys_arch.c(定时器/同步)。
3. API层封装关系
  • RAW API(api_lib.c/api_msg.c):直接封装tcp.c/udp.c,是最底层API;
  • NETCONN API(netconn.c):基于RAW API封装,增加连接对象抽象,依赖sys_arch.c(线程/信号量);
  • Socket API(sockets.c):最高层封装,基于NETCONN API实现BSD兼容接口,对外提供socket()/connect()等函数。
4. 可选模块依赖
  • dhcp.c:依赖ip4.c(IP地址管理)和netif.c(网卡配置);
  • dns.c:依赖udp.c(DNS用UDP通信)和ip4.c(目标IP解析);
  • igmp.c/ppp.c等:基于ip4.c扩展,按需启用。

总结

  1. LwIP文件依赖遵循「基础层→数据缓冲→链路层→网络层→传输层→API层 」的层级逻辑,核心是pbuf.c(数据)和ip4.c(网络层核心);
  2. TCP模块是最复杂的部分,拆分为多个子文件(tcp_in/out/timer/win),均依赖tcp.c核心;
  3. API层是逐层封装关系:Socket API → NETCONN API → RAW API,底层均指向传输层(TCP/UDP)核心;
  4. 移植时核心修改sys_arch.c(OS适配)和ethernetif.c(网卡驱动),无需改动协议栈核心文件。
相关推荐
W.D.小糊涂5 小时前
gpu服务器安装windows+ubuntu24.04双系统
c语言·开发语言·数据库
逐步前行6 小时前
STM32_TIM_寄存器操作
stm32·单片机·嵌入式硬件
0南城逆流06 小时前
【STM32】知识点介绍七:PWM功能
stm32·单片机·嵌入式硬件
05大叔6 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
智者知已应修善业6 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
我想走路带风6 小时前
c++工具转向网络底层工具
网络
dashizhi20156 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑
皙然7 小时前
深入理解TCP流量控制
网络·网络协议·tcp/ip
C羊驼7 小时前
C语言:两天打鱼,三天晒网
c语言·经验分享·笔记·算法·青少年编程
我是一棵无人问荆的小草7 小时前
单片机通电后延迟启动策略
单片机·嵌入式硬件