LWIP专区

格芯单片机LWIP协议栈笔记(4)---TCP/IP协议栈进程模型

发布日期:2011/12/30

    目前主流的TCP/IP协议栈进程模型有如下3种。

1.1 每层独立进程

    TCP/IP协议的每一层是一个单独进程,链路层是一个进程,IP层是一个进程,TCP层是一个进程。

这样做的好处是网络协议的每一层都非常清晰,代码的调试和理解都非常容易,但是最大的坏处是数据跨层传递时会引起上下午切换(context switch)。

    对于接受一个TCP segment要引起3context switch,从网卡驱动程序到链路层进程,从链路层进程到IP层进程,

    从IP层进程到TCP层进程,通常对于操作系统来说,任务切换是要浪费时间的,过频的context switch是不可取的。

 

1.2 系统内核实现TCP/IP协议栈

另外一种方式是TCP/IP协议栈在操作系统内核当中实现,应用程序通过操作系统的系统调用(system call)和协议栈来进行通讯,这样TCP/IP的协议就现定于特定的操作系统内核了,如windows就是这种方式。

 

1.3 TCP/IP协议栈独立进程

    LwIP则采取将所有协议驻留在同一个进程的方式,以便独立于操作系统内核之外。应用程序既可以驻留在LwIP的进程中,也可以使用一个单独的进程。

    应用程序与TCP/IP协议栈通讯可以采用两种方法:

    一种是函数调用,应用层程序就利用内部回调函数接口(RAW API)TCP/IP协议栈通讯。应用程序与TCP/IP协议栈处理在同一进程中实现。

    另一种是使用LWIP APITCP/IP协议栈在一个进程中实现,应用程序通过API函数接口在另一进程中实现。

    我们前面提到的BSD API,只是在LWIP API的基础上,按BSD API标准封装而已