socket客户端编程(socket编程步骤 客户端和服务器端)

太平洋在线下载手机版 1 0

西电捷通互操作性技术研究

  摘要:在Linux系统中,欲实现WAPI客户端的功能,不但需要先将WAPI安全协议栈移植到系统中,还需要对系统原有的一个名叫wpa_supplicant(无线网络请求者程序,后文简称“请求者软件”)的应用程序进行适当修改。请求者软件是一款开源的无线局域网客户端侧接入管理软件,但是该软件没有实现WAPI功能,本文介绍了如何实现带WAPI功能的请求者软件,设计与实现兼顾了请求者软件原有结构的完整性,同时对程序升级有着充分的考量,当程序结构发生变化时,其已有的WAPI功能可以简单同步迁移到变化后的版本中去。

socket客户端编程(socket编程步骤 客户端和服务器端)-第1张图片-太平洋在线下载

  关键词:WAPI,AP(接入点),AS(鉴别服务器),西电捷通

  当前,全球无线局域网领域仅有两个关于安全方面的标准,分别是美国行业标准组织提出的IEEE 802.11i标准,以及中国提出的WAPI标准。WAPI是我国首个在计算机宽带无线网络通信领域自主创新并拥有知识产权的安全接入技术标准。

socket客户端编程(socket编程步骤 客户端和服务器端)-第2张图片-太平洋在线下载

  本文将介绍一种简单高效的方法,实现具备WAPI功能的请求者接入管理软件。

  1、请求者软件

  请求者软件是一款无线局域网客户端接入管理软件,可以在Linux、BSD、MacOS、Windows等不同的平台运行,可以运行在台式机、笔记本、嵌入式系统中。设计的目标是不依赖于具体的硬件驱动程序和操作系统。源代码是用c语言实现的,整个程序的框架结构,如图1所示。所有与硬件驱动程序相关功能,都定义在单独的文件中。请求者软件实现了一个统一的驱动程序应用程序编程接口,很好地实现了硬件驱动与软件分层,方便了跨平台移植。

  从通信层次上划分,请求者软件提供向上的控制接口control interface,用于与其它模块(如用户界面)进行通信,其它模块可以通过control interface来获取信息或下发命令。请求者软件通过socket通信机制实现下行接口,与内核进行通信,获取信息或下发命令。

图1 请求者软件框架结构图

  2、请求者软件+WAPI的设计

  请求者软件是一款开源代码的无线局域网客户端接入管理软件,但程序并没有实现WAPI功能,那么我们是否可以通过对请求者软件进行简单修改,便可使其具备WAPI功能呢?答案是肯定的,在尽量保持请求者软件原有架构情况下即可添加WAPI功能。

  根据请求者软件的框架结构特点,只需要在程序整个结构上添加WAPI状态机(WAPI state machine)和WAPI接入鉴别这两个模块,以及对一些程序进行微小的改动,便可以实现请求者软件带 WAPI功能。带WAPI功能的请求者软件框架结构如图2所示。

图2 带WAPI功能的请求者软件框架结构图

  红字部分就是需要添加的模块,这种设计保持了请求者软件原有框架结构,只是添加WAPI相关模块,就可使该软件具备WAPI功能。

  本文所实现的带WAPI功能的请求者软件,是在Linux系统下进行编码测试的。

  3、带 WAPI功能的请求者软件实现

  支持WAPI功能的请求者软件,按照图2框架结构图的设计,结构清晰,逻辑简单。从实现角度考量,要在请求者软件框架不做调整的基础之上,实现带 WAPI功能,在代码架构和工程方面需要添加WAPI状态机(WAPI state machine)和WAPI接入鉴别这两个模块。

  请求者软件是个开源的工程,它的程序设计框架很灵活,但是开源代码的结构有时候可能会发生结构性的改变。如果将WAPI功能直接添加到请求者软件中,势必造成耦合性太大,一旦新版请求者软件代码结构发生变化,需要再实现WAPI的功能时后,必然要做大量的工作。

  为了程序结构的简单,同时当请求者软件更新后,实现WAPI功能代价最小化,我们将整个WAPI机制用lib库来实现,这样一来当请求者软件更新时,本文实现的WAPI功能,可以花很小的代价移植到新版本的程序中。

  本设计实现为 请求者软件 + lib库形式,整个模块调用关系如图3所示:

图3 WAPI-请求者软件模块调用关系图

   libwapi_asue主要负责处理WAPI协议帧的解析与构造;WAPI预共享密钥模式下密钥的管理;WAPI证书模式下证书的管理。对于请求者软件,仅需要添加用户接口层WAPI接口,实现对WAPI的配置。

   libwapi_asue库的实现,使用了GNU weak属性,可以实现libwapi_asue库单独编译,不依赖于请求者软件。所谓weak属性就是将所有需要调用的请求者软件程序中的函数,在libwapi_ause中定义为weak属性函数,这种方法的优势在于:当系统中有请求者软件时,libwapi_asue就调用请求者软件的函数;如果没有就调用libwapi_asue中相应的weak属性函数。这种方法一方面解决了编译依赖的问题;另一方面,当请求者软件的框架结构有很大改动时,只需要改动请求者软件,提供WAPI调用的几个函数即可。

  4总结

  本文简要介绍了WAPI和请求者软件,讲解了如何实现WAPI功能的请求者软件。该设计与实现做到了请求者软件和WAPI的低耦合性,方便后续的移植,希望能给此方面的专业技术人员提供借鉴。

标签: socket客户端编程

抱歉,评论功能暂时关闭!