RT-Thread LWIP总体结构分析

lwip : A Lightweight TCP/IP stack,一个轻量级的 TCP/IP 协议栈。lwip 所实现的,是 TCP/IP 协议栈的一部分内容。

1.TCP/IP协议栈分层

TCP/IP:Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议TCP/IP是一个协议栈,由众多的协议组成。TCP和ip是最重要的两个协议,所以用来作为协议栈的名字。

 TCP/IP定义了四层:网络接口层、网络层、传输层、应用层。简化了OSI的分层

2.net组件总体结构

在RTT中,网络组件总体结构如下:

应用层:例如FTP,HTTP等,实现应用层协议

SAL套接字抽象层:这一层主要是实现标准的socket,bind,accept等接口。由于RTT协议栈支持LWIP,AT Socket和wiznet三种网络协议栈,所以有了这一层。如果只选择使用Lwip协议栈,并且不启用SAL套接字抽象层的情况况下,socket接口实际上是直接通过宏定义转换为lwip的接口,例如:lwip_socket。

netdev网卡层:提供网卡管理,网卡网络状态管理,网络接口IP设置,状态操作等。感觉这一层主要用于驱动创建网卡,并注册对应的硬件操作接口,以及配置IP地址配置接口等。

网络协议层:包含lwip,AT Socket,wiznet。主要是实现tcp/IP,或者其他协议。

网络接口层:主要是硬件接口和对应驱动。

3.lwip组件总体结构

  lwip协议按TCP/IP协议栈分层,其层次划分和对应文件关系如下:

协议层次对应的主要文件和说明
应用层主要在src\apps\*,主要实现http,ftp等应用层协议
传输层

主要是TCP和UDP相关文件,都分布在

src\core\tcp.c tcp_in.c tcp_out.c

src\core\udp.c

网络层

src\core\ip.c

src\core\ipv4\*

src\core\ipv6\*

网络接口层

主要包括

src\core\netif.c 这个是netif的抽象框架,主要netif接口管理,提供抽象的接口发送和接收函数。

src\netif\* 主要是ppp接口eth等具体接口的收发函数的接口层实现。比如对于以太网加以太网帧头的实现就在这里

                      在src\api文件夹下,主要是实现了netconn和BSD网络接口,用于简化lwip回掉模式接口的使用。具体可以参考后面关于lwip模式说明。

4.lwip进程模型和编程接口

一般来讲,协议栈是设计为内核代码的一部分,与用户层保持着完全的分层封装。但是小型嵌入式设备中,内核空间和用户空间没有明显的分层现象,这就允许用户和内核之间有更多宽松的数据处理机制。

LWIP采用如下进程模型:

协议栈作为一个操作系统的独立进程,用户可以留驻在协议栈进程中,也可以是一个独立的进程。第一种方式,用户与协议栈通信通过回调函数;第二种方式,用户和协议栈通信需要调用系统提供的信号量和邮箱机制。

LWIP具有三种协议栈编程接口,分别是

RAW/Callback API、Sequential(netconn) API、Socket API.

RAW接口是lwip提供的原始接口,

netconn是对RAW接口的调用的顺序调用。通过优化或者信号量机制,保证RAW调用和协议栈本身代码顺序。

socket api是对netconn接口的封装。

当用户留驻在协议栈进程中时,用户代码直接使用RAW/Callback API接口。

当用户和协议使用独立进程时,用户代码只能使用netconn api接口,或者socket api接口。

参考链接:

https://www.cnblogs.com/heyongshen/p/16455774.html

LWIP学习笔记-数据包管理_火山宝 && 王林宝的博客-CSDN博客

有一个LWIP协议分析的专题:

xsx - 知乎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值