LwIP源码分析 - 1
1.tcpip一般的实现方式有:
每一层一个进程,网络接口层,ip层,tcp层,应用程序层,这个方法的好处是各层之间结构清晰明了,容易阅读和调试,但是这种分层思想带来的通病就是效率低下,如果按照这种实现方式即上层应用接受一个数据包,要通过网络接口层进程->ip层进程->tcp层进程->应用程序层进程,这种效率是不能接受的。
Tcpip协议栈处于内核态,属于操作系统内核的一部分,同属于内核进程,应用程序通过系统调用来和协议层通信,这样的好处就是协议层之间不需要耗时的频繁的协议间进程切换,但是这种方式只是在一些比较高级的操作系统中实现(至少要到虚拟内存管理mmu),比如windowslinux就是采用这种方式的。
lwip采用了另外一种方式,它也是将协议层全部在一个进程中实现的,应用程序可以在协议层进程中实现(即利用lwip自己提供的一套内部回调函数来通信)也可以通过另外一个进程实现,如果应用程序另起一个进程的话则需要通过操作系统提供的进程间通信的机制(管道,邮
箱等)来实现交互。这种方式就带有相当的灵活性,而且由于对应用程序的进程没有特殊限制,一般的操作系统都能支持。
tcpip协议栈中的协议主要定义
下载 (46.75 KB)
2011-6-16 15:29
下载 (34.51 KB)
2011-6-16 15:30
整个学习的过程也打算按照这种流程来学习,先从底层看起(这部分也是我最熟悉的),依次从network inte**ce layer -> internetwork layer -> transport layer -> application layer(这也是按照tcpip的经典四层分法的)。
首先来看网络接口层:
这一层的主要文件位于/src/netif目录,主要是网络设备驱动文件(一个skeleton程序),一个loopback文件(非常简单),arp模块,ppp协议栈。核心的netif的通用程序在/src/core目录下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。