目录
1. lwIP概述
1.1 TCP/IP 协议简介
TCP/IP协议(传输控制协议/互联网协议)不是简单的一个协议,而是一组特别的协议,包括:TCP,IP,UDP,ARP等,这些被称为子协议。在这些协议中,最重要、最著名的就是TCP和IP。因此,大部分网络管理员称整个协议族为“TCP/IP”。
国际标准组织将整个以太网通信结构制定了OSI模型,总共分层七个层,分别为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层,每个层功能不同,通信中各司其职,整个模型包括硬件和软件定义。OSI模型是理想分层,一般的网络系统只是涉及其中几层。
TCP/IP是互联网最基本的协议,是互联网通信使用的网络协议,由网络层的IP协议和传输层的TCP协议组成。TCP/IP只有四个分层,分别为应用层、传输层、网络层以及网络访问层。虽然TCP/IP分层少了,但与OSI模型是不冲突的,它把OSI模型一些层次整合一起的,本质上可以实现相同功能。
实际上,还有一个TCP/IP混合模型,分为五个层,参考下图 ,它实际与TCP/IP四层模型是相通的,只是把网络访问层拆成数据链路层和物理层。这种分层方法对我们学习理解更容易。
设计网络时,为了降低网络设计的复杂性,对组成网络的硬件、软件进行封装、分层,这些分层即构成了网络体系模型。在两个设备相同层之间的对话、通信约定,构成了层级协议。设备中使用的所有协议加起来统称协议栈。在这个网络模型中,每一层完成不同的 任务,都提供接口供上一层访问。而在每层的内部,可以使用不同的方式来实现接口,因而内部的改变不会影响其它层。
在TCP/IP混合参考模型中,数据链路层又被分为LLC层(逻辑链路层)和MAC层(媒体介质访问层)。目前,对于普通的接入网络终端的设备, LLC层和MAC层是软、硬件的分界线。
1.2 lwIP 简介
lwIP(A Lightweight TCP/IP stack)是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。LwIP是Light Weight (轻型)IP协议,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40K左右的ROM就可以运行。这样就可以让lwIP适用于资源有限的小型平台例如嵌入式系统。
目前 lwIP 最新版本 2.1.2
官网:http://savannah.nongnu.org/projects/lwip/
官方下载地址:http://download.savannah.nongnu.org/releases/lwip/
lwIP 主要特性:
- *IP(Internet协议,IPv4和IPv6),包括通过多个网络接口的数据包转发
- ICMP 用于网络维护和调试(Internet控制消息协议)
- IGMP 用于多播流量管理(因特网组管理协议)
- *MLD(IPv6的多播侦听器发现)。旨在符合RFC 2710.不支持MLDv2
- ND(IPv6的邻居发现和无状态地址自动配置)。旨在符合RFC 4861(邻居发现)和RFC 4862(地址自动配置)
- DHCP,AutoIP / APIPA(Zeroconf)和(无状态)DHCPv6
- UDP(用户数据报协议),包括UDP-lite扩展
- TCP(传输控制协议)具有拥塞控制,RTT估计快速恢复/快速重传和发送SACK
- RAW/NATIVE API以提高性能
- 可选的Berkeley-socket API
- TLS:可选的分层TCP(“altcp”),用于任何基于TCP的协议(移植到mbedTLS)的近乎透明的TLS(有关详细信息,请参阅changelog)
- PPPoS和PPPoE(串口/以太网上的点对点协议)
- DNS(域名解析器,包括mDNS)
- 6LoWPAN(通过IEEE 802.15.4,BLE或ZEP)
1.2.1 目录结构 lwip-2.1.2
下载并解压,目录结构如下:
src/ - lwIP TCP/IP 协议栈 源码.
doc/ - lwIP 文档.
双击打开,既可以查看相关文档
test/ - 测试相关
1.2.2 lwip-2.1.2/src
- api/ - 高级封装 API 的代码。如果您使用低级 回调/raw API ,则不需要。