由于Windows是一个强大的通用分时操作系统,能够提供完善的操 作系统接口.因此,多任务嵌入式操作系统完全可以在Windows平台上模拟.不过,这种模拟也只是近似的,毕竟对于多数嵌入式系统都是实时系统,而 Windows却是分时系统,无法保证其系统的实时性.

想要对配置双协议栈有所掌握,肯定是要了解TCP/IP协议栈的开发的。至于嵌入式TCP/IP协议栈的开发,考虑TCP/IP协议族的复杂性以及其协议栈庞大的代码量,试图完全从头到尾彻底的重新编写一套TCP/IP协议栈的代码是极为艰难的,需要大量的人力、物力和时间的投入.其实目前TCP/IP技术已经十分成熟,几乎所有的通用操作系统都提供TCP/IP协议栈用于网络支持,包括那些公开源码的操作系统.因此考虑移植源码公开的TCP/IP协议栈,同时根据需求对其进行适量的精简和改进.

目前,比较常见的源码公开的TCP/IP协议栈软件有:

1). BSD Net网络协议栈软件.这是由加利福利亚大学伯克利分校计算机系统研究小组发布的,世界上第一个被广泛应用TCP/IP软件版本就是伯克利于1983年发布的4.2BSD,有许多系统的TCP/IP协议栈实现都是以它的源代码为基础而开发的.目前其最新版本是1994年发布的4.4BSD-Lite2,又称为Net/3.

2). Linux的TCP/IP协议栈软件.作为一个遵循GUN公共许可协议,源码全部公开的自由操作系统软件,其TCP/IP协议栈部分源码是以BSD的网络协议栈为模型,支持BSD的Socket接口,但其内部代码是重新写的,与4.4BSD-Lite2并不雷同.

3). lwIP是一个比较小型的源码开放的TCP/IP协议栈软件,是由瑞典计算机科学研究院的Adam Dunkels教授编写.它只需要10K的RAM空间和40K的ROM存储空间,因此非常适合嵌入式系统里使用.

4). uIP则是一个超小型的TCP/IP协议栈,仅能提供ARP、SLIP、TCP、ICMP和IP这几种基本的协议.其所需资源非常的少,所以非常适合在8位和16位单片机上运行.

对于TCP/IP协议栈的选择主要根据用户本身的需求和所能提供的软硬件资源来确定.比如像BSD和Linux的TCP/IP协议栈属于通用的协议栈,支持协议比较齐全,但也需要耗用大量的ROM和RAM存储空间,对CPU的要求也比较高;而lwIP和uIP这类的协议栈是专门为嵌入式操作系统开发出来的,软件结构比较紧凑,对CPU和存储器需求不高,但其所支持的协议种类及功能也非常有限.

4 WinPcap工具包介绍

在Windows平台上仿真调试和运行TCP/IP协议栈,还需要考虑协议栈如何接收和发送数据报文的问题,这就需要使用WinPcap来实现.

WinPcapWindows Packet Capture)是Windows平台下一个公共的、免费的网络访问系统,能为Win32应用程序提供网络访问的能力.它提供以下四项主要功能:

1) 捕获原始数据报文,包括共享网络上各主机发送/接收和相互交换的数据包;

2) 在数据报文发送往应用程序之前,按照自定义的规则将某些特定的数据包过滤掉;

3) 在网络上发送原始的数据报文;

4) 收集网络通信过程中的统计信息;

WinPcap的主要功能在于独立于主机协议而发送和接收原始数据报文,能够监听共享网络上传送的数据包.因此,通过调用它提供的各种函数,可以实现在 Windows平台下将各类数据报文通过网络适配器发送到共享网络上去,同样也可以接收网络适配器上收到的各种原始的数据包.

要使用WinPcap,首先需要在Windows平台上安装WinPcap驱动软件,然后便可以在Win32的应用程序中通过包含packet32.h这 个头文件来使用由WinPcap的动态链接库packet32.dll或者静态链接库packet32.lib所提供的库函数来对网络适配器进行打开、设 置、关闭操作和通过网络适配器进行接收或者发送数据报文.


相关内容