当前位置:
文档之家› LwIP及其网络编程应用实例ppt课件
LwIP及其网络编程应用实例ppt课件
LwIP的核心代码,包括ICMP、IP、UDP、TCP等协议的实现等。
include目录
LwIP的包含文件。
netif目录
ARP协议和LwIP网络设备驱动程序的模板,提供了网络接口驱动 程序的基本框架。
ppt课件
5
LwIP的软件体系结构
LwIP的协议层次:
LwIP也是以4层TCP/IP模型为参照来实现TCP/IP协 议族的。
从几种典型的协议模块出发,纵向分析各模块的跨层调用关系 。
ppt课件ቤተ መጻሕፍቲ ባይዱ
10
整体调用关 系
应用程序
应 用
层
图给出了LwIP的整体调 用关系,基本上涵盖了 LwIP的主要功能模块和 绝大部分的函数调用。
tcp_receive() tcp_process()
tcp_input()
tcp_write() tcp_enqueue() tcp_output()
冲与内存管理子系统、网络接口函数等
。
ppt课件
7
LwIP的进程模型
TCP/IP协议族的进程模型指的是采用何种方法把系统分成不同的进程。 常见的进程模型有两种:
每一个协议作为一个独立的进程 协议栈作为一个内核只占据一个进程。
第一种模型必须符合协议的每一层,协议层之间通过指定的方式进行通讯 。
LwIP的含义是轻型IP协议,其实现的
重点是在保持TCP协议主要功能的基础
上减少对RAM的占用,这使得LwIP协
议栈非常适合在小型嵌入式系统中使用
。
ppt课件
2
LwIP介绍
LwIP的版本较多,较新的版本通常完善或增加了LwIP的功能。
LwIP有如下特点:
IP:支持多网络接口下的IP转发
IP fragment:IP分片
DNS:域名解析
SNMP:简单网络管理协议
DHCP:动态主机配置协议
PPP:点对点协议
IPv6
ppt课件
3
LwIP源码的文件组织
LwIP文件目录的组织结构如图所示,其源代码全 部位于目录src下。
src目录下一般有5个子目录
LwIP提供的api子目录、core子目录、include子目录 和netif子目录
优点较明显,即每一种协议都可以独立参与到系统运行中,其实现的代码也比 较简单,整个协议栈的层次脉络清晰,便于理解和调试。
缺点也是显而易见的,即数据跨层传递时不得不产生进程切换以及内存复制。 这一缺点极大影响了系统的整体性能,尤其对于嵌入式系统来说更是不能忍受 的。
第二种模型将协议栈驻留在操作系统内核中,应用程序通过系统调用与协 议栈进行通讯。
ARP:支持ARP协议
ICMP:支持ICMP协议
UDP:支持UDP协议
TCP:支持TCP协议,包括拥塞控制、RTT估算和快速恢复/快速重传
Raw API:提供专门的内部回调函数,以提高应用性能
Socket API:可选的Berkeley-like socket API
LwIP的较新版本还提供对以下功能或协议的支持:
每一个协议作为一个模块被实现,同时还提供了几个函数作为 协议的入口点。
LwIP并没有严格地按照分层的方式实现协议族。
实际上LwIP使用的是一种比较松散的通讯机制,通过 共享内存的方式实现应用层与底层协议族之间的通讯。
LwIP拥有独特的缓冲机制,使得各层次可以更加有效 的重复使用缓冲区。
当数据需要处理或跨层传递时,通常是通过调用事先已定义好 的回调函数来完成有关操作。
优点是大大提高了LwIP的整体性能;缺点是使得LwIP的整个软 件体系显得略微复杂,尤其是函数之间的调用关系更为繁琐。
为了理清LwIP的函数调用关系,从两个不同的方向对 这一问题进行分析:
从不同的协议层出发,横向分析各个层次内的调用关系;
udp_send()
udp_input()
运 输
层
icmp_dest_unreach() icmp_input()
图中只标注了对LwIP的 整个软件体系起着重要 支撑作用的主干函数
ip_route() ip_output()
ip_output_if()
netif->output()
arp_input() arp_reply()
LwIP尽量避免内存复制,避免了内存复制产生的性能损失。
ppt课件
6
LwIP的软件体系结构
与LwIP的协议层次相匹配,LwIP 采用模块化设计的方法实现。
TCP/IP协议的实现模块
如ARP、IP、ICMP、UDP、TCP等
许多相关支持模块。
这些支持模块包括操作系统模拟层、缓
需用户自己创建的arch目录。
lwip
src
api
arch
cpoprte课件
include
netif 4
LwIP源码的文件组织
每个子目录包含的某一类相关的文件,简要说明如下:
api目录
应用程序接口文件。
arch目录
与硬件和OS有关的文件,包括网络驱动、移植需要修改的文件。
core目录
这种设计可以使用交叉协议分层技术,各层协议不必严格划分。 这种进程模型的缺点是层次不清,给理解增加了难度。
ppt课件
8
LwIP的进程模型
LwIP则采用一种比较灵活的设计方法。
它可以将所有的协议驻留在一个进程,以便独立于 操作系统内核之外。
应用程序既可以驻留在LwIP的进程中,也可以使用 一个单独的进程。
它也可以根据协议层次结构创建多个进程,但各个 进程之间只传送尽可能少的必要信息,而没有引入 额外的内存复制
LwIP在协议层之间切换时,一般只传递数据缓冲区 的地址,让需要处理数据的协议层自己去提取。
ppt课件
9
LwIP的函数调用关系
为了尽量避免不必要的内存复制,LwIP更多的是采用 一种基于回调函数的设计方法。
第九章 LwIP及其网络编程应用实例
ppt课件
1
LwIP介绍
LwIP(Light Weight Internet Protocol)是 瑞典计算机科学院(Swedish Institute of Computer Science)的Adam Dunkels等 人开发的一套用于嵌入式系统的开源 TCP/IP协议栈。
网 际 层
ip_input()
网
络网
接络