Third-party open-source software lwip | 三方开源软件lwip
简介
lwIP 是一个小型且独立的 TCP/IP 协议栈实现。
lwIP 的 TCP/IP 实现重点在于减少 RAM 的使用,同时仍然保持完整的 TCP 功能。这使得 lwIP 非常适合用于嵌入式系统,这些系统通常只有几十 KB 的可用 RAM 和大约 40 KB 的代码 ROM 空间。
lwIP 最初由瑞典计算机科学研究所(SICS)的计算机与网络架构(CNA)实验室的 Adam Dunkels 开发,现由全球开发者网络进行开发和维护。
特性
- IP(互联网协议,IPv4 和 IPv6),包括跨多个网络接口的数据包转发
- ICMP(互联网控制消息协议),用于网络维护和调试
- IGMP(互联网组管理协议),用于组播流量管理
- MLD(IPv6 组播监听发现协议),旨在符合 RFC 2710,不支持 MLDv2
- ND(IPv6 邻居发现和无状态地址自动配置),旨在符合 RFC 4861(邻居发现)和 RFC 4862(地址自动配置)
- DHCP、AutoIP/APIPA(零配置)和(无状态)DHCPv6
- UDP(用户数据报协议),包括实验性的 UDP-lite 扩展
- TCP(传输控制协议),具备拥塞控制、RTT 估计、快速恢复/快速重传和发送 SACK 功能
- 原生/原始 API,以提升性能
- 可选的类 Berkeley 套接字 API
- TLS:可选的分层 TCP("altcp"),为任何基于 TCP 的协议提供近乎透明的 TLS 支持(移植到 mbedTLS)(详见更新日志)
- PPPoS 和 PPPoE(串行/以太网上的点对点协议)
- DNS(域名解析器,包括 mDNS)
- 6LoWPAN(通过 IEEE 802.15.4、BLE 或 ZEP)
应用
- HTTP 服务器,支持 SSI 和 CGI(通过 altcp 实现 HTTPS)
- SNMPv2c 代理,带 MIB 编译器(简单网络管理协议),v3 通过 altcp 实现
- SNTP(简单网络时间协议)
- NetBIOS 名称服务响应器
- MDNS(组播 DNS)响应器
- iPerf 服务器实现
- MQTT 客户端(通过 altcp 支持 TLS)
许可证
lwIP 基于 BSD 许可证免费提供。
开发
lwIP 已发展成为嵌入式设备的优秀 TCP/IP 栈,使用该栈的开发者经常提交错误修复、改进和新功能,以进一步提升其效用。
lwIP 的开发托管在 Savannah 上,这是一个软件开发、维护和分发的中心平台。任何人都可以通过 Savannah 的界面、Git 和邮件列表来帮助改进 lwIP。一个核心开发团队将负责将更改提交到 Git 源码树。
lwIP TCP/IP 栈维护在 'lwip' Git 模块中,而贡献(如平台移植)则位于 'contrib' Git 模块中。
有关用户和开发者的 Git 服务器访问详情,请参阅 doc/savannah.txt。
当前的 Git 仓库可通过网页浏览: http://git.savannah.gnu.org/cgit/lwip.git http://git.savannah.gnu.org/cgit/lwip/lwip-contrib.git
通过 lwIP 项目页面提交补丁和报告错误: http://savannah.nongnu.org/projects/lwip/
持续集成构建(GCC, clang): https://travis-ci.org/yarrick/lwip-merged
文档
源代码的自文档定期从当前的 Git 源码中提取,并可通过以下网页访问: http://www.nongnu.org/lwip/
此外,还有一个不断增长的关于 lwIP 的维基: http://lwip.wikia.com/wiki/LwIP_Wiki
您还可以订阅以下邮件列表: http://savannah.nongnu.org/mail/?group=lwip 以及可搜索的存档: http://lists.nongnu.org/archive/html/lwip-users/ http://lists.nongnu.org/archive/html/lwip-devel/
lwIP 最初由 Adam Dunkels 编写: http://dunkels.com/adam/
阅读 Adam 的论文、docs/ 目录中的文件、浏览源代码文档以及查阅邮件列表存档,是熟悉 lwIP 设计的有效途径。
Adam Dunkels adam@sics.se
Leon Woestenberg leon.woestenberg@gmx.net