LWIP协议栈架构与设计解析.docVIP

  • 36
  • 0
  • 约 18页
  • 2015-09-06 发布于重庆
  • 举报
LWIP协议栈架构与设计解析.doc

LWIP协议栈及接口提取 Version 1.0 2012/06/20 版本 1.0 姓名 部门 邮件 作者 雷岩 Leiyan3521@163.com 审阅 版本历史 版本 日期 修订 姓名 Rev 1.0 2011/11/07 First Draft leiyan 目录 一、 LWIP介绍 5 二、 LWIP源码分析 7 1. LWIP协议栈的架构 7 2.各个文件夹介绍 8 3.模块及源文件介绍 10 三、 LWIP协议栈处理数据流程 17 四、 接口提取 18 LWIP介绍 首先说明一下,这篇文档的主要目的是提取网络发送和接收数据的函数接口。然后用我们自己的驱动网卡的接口函数替代程序中的接口。如果对LWIP协议栈本身没什么兴趣的,可以跳过第一、二、三章,直接阅读第四章,使用我们的接口代替第四章的接口就行了。 写第一、二、三章的主要目的是为了方便理解数据的发送和接收在LWIP协议栈中是如何进行处理的。这便于我们理解提取出来的接口。 LWIP是瑞典计算机科学院开发的一套用于嵌入式系统的开放源代码的轻量级的TCP/IP协议栈。传统的,或者说是典型的TCP/IP协议族的设计都是按照分层的思想来设计的。这样设计有个好处,就是每层相对于其他层独立,代码方便理解。缺点就是,每层之间进行数据交互的时候必须要进行复制,而数据的复制是很耗时的,这就降低了实时性。LWIP采用了一种不同的设计方式来实现TCP/IP协议族。LWIP各层之间没有明显的界限,各层之间都可以访问到共享在内存中的数据。因为各层都可以访问共享内存,所以这就避免了内存复制产生的性能损失。 但是并不是说LWIP就没有分层的概念了。只不过LWIP各层都是逻辑意义上的层。每个协议都以模块的形式被实现。而这些模块就共同组成了LWIP整体。下面一章将分析LWIP的源码,结合源码介绍这些模块。了解各个协议是怎么通过模块被实现的。其中这里最主要的是TCP协议模块的实现。TCP协议在LWIP协议栈中占得比例最大,有将近一半的代码是专门用来实现TCP协议的。所以重点会分析TCP协议。并且无线音频项目采用的也是TCP协议传输数据。 LWIP逻辑上被分为四个层:应用层,传输层,网络层和网络接口层。如下图1.1所示: 图1.1LWIP协议栈的分层模型 应用层主要是使用LWIP协议栈开发相应的网络通信程序。LWIP主要提供了三种接口供用户使用。三种接口分别为RAW API, Netconn API 和 BSD Socket AP。其中RAW API 主要是采用回调函数的方式来完成数据的发送和接收,RAW API 接口写的应用程序与 LWIP协议栈处在同一个进程(或者称任务)中。Netconn API 和 BSD Socket AP工作于多线程方式中,要使用者两种接口,必须有多任务的操作系统的支持。这次项目采用的接口是RAW API。关于RAW API接口如何写应用层程序,另写了一个专门的文档介绍。这里不列出。 传输层。我们最熟悉的TCP 协议,UDP协议,以及我们使用ping 命令时采用的ICMP协议都处在这一层。这一层提供了一些专门的接口,用于处理与应用层和网络层的数据传送(注明,这里说的数据传送并不是指数据的拷贝。事实上,LWIP协议栈使用的是内存共享技术,各层都能访问这段共享内存,各层传递的就是数据结构指针,所以LWIP协议栈降低了内存复制所产生的性能损失)。关于这层函数,会在下面进行具体说明。 网络层主要的协议是IP协议。这一层主要是对底层接收的数据包进行发送,转发,丢弃组合等功能。 网络接口层是和底层硬件驱动交互的层。我们所需要提取的网络接口就在这一层。 LWIP源码分析 LWIP协议栈的架构 LWIP协议栈源码的架构如下图2.1所示: 图2.1 LWIP协议栈源码架构 api目录:应用程序接口文件,包括netconn 和BSD 2种API。这个文件夹主要是为了方便应用程序编写而为应用层提供的API接口。 core 目录:ICMP,IP,TCP,UDP协议的实现文件,以及一些辅助函数,LWIP实现的核心代码。其中这个文件夹里面实现TCP协议的代码量几乎占了整个lwip协议栈的一半。重点会讨论TCP协议。在此也可以简单看出LWIP协议栈没有严格区分传输层和网络层,因为传输层的代码和网络层的代码放在一个文件夹里实现了。目录里还提供了RAW API接口的实现。RAW API 接口和上面两种接口一样,都是为了方便应用程序编写而为应用层提供的API接口。 include 目录:主要是LWIP协议栈使用的自定义的一些头文件。 netif 目录:这个目录里主要实现的是ARP协议。当然还有一

文档评论(0)

1亿VIP精品文档

相关文档