1介绍
lwIP 是 TCP/IP 协议套件的小型独立实现。
lwIP TCP/IP 实现的重点是减少 RAM 使用同时仍然有一个完整的 TCP。这使得 lwIP 适合使用
在具有数十 KB 可用 RAM 和空间的嵌入式系统中大约 40 KB 的代码 ROM。
lwIP 最初由计算机和网络的 Adam Dunkels 开发瑞典计算机科学研究所 (SICS) 的架构 (CNA) 实验室
现在由全球开发人员网络开发和维护。
2 特征
IP(互联网协议,IPv4 和 IPv6),包括数据包转发多个网络接口
用于网络维护和调试的ICMP(Internet Control Message Protocol)
IGMP(互联网组管理协议)用于组播流量管理
MLD(IPv6 多播侦听器发现)。旨在符合RFC 2710。不支持 MLDv2
ND(IPv6 的邻居发现和无状态地址自动配置)。旨在符合 RFC 4861(邻居发现)和 RFC 4862
(地址自动配置)DHCP、AutoIP/APIPA(零配置)和(无状态)DHCPv6
UDP(用户数据报协议)包括实验性的 UDP-lite 扩展
TCP(传输控制协议)具有拥塞控制,RTT估计快速恢复/快速重传和发送 SACK
用于增强性能的原始/本机 API
可选的类似伯克利的套接字 API
TLS:可选分层 TCP(“altcp”),用于任何近乎透明的 TLS基于 TCP 的协议(移植到 mbedTLS)(有关更多信息,请参阅变更日志)
PPPoS 和 PPPoE(串行/以太网上的点对点协议)
DNS(域名解析器包括mDNS)
6LoWPAN(通过 IEEE 802.15.4、BLE 或 ZEP)
3应用
- 带有 SSI 和 CGI 的 HTTP 服务器(通过 altcp 的 HTTPS)
- 带有 MIB 编译器(简单网络管理协议)的 SNMPv2c 代理,通过 altcp v3
- SNTP(简单网络时间协议)
- NetBIOS 名称服务响应程序
- MDNS(多播DNS)响应器
- iPerf 服务器实现
- MQTT 客户端(通过 altcp 支持 TLS)
4发展
lwIP 已经成长为一个优秀的嵌入式设备 TCP/IP 协议栈,使用堆栈的开发人员经常提交错误修复、改进、并添加到堆栈中以进一步增加其实用性。
lwIP 的开发托管在 Savannah 上,Savannah 是软件开发、维护和分发。每个人都可以通过使用 Savannah 的界面、Git 和邮件列表。一个核心开发团队将提交更改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
5 文件
源代码的自我文档定期从当前提取
Git 源代码,可从此网页获得:
http://www.nongnu.org/lwip/
现在有一个不断增长的关于 lwIP 的 wiki 位于
http://lwip.wikia.com/wiki/LwIP_Wiki