|--doc 与协议使用相关的文本文档。
| |--rawapi.txt 如何使用raw/callback API进行编程。
| |--sys_arch.txt 规定了移植者需要实现的函数、宏定义等。
|--test 协议栈内核测试程序。
|--src 源码文件。
| |--api sequential API和socket API两类接口函数及实现的相关代码,需要OS支持。
| | |--api_lib.c 和msg包含了squential API函数的实现,包含预留给用户的编程接口。
| | |--api_msg.c 包含API消息的封装和处理函数。
| | |--netbuf.c 包含上层数据包管理函数的实现。
| | |--netdb.c 包含主机名字转换相关的函数,主要在socket中被使用到。
| | |--netifapi.c 包含上层网络接口管理函数的实现。
| | |--sockets.c 包含了socket API函数的实现。
| | |--tcpip.c 包含了上层网络接口管理函数的实现。
| | |--sockets.c 包含了socket API函数的实现。
| | |--tcpip.c 提供上层API与协议栈内核交互的函数,整个上层API函数实现的枢纽。
| |--include 整个协议栈使用的头文件。
| | |--lwip
| | | |--opt.h 包含所有LwIP内核参数的默认值。
| | | |--init.h 包含了与当前LwIP源代码信息相关的宏定义,如协议版本号,是否为官方版等。
| |--core 内核源码,内核可以不需要OS支持,直接运行。
| | |--ipv4 包含IPv4标准中与IP层数据包处理相关的所有代码。
| | | |--autoip.c 包含了IP地址自动配置相关函数,若从DHPC服务器获取IP失败,则可以选择启动AUTOIP功能配置自身的IP。将主机配置为169.254.0.0/16中的某个值,并提供一套完整的机制来避免IP地址冲突。
| | | |--icmp.c 包含ICMP协议实现的相关函数,ICMP协议为IP数据包传递过程中的差错报告,差错纠正及目的地址可达性测试提供了支持,常见的ping命令就属于ICMP应用。
| | | |--igmp.c 包含了网络组管理协议IGMP的实现,IGMP为网络中的多播数据提供了支持,主机加入某个多播组后,可以接收到该组的UDP多播数据。
| | | |--inet.c 包含了IP层使用到的一些功能函数定义。如IP地址转换、网络字节序与主机字节序转换等。
| | | |--inet_chksum.c 包含了同IP数据包校验的相关函数。
| | | |--ip.c 包含了IPv4协议实现的相关函数,如数据包的接收、递交、发送等;
| | | |--ip_addr.c 包含了一个判断是否为广播地址的函数。
| | | |--ip_frag.c 提供了IP层数据包分片与重组相关函数。
| | |--ipv6 包含IPv6标准中与IP层数据包处理相关的所有代码。
| | |--snmp SNMP协议实现相关代码。SNMP:简单网络管理协议。基于TCP/IP协议上层应用协议,在LwIP中使用UDP来实现,为互联网上设备管理提供了框架,通过这个框架,可以使管理器实现对不同厂商生产的网络设备(如路由器)的监控、管理。
| | |--dhcp.c DHCP:动态主机配置协议相关代码。通常客户端通过使用UDP提供的功能来实现与DHCP服务器通信,从DHCP服务器处获得一个有效的IP地址。
| | |--dns.c 实现了DNS客户端的代码。DNS:域名系统。DNS也是一个上层协议,通常基于UDP来传输。
| | |--init.c 包含一个与LwIP协议栈初始化密切相关的函数,以及一些协议栈配置信息的检查与输出。
| | |--mem.c 包含了协议栈内存堆管理函数的实现。
| | |--memp.c 包含了协议栈内存池管理函数的实现。
| | |--netif.c 包含了协议栈网络接口管理相关函数的实现。如前面的以太网接口、回环接口等,协议栈内部对每个接口用一个对应的数据结构进行描述,在这里统一管理。
| | |--pbuf.c 包含了协议栈内核使用的数据包管理函数。采用特殊的数据包pbuf结构,可以避免数据在各个层次之间递交时的拷贝,提高递交效率,节省内存空间。
| | |--raw.c 为应用层提供一种直接和IP数据包交互的方式,类似socket编程中原始套接字的概念,可以直接读取IP层接收到的数据包。
| | |--stats.c 包含了协议栈内部数据统计与显示的相关函数,如内存使用情况,邮箱,信号量等信息。
| | |--sys.c 实现了对操作系统模拟层的封装,为协议栈提供统一的邮箱,信号量操作函数。是对sys_arch.c中的函数再封装。
| | |--tcp.c 包含了对TCP控制块操作的函数,也包含了TCP定时处理函数。
| | |--tcp_in.c 包含了TCP协议中数据处接收、处理相关的函数,最重要的TCP状态机函数也在这里。
| | |--tcp_out.c 包含了TCP数据发送的相关函数,如数据包发送,数据重传。
| | |--udp.c 包含了实现UDP协议相关函数,包括UDP控制块管理、UDP数据包发送、UDP数据包接收。
| |--netif 包含与底层网络接口相关文件。
| | |--PPP PPP点对点协议代码。
| | |--etharp.c ARP协议实现代码,以太网物理地址到IP地址的映射。
| | |--ethernetif.c 包含与以太网网卡相关的初始化,发送,接收等函数的实现。但其中的函数不能直接使用,他们都是一个框架性结构,需要根据自己的网卡特性移植。
| | |--loopif.c 为协议栈提供一种环回网络接口功能,可以实现本地两个进程之间的数据传递(一个为客户端,一个为服务器),使得在没有网络硬件的情况下调试协议栈。
| | |--slipif.c SLIP:串行链路IP,提供一种在串行链路上传送IP数据包的函数定义,移植者需要根据自己使用的串行特性(如串口)来实现这些函数,这些函数比较简单,只定义了一些字符实现对链路上的IP数据包封包和发送,不提供任何寻址、错误校验、包类型识别机制。(如果不通过网卡实现,可以通过串口实现)