资料目录
LWIP专区
格芯单片机LWIP协议栈笔记(4)---TCP/IP协议栈进程模型
发布日期:2011/12/30
目前主流的TCP/IP协议栈进程模型有如下3种。
TCP/IP协议的每一层是一个单独进程,链路层是一个进程,IP层是一个进程,TCP层是一个进程。
这样做的好处是网络协议的每一层都非常清晰,代码的调试和理解都非常容易,但是最大的坏处是数据跨层传递时会引起上下午切换(context switch)。
对于接受一个TCP segment要引起3此context switch,从网卡驱动程序到链路层进程,从链路层进程到IP层进程,
从IP层进程到TCP层进程,通常对于操作系统来说,任务切换是要浪费时间的,过频的context switch是不可取的。
另外一种方式是TCP/IP协议栈在操作系统内核当中实现,应用程序通过操作系统的系统调用(system call)和协议栈来进行通讯,这样TCP/IP的协议就现定于特定的操作系统内核了,如windows就是这种方式。
LwIP则采取将所有协议驻留在同一个进程的方式,以便独立于操作系统内核之外。应用程序既可以驻留在LwIP的进程中,也可以使用一个单独的进程。
应用程序与TCP/IP协议栈通讯可以采用两种方法:
一种是函数调用,应用层程序就利用内部回调函数接口(RAW API)与TCP/IP协议栈通讯。应用程序与TCP/IP协议栈处理在同一进程中实现。
另一种是使用LWIP API,TCP/IP协议栈在一个进程中实现,应用程序通过API函数接口在另一进程中实现。
我们前面提到的BSD API,只是在LWIP API的基础上,按BSD API标准封装而已