LWIP应用开发|LWIP协议栈

LWIP协议栈

1. LWIP协议介绍

LWIP 是瑞典计算机科学院(SICS)的Adam Dunkels 等开发的一个小型开源的TCP/IP 协议栈。LWIP 是轻量级 IP 协议,有无操作系统的支持都可以运行, LWIP 实现的重点是在保持 TCP 协议主要功能的基础上减少对 RAM 的占用,它只需十几 KB 的 RAM 和 40K 左右的 ROM 就可以运行,这使LWIP协议栈适合在低端的嵌入式系统中使用。

LWIP支持的协议种类:

  • DNS,域名解析;
  • SNMP,简单网络管理协议;
  • DHCP,动态主机配置协议;
  • UDP 协议,用户数据报协议;
  • TCP 协议,支持 TCP 拥塞控制, RTT 估计,快速恢复与重传等;
  • 提供三种用户编程接口方式:raw/callback API、sequential API、BSD-style socket API;
  • IP 协议,包括 IPv4 和 IPv6,支持 IP 分片与重装,支持多网络接口下数据转发;
  • AUTOIP, IP 地址自动配置;
  • ICMP 协议,用于网络调试与维护;
  • IGMP 协议,用于网络组管理,可以实现多播数据的接收;
  • ARP 协议,以太网地址解析协议;
  • PPP,点对点协议,支持 PPPoE

在这里插入图片描述

LWIP协议源码模型如下图示:
在这里插入图片描述

2. LWIP编程接口

LWIP提供了三种编程接口,分别为 RAW API、 Netconn API和Socket API

  • RAW API:内核回调型API,在没有操作系统支持的中,只能使用RAW API进行开发
  • Netconn API:基于操作系统的IPC机制(即信号量和邮箱机制)实现的,将LWIP内核代码和网络应用程序分离成了独立的线程,因此LWIP内核线程就只负责数据包的TCP/IP封装和拆封,而不用进行数据的应用层处理,大大提高了系统对网络数据包的处理效率
  • Socket API:即套接字,它对网络连接进行了高级的抽象,使得用户可以像操作文件一样操作网络连接

RAW API和Netconn/Socket API的区别如下表所示:
在这里插入图片描述

3. LWIP硬件接口

LWIP可以通过链表挂载多个以太网外设,每个外设的interface结构体中包含IP地址、硬件信息、驱动相关信息以及其他可选项
在这里插入图片描述

  • IP information:包括IP地址、子网掩码和网关相关信息

在这里插入图片描述

  • Hardware information:包括MAC地址和Flags标示相关信息

在这里插入图片描述

  • Driver function:包括输入、输出和回调函数相关信息

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Chuangke_Andy/article/details/112979007
今日推荐