欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转

doc文件夹结构
contrib.txt
FILES
rawapi.txt
告诉读者怎样使用协议栈的Raw/Callback API进行编程,因为Raw/Callback API
是协议栈提供的三种编程接口中最复杂的一种,它直接与协议栈内核函数交互以
实现编程
savannah.txt
snmp_agent.txt
sys_arch.txt
包括移植说明,规定了移植者需要实现的函数、宏定义等
api文件夹源代码结构
为方便用户编程,LwIP为用户提供两种简单的高级API接口:协议栈sequentialAPI和socket API。这两种API实现的原理都是通过引进邮箱和信号量等通信与同步机制,来实现对内核中raw/callback API函数的封装和调用。也就是说,要使用这两种API,必须基于底层操作系统提供的邮箱和信号量机制,必须要在开发板上移植好操作系统。
文件
说明
api_lib.c
包含sequential API函数的实现,主要包含预留给用户的编程接口
api_msg.c
包含sequential API函数的实现,主要包含API消息的封装和处理函数
netbuf.c
包含上层数据包管理函数的实现
netdb.c
包含与主机名字转换相关的函数,主要在socket中被使用到
netifapi.c
包含上层网络接口管理函数的实现
sockets.c
包含socket API函数的实现
tcpip.c
提供了上层API与协议栈内核交互的函数,它是整个上层API功能得以实现的一个枢纽,其实现的功能可以理解为:从API函数处接收消息,然后将消息递交给内核函数,内核函数根据消息做出相应的处理。
netif文件夹源代码结构
netif文件夹主要包含了与底层网络接口相关的文件。
文件
说明
ppp文件夹
ppp协议实现的源代码
etharp.c
包含ARP协议的实现代码。主要用来实现主机以太网物理地址到IP地址的映射。
ethernetif.c
包含了与以太网网卡密切相关的初始化、发送、接收等函数的实现。这个文件夹中的函数并不能使用,它们都是一个框架性的结构,移植者需要根据自己使用的网卡特性来完成这些函数。
slipif.c
SLIP(串行链路IP),提供一种在串行链路上传送IP数据包的函数定义,移植者需要根据自己使用的串行线路特性来实现这些函数。
FILES
core文件夹源代码结构
core文件夹是LwIP内核源代码,包含IP、ICMP、IGMP、TCP、UDP等核心协议以及建立在它们基础上的DNS、DHCP、SNMP等上层应用协议。内核源代码可以单独运行,且不需要操作系统的支持。我们先看下core根目录下的文件作用说明,然后再分析子目录中过的文件。
文件
说明
dhcp.c
包含DHCP(动态主机配置协议)客户端的实现代码
dns.c
包含DNS(域名系统)客户端的实现代码
init.c
包含了一个与LwIP协议栈初始化密切相关的函数,以及一些协议栈配置信息的检查与输出
mem.c
协议栈内存堆管理函数的实现代码
memp.c
协议栈内存池管理函数的实现代码
netif.c
包含协议栈网络接口管理的相关函数,协议栈内部对每个接口(比如以太网接口、回环接口等)用一个对应的数据结构进行描述,并通过使用netif.c中的函数进行统一管理。
pbuf.c
包含协议栈内核使用的数据包管理函数,用于协议栈层次间的数据传递,避免数据拷贝
raw.c
原始套接字的实现代码,可以通过该文件中的函数直接操纵IP层数据包
stats.c
包含协议栈内部数据统计与显示的函数,比如内存使用状况、邮箱、信号量等信息
sys.c
实现对操作系统模拟层的封装,为协议栈提供统一的邮箱、信号量操作函数。如果开发者需要使用协议栈的sequential API和socket API,则必须使用底层操作系统提供的邮箱与信号量机制,这时内核要求移植者提供一个称为sys_arch.c的操作系统模拟层文件,这个文件主要完成对操作系统中邮箱与信号量函数的封装。而sys.c文件的功能是将sys_arch.c中的函数再次封装,以得到具有协议栈特色的邮箱、信号量操作函数。所谓特色,就是在这些函数中加入一种机制,以实现协议栈中各个定时事件的正确处理。不使用sequential API和socket API时,开发者不需要再实现sys_arch.c中的函数,sys.c对内核来说也没用了,因为此时系统不需要任何邮箱和信号量机制。
tcp.c
包含对TCP控制块操作的函数,也包含了TCP定时处理函数
tcp_in.c
包含TCP协议数据接收、处理相关的函数,以及最重要的TCP状态机函数
tcp_out.c
包含TCP协议数据发送相关函数,例如数据包发送、超时重传函数等
udp.c
包含实现UDP协议的相关函数,包括控制块管理、数据包发送函数、数据包接收函数等
core/ipv4文件夹包含了IPv4标准中与IP层数据包处理相关的所有代码
文件
说明
autoip.c
包含IP地址自动配置相关函数,若主机从DHCP服务器处获取IP地址失败,则此时主机可以选择启动AUTOIP功能来配置自身的IP地址。AUTOIP将主机配置为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地址是否为广播地址的函数
ip_frag.c
提供了IP层数据包分片与重组相关的函数

LWIP源代码文件目录解析相关推荐

  1. 全网最硬核 JVM TLAB 分析 5. TLAB 源代码全解析

    今天,又是干货满满的一天.这是全网最硬核 JVM 系列的开篇,首先从 TLAB 开始.由于文章很长,每个人阅读习惯不同,所以特此拆成单篇版和多篇版 全网最硬核 JVM TLAB 分析(单篇版不包含额外 ...

  2. (C语言)实验设备管理系统——源代码和解析(博主复习用)

    C语言源代码: #include<stdio.h> #include<string.h> #include<stdlib.h> #include<Window ...

  3. OpenCV双目稠密匹配BM算法源代码详细解析

    点击上方"视学算法",选择"星标" 干货第一时间送达 本文由知乎作者David LEE授权转载,不得擅自二次转载.原文链接:https://zhuanlan.z ...

  4. OpenCV3源代码目录解析(算法模块解析 和 示例目录解析)

    OpenCV3源代码文件夹sources: • 3rdparty: 包含第三方库,如用视频解码用的 ffmpeg.jpg.png.tiff 等图片的解码库. • apps: 包含进行 Haar 分类器 ...

  5. java 图像刺绣算法_图像处理:OpenCV3源代码文件解析

    引言 结合冈萨雷斯的<数字图像处理>和Opencv3.0,学习图像处理算法有一段时间了,知道了函数怎么使用,但不知道opencv所用的函数源代码是如何编写的,"知其然,也要知其所 ...

  6. cvAdaptiveThreshold源代码的解析

    函数原型:static void   icvAdaptiveThreshold_MeanC( const CvMat* src, CvMat* dst, int method, int maxValu ...

  7. 28.文件目录解析代码实现

    [README] 1.本文内容总结自 B站 <操作系统-哈工大李治军老师>,内容非常棒,墙裂推荐: 背景: 磁盘格式化后,其组成部分包括引导块,超级块,inode使用位图,盘块使用位图,i ...

  8. 《Android源代码设计模式解析与实战》读书笔记(十四)

    第十四章.迭代器模式 迭代器模式,又叫做游标模式.是行为型设计模式之中的一个.我们知道对容器对象的訪问必定会涉及遍历算法.我们能够将遍历的方法封装在容器中,或者不提供遍历方法,让使用容器的人自己去实现 ...

  9. lwip源码解析之 TCP协议 定时器 tcp_slowtmr();和tcp_fasttmr();

    文章目录 一,定时器时钟 二,快速定时任务 三,低速定时任务 1,超时重传 2,保活keepalive 3,删除超时PCB 四,小结 TCP协议中许多地方是需要使用到定时功能的,如定时重传功能,保活k ...

最新文章

  1. TikTok电商2022年英国小店重要节点全览
  2. Bootstrap系列 -- 11. 基础表单
  3. ubuntu18.04下安装grafana6和简单使用
  4. html input 上标,javascript – 文本类型的输入字段中的上标
  5. geatpy自定义初始的x值、自定义初始基因
  6. AD原理图编译WARNING:Net XXX has no driving source
  7. 多线程笔记--原子操作Interlocked系列函数
  8. 吃完饭打嗝原因及治疗方法(分享)
  9. Java电商项目,秒杀,抢购等高并发场景的具体场景和一些概念以及处理思路
  10. ssm-学子商城-项目第一天
  11. org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback not org.apache.hadoop.security.Grou
  12. iOS IPA包路径,分析百度统计崩溃日志
  13. 计算机学后感作文400,考试后的感想作文400字(精选10篇)
  14. DSPE-PEG-MAL,474922-22-0,DSPE-PEG-Maleimide
  15. FCC ID认证简介
  16. SpringBoot和Mybatis-Plus
  17. 一个域名下面能搭建多个网站吗?
  18. 深度学习上采样下采样概念以及实现
  19. 交互组件滚动条,搜索框,上传组件,翻页的微创新
  20. 对计算机病毒的防治也应以预防,在硬盘中再备份一份_对计算机病毒的防治也应以预防为主。下列各项措施中,错误的预防措施是( )......

热门文章

  1. 帅帅什么意思_为什么99%的花艺师都害怕创作?
  2. linux内核arc4算法,linux内核中与进程相关的数据结构(基于linux-mainline-rc4)
  3. oracle_jdbc新建实例,JDBC的操作步骤和实例
  4. Java 算法 字串统计
  5. java list filter 性能,java的List中使用filter過濾出符合特定條件的元素List
  6. 特征筛选6——肯德尔相关系数筛选特征(单变量筛选)
  7. pandas dataframe对多列同时排序
  8. 使用哈工大LTP做自然语言处理任务基础demo
  9. 发布python项目到pypi,以便供他人用pip install安装
  10. django保存表单数据到数据库中