LWIP的优缺点

2023-12-27 19:49:23

前言

Light weight IP,意思是轻量化的TCP/IP协议,是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。LwIP的设计初衷是:用少量的资源消耗实现一个较为完整的TCP/IP协议栈,其中“完整”主要指的是TCP协议的完整性,实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。此外LwIP既可以移植到操作系统上运行,也可以在无操作系统的情况下独立运行

特点:

  1. 支持ARP协议(以太网地址解析协议)。

  2. 支持ICMP协议(控制报文协议),用于网络的调试与维护。

  3. 支持IGMP协议(互联网组管理协议),可以实现多播数据的接收。

  4. 支持UDP协议(用户数据报协议)。

  5. 支持TCP协议(传输控制协议),包括阻塞控制、RTT 估算、快速恢复和快速转发。

  6. 支持PPP协议(点对点通信协议),支持PPPoE。

  7. 支持DNS(域名解析)。

  8. 支持DHCP协议,动态分配IP地址。

  9. 支持IP协议,包括IPv4、IPv6协议,支持IP分片与重装功能,多网络接口下的数据包转发。

  10. 支持SNMP协议(简单网络管理协议)。

  11. 支持AUTOIP,自动IP地址配置。

  12. 提供专门的内部回调接口(Raw API),用于提高应用程序性能。

  13. 提供可选择的Berkeley接口API,即 Socket套接字 (在多线程情况下使用) 。

优点:

  1. 资源开销低,即轻量化。LwIP内核有自己的内存管理策略和数据包管理策略,使得内核处理数据包的效率很高。另外,LwIP高度可剪裁,一切不需要的功能都可以通过宏编译选项去掉。LwIP的流畅运行需要40KB的代码ROM和几十KB的RAM,这让它非常适合用在内存资源受限的嵌入式设备中。

  2. 所支持的协议较为完整。几乎支持TCP/IP中所有常见的协议,这在嵌入式设备中早已够用。

  3. 实现了一些常见的应用程序:DHCP客户端、DNS客户端、HTTP服务器、MQTT客户端、TFTP服务器、SNTP客户端等等。

  4. 同时提供了三种编程接口:RAW API、NETCONN API(注:NETCONN API即为Sequential API,为了统一,下文均采用NETCONN API)和Socket API。这三种API的执行效率、易用性、可移植性以及时空间的开销各不相同,用户可以根据实际需要,平衡利弊,选择合适的API进行网络应用程序的开发。

  5. 高度可移植。其源代码全部用C实现,用户可以很方便地实现跨处理器、跨编译器的移植。另外,它对内核中会使用到操作系统功能的地方进行了抽象,使用了一套自定义的API,用户可以通过自己实现这些API,从而实现跨操作系统的移植工作。

  6. 开源、免费,用户可以不用承担任何商业风险地使用它。

  7. 相比于嵌入式领域其它的TCP/IP协议栈,比如uC-TCP/IP、FreeRTOS-TCP等,LwIP的发展历史要更悠久一些,得到了更多的验证和测试。LwIP被广泛用在嵌入式网络设备中,国内一些物联网公司推出的物联网操作系统,其TCP/IP核心就是LwIP;物联网知名的WiFi模块ESP8266,其TCP/IP固件,使用的就是LwIP。

LwIP尽管有如此多的优点,但它毕竟是为嵌入式而生,所以并没有很完整地实现TCP/IP协议栈。相比于Linux和Windows系统自带的TCP/IP协议栈,LwIP的功能不算完整和强大。但对于大多数物联网领域的网络应用程序,LwIP已经足够了。

文章来源:https://blog.csdn.net/hyf_forward/article/details/135247560
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。