VxD:从本地LAN接收和向本地LAN发送MAC帧(VxD是Windows 95/98下虚拟设备驱动程序);
LAN接收:去掉VxD传递的数据中的MAC帧控制信息,并根据目的IP地址决定是否将其转给IP处理模块;
LAN发送:根据IP模块转来的目的IP地址,查找对应的MAC地址,进而组成完整的MAC帧交由VxD发送到本地LAN;
IP处理模块:负责路由选择和其他IP层处理,并将LAN接收模块交来的IP数据报处理后交给Line发送模块,将Line接收模块交来的IP数据报交给本地LAN发送模块;
Line接收模块:把从数据链路接收的完整IP数据报交给IP处理模块;
Line发送模块:把从IP处理模块接收的IP数据报发送到数据链路上。
由上述功能可以看出,若把网关看作是一个双向系统,那么入口端负责IP数据报的过滤,出口端负责IP数据报的转发。连接认证模块负责在建立IP连接前两个半网关的认证。
管理模块:负责半网关的进程调度,并提供地址库的修改接口。
对网卡的操作通过调用VxD软件实现。
此外,半网关中附有一个地址库,存储本地LAN的IP地址和对应的MAC地址的信息,供LAN发送和接收模块查询或调用。
3 系统实现
3.1 软件结构
软件开发平台为Windows 95/98,开发软件为Microsoft Visual C++ 6.0。
Windows 95支持多线程运行,一个软件可以创建多个线程同时执行不同的功能。进程间的运行是互相独立的,有各自的堆栈。网关功能模块和串口通信模块是同时运行的。需要设计成两个单独的线程。考虑到串口通信模块中数据的收发也是同时进行的,因此将串口通信模块设计成收发两个进程。
根据上述设计思想,软件的整体框图如图4所示。
3.2 模块设计
3.2.1 认证模块设计
开机后首先进行连接认证。在实施认证时,网关软件以client和server的方式运行,每个半网关均工作于Client/Server 模式,即都包含client和server实体,任何一方都可以请求建立连接。当请求超时,请求方将退出请求等待状态,待对方请求时再建立通信连接。在认证通过前不启动软件的网关功能,认证通过后开放网关功能。
软件提供加密函数的接口,对本地输入的用户名和口令加密后传送。接收端提供认证函数的接口,返回认证结果。
3.2.2 数据帧的监听和发送