




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LWIP 模块只要包括 1 配置模块 2 初始化模块 3 netIf 模块 4 mem 模块 5 netarp 模块 6 ip 模块 7 icmp 模块 8 dhcp 模块 9 tcp 模块 10 snmp 模块 1 配置模块 配置模块 通过各种宏定义宏定义的方式 对系统和子系统进行配置 主 要文件是 opt h 2 初始化模块 初始化模块 初始化模块入口文件 tcpip c 其初始化入口函数 Void tcpip init void initfunc void void arg 通过调用 lwip init 初始化所有的子模块 并启动协议栈管理进程 初始化所有的子模块 并启动协议栈管理进程 static void tcpip thread void arg 协议栈数据分发管理进程负责输入报协议栈数据分发管理进程负责输入报 文的处理 超时处理 文的处理 超时处理 API 函数及回调的处理 函数及回调的处理 Void tcpip init void initfunc void void arg lwip init tcpip init done initfunc tcpip init done arg arg mbox sys mbox new TCPIP MBOX SIZE if LWIP TCPIP CORE LOCKING lock tcpip core sys sem new 1 endif LWIP TCPIP CORE LOCKING sys thread new TCPIP THREAD NAME tcpip thread NULL LWIP STK SIZE TCPIP THREAD PRIO 3 netIf 模块 模块 Netif 模块是协议栈与底层驱动的接口模块 该模块的主要文件是 netif c 通过链表的形式描述了所有的网口设备 通过链表的形式描述了所有的网口设备 NetIf 的数据结构描述了网口的参数 包括的数据结构描述了网口的参数 包括 IP 地址 地址 MAC 地址 地址 link 状态 网口号 收发函数等等参数 一个网口设备的数据收发主要通过该状态 网口号 收发函数等等参数 一个网口设备的数据收发主要通过该 结构进行结构进行 4 mem 模块模块 Mem 模块同一管理了协议栈使用的内容缓冲区 并管理模块同一管理了协议栈使用的内容缓冲区 并管理 pbuf 结构以结构以 及报文的字段处理 主要的文件包括及报文的字段处理 主要的文件包括 mem c memp c pbuf c 5 netarp 模块模块 netarp 模块是处理模块是处理 arp 协议的模块 主要源文件为协议的模块 主要源文件为 etharp c 其主要入口函数 其主要入口函数 ethernet input struct pbuf p struct netif netif 该入口函数通过判断输入报文该入口函数通过判断输入报文 p 的协议类型来决定是按照的协议类型来决定是按照 arp 协议协议进处理进处理 还是将该报文还是将该报文提交到提交到 IP 协议协议 ethernet input struct pbuf p struct netif netif struct eth hdr ethhdr u16 t type ethhdr p payload switch type case ETHTYPE IP IP packet etharp ip input netif p case ETHTYPE ARP pass p to ARP module etharp arp input netif struct eth addr netif hwaddr p case ETHTYPE PPPOEDISC PPPOE SUPPORT pppoe disc input netif p case ETHTYPE PPPOE PPP Over Ethernet Session Stage pppoe data input netif p default ETHARP STATS INC etharp proterr ETHARP STATS INC etharp drop return ERR OK if 如果报文是如果报文是 ARP 报文 报文 该接口则调用该接口则调用 etharp arp input 进行 进行 arp 请请 求处理 求处理 if 如果是如果是 ip 报文 报文 该接口就调用该接口就调用 etharp ip input 进行进行 arp 更新 并调更新 并调 用用 ip input 接口 将报文提交给接口 将报文提交给 ip 层 层 在该模块中 创建了设备的地址映射在该模块中 创建了设备的地址映射 arp 表 并提供地址映射关系查询接表 并提供地址映射关系查询接 口 同时还提供了口 同时还提供了 arp 报文的发送接口 如下 报文的发送接口 如下 err t etharp output struct netif netif struct pbuf q struct ip addr ipaddr 该接口需要注册到该接口需要注册到 netif 的的 output 字段 字段 ip 层在输出报文时 通过层在输出报文时 通过 该接口该接口获取目标机的获取目标机的 MAC 地址地址 组合最终报文后 由该接口调用底 组合最终报文后 由该接口调用底 层设备的驱动接口发送数据 层设备的驱动接口发送数据 在在 etharp output 接口中 判断报文类型接口中 判断报文类型 如果是广播包或者组播包 就调用如果是广播包或者组播包 就调用 etharp send ip 组装目标 组装目标 mac 和源和源 mac 接口 接口 etharp send ip 调用调用 netif 结构中的设备驱动注册的结构中的设备驱动注册的 linkoutput 钩子函数 发送最终报文 钩子函数 发送最终报文 如果是单播包 如果是单播包 etharp output 接口就调用接口就调用 etharp query 进行进行 ip 地址和地址和 MAC 地址的映射 来获取到目标机的地址的映射 来获取到目标机的 MAC 地址 并在地址 并在 etharp query 中调用中调用 etharp send ip 来发送最终组合报文 来发送最终组合报文 6 ip 模块模块 ip 模块实现了协议的模块实现了协议的 ip 层处理 主要文件为层处理 主要文件为 ip c 其主要入口函数 其主要入口函数 为 为 err t ip input struct pbuf p struct netif inp 该接口通过判断输入报文的协议类型 将其输入到相应的上层协议模块中该接口通过判断输入报文的协议类型 将其输入到相应的上层协议模块中 去 比如 将去 比如 将 udp 报文送到报文送到 udp input 该模块另外一个接口是输入函数 原型如下 该模块另外一个接口是输入函数 原型如下 err t ip output struct pbuf p struct ip addr src struct ip addr dest u8 t ttl u8 t tos u8 t proto 该接口通过路由表或者传输该接口通过路由表或者传输 ip 后 调用后 调用 netif 的的 output 字段函数钩字段函数钩 子发送报文 子发送报文 7 UDP 模块模块 udp 模块实现了模块实现了 udp 协议层的协议处理 主要文件为协议层的协议处理 主要文件为 udp c 该模 该模 块通过块通过 PCB 控制块将应用端口跟应用程序做了绑定 在接收到新报控制块将应用端口跟应用程序做了绑定 在接收到新报 文时 分析其对应的文时 分析其对应的 PCB 找到对应的处理钩子 进行应用的处理 找到对应的处理钩子 进行应用的处理 主要入口函数为 主要入口函数为 void udp input struct pbuf p struct netif inp 该模块负责输出的接口如下 该模块负责输出的接口如下 err t udp send struct udp pcb pcb struct pbuf p 该模块负责将一个该模块负责将一个 PCB 跟一个本地端口进行绑定的接口如下 跟一个本地端口进行绑定的接口如下 err t udp bind struct udp pcb pcb struct ip addr ipaddr u16 t port 该模块负责将一个该模块负责将一个 PCB 跟一个远端端口绑定的接口如下 跟一个远端端口绑定的接口如下 err t udp connect struct udp pcb pcb struct ip addr ipaddr u16 t 8 icmp 模块模块 该模块负责该模块负责 icmp 协议的处理 其比较简单 主要的处理接口如下 协议的处理 其比较简单 主要的处理接口如下 Void icmp input struct pbuf p struct netif inp 上述接口负责上述接口负责 icmp 输入报文的分析和处理 输入报文的分析和处理 9 igmp 模块模块 igmp 模块负责分组管理 其主要的接口函数如下 模块负责分组管理 其主要的接口函数如下 void igmp input struct pbuf p struct netif inp struct ip addr dest 该接口负责该接口负责 IGMP 协议报文的处理 比如分析当前报文是请求还协议报文的处理 比如分析当前报文是请求还 是应答 是应答 err t igmp joingroup struct ip addr ifaddr struct ip addr groupaddr 该接口将一个网口加入一个组 该接口将一个网口加入一个组 err t igmp leavegroup struct ip addr ifaddr struct ip addr groupaddr 该接口将一个网口从一个组中移出 该接口将一个网口从一个组中移出 10 dhcp 模块模块 dhcp 模块用于获取设备模块用于获取设备 ip 地址的相关信息 其处理入口主要有这地址的相关信息 其处理入口主要有这 么几个 么几个 dpch 的启动 的启动 dpch 的接收报文处理以及定时器模块的处理 的接收报文处理以及定时器模块的处理 主要的接口原型如下 主要的接口原型如下 err t dhcp start struct netif netif 该接口用于设备启动该接口用于设备启动 dhcp 模块 主要是客户端的功能 该模块实模块 主要是客户端的功能 该模块实 现设备现设备 dhcp 描述结构生成 并将描述结构生成 并将 dhcp 的端口绑定到的端口绑定到 udp 协议中 以协议中 以 及将本及将本 dhcp 模块跟远端服务器端口进行绑定 最后启动模块跟远端服务器端口进行绑定 最后启动 dhcp 申请 申请 static void dhcp recv void arg struct udp pcb pcb struct pbuf p struct ip addr addr u16 t port 该接口为一个注册接口 用于该接口为一个注册接口 用于 dhcp 报文接收 在报文接收 在 start dhcp 时 时 该接口通过该接口通过 dhcp 的的 udp pcb 注册到注册到 udp 协议层 协议层 Udp 进行报文处理进行报文处理 后 根据端口调用该注册接口 该接口中 实现后 根据端口调用该注册接口 该接口中 实现 dhcp 报文的协议处报文的协议处 理 理 Void dhcp fine tmr Void dhcp coarse tmr 这两个函数接口实现了这两个函数接口实现了 dhcp 的相关超时处理监控 上面一个用于的相关超时处理监控 上面一个用于 请求应答超时处理 下面一个用于地址租用情况的到期处理 请求
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婚姻解除财产分配协议范本:房产、车辆及子女抚养权
- 公共交通空调设备采购、安装及定期检修合同
- 住宅小区消防系统安全性能检测与维保服务协议
- 离婚协议谈话笔录:离婚后子女监护权与抚养费协议
- 班组模具安全培训内容课件
- 成语互动游戏课件
- 胡杨之地 阅读答案
- 2025年麻醉科常用镇痛药物使用技巧考试卷答案及解析
- 中国历史文选 课件 第十七讲 周瑜传;第十八讲 释老志
- 奇妙的生命课件
- 医院法律法规培训内容
- 科技创新管理办法细则
- 飞书使用教程培训
- 肺炎护理考试试题及答案
- 带状疱疹诊疗指南课件
- 肩关节脱位的治疗讲课件
- 极地车辆轻量化复合材料结构-洞察阐释
- 婴幼儿托育专业教学标准(中等职业教育)2025修订
- 劳务外包工安全管理制度
- 2025-2030中国对香豆酸市场发展形势与未来趋势研究报告
- 体育政策法规课件
评论
0/150
提交评论