全部博文(408)
分类: LINUX
2006-07-13 12:57:43
实现移动服务的最热门技术是无线应用协议(Wireless Application Protocol,WAP)。用于 WAP 的开放源代码网关执行 Web 服务器与移动电话之间的协议转换,本文对它的优势进行了讨论。
WAP
网关的工作原理是,通过最优化的用于无线空中下载(wireless-over-the-air)的标记语言、脚本语言和传输协议,使电话成为一个简单的
Web 浏览器。它使用 WAP 协议栈与电话交流,并将它接收到的请求转化为普通的 HTTP。这样,内容提供者可以可以使用任何 HTTP
服务器并利用现有的关于 HTTP 服务实现与管理的知识。
除了协议的转换,网关还将 WML(无线标记语言,Wireless Markup Language)页压缩为更紧凑的格式,这样就节省了空中的带宽,并进一步地减少了电话处理的需求。它还将 WMLScript 程序编译为字节代码格式。
市 场上有多种可用的商用 WAP 网关,价格昂贵。另一方面,Kannel 是一个开放源代码网关;您不需要为它付费,您可以自行编辑源代码,您还可以构造您自己的定制网关。由于 Kannel 是在 Linux 系统(RedHat 和 Debian)上开发,所以它可以平滑地移植到其他类 UNIX 操作系统。不过,在本文中,我只是展示了在这两种 Linux 系统上网关的构建。
网关将处理工作负载划分到下面两个位置:
信使单元自
CSD 路由器接收到 UDP(用户数据报协议,User Datagram Protocol)数据包,检查它们是不是 WAP
数据包,然后将它们路由到 WAP 单元。这个简单的设计使得信使单元对每个数据包的处理最少。信使单元也发送其他单元生成的 UDP
数据包,这多少增加了一些路由处理。 wapbox 实现了 WTP(无线传输协议,Wireless Transaction Protocol)和
WSP(无线会话协议,Wireless Session Protocol)层。它们从电话取得类似于 HTTP 的请求,并将真正的 HTTP
请求发送到内容服务器,压缩响应,然后将它们发回到终端。(会话被保持,以尽可能限制无线带宽。)
在构造网关之前,您必须有以下基本条件:
有两种途径可以构建网关。第一个途
径是获得源代码,自己编译并安装它。第二个途径是得到预编译的二进制 RPM(RedHat 包管理器, Package
Manager),然后安装。RPM 是一个设计用来编译和管理源代码和二进制软件包的程序。它也是可移植的,可以运行于不同的平台上。请参阅 参考资料 以获得更多关于 RPM 的资料。
首先,您需要通过 Kannel 的 Web 站点(请参阅 参考资料)下载 Kannel 的源代码以进行安装。下载完成后,在命令行中输入下面的命令来编译源代码:
./configure
make
理想情况下,您将可以不出任何问题地编译代码。如果前面提到的库都存在,那么编译是很容易的。要安装网关,输入下面的命令: make bindir=/usr/local/bin install
。
您可以将 /usr/local/bin 目录替换为网关将要安装到的任何路径。网关现在已经安装到了您的系统上。可执行文件现在可以在 /gw 目录下找到,名为 bearerbox、wapbox。
通过输入下面的命令来检查您的系统中是否已经安装了 libxml2 XML 库: rpm -q libxml2。
这个 XML 库是安装和编译网关所需要的。从网站上下载 Kannel 的二进制 RPM 文件。以 root 身体登录,输入下面的命令来进行安装。如果您有足够的权限,那么可能不需要进入超级用户模式。
rpm -ihv kannel_VERSION.i386.rpm
这样完成了安装。_VERSION
属性是 Kannel 二进制的版本数。
现在来研究使用一个支持 WAP 的移动电话模拟器来使用和测试网关的基本步骤。本质上讲,您将涉及到 bearerbox 和 wapbox(您刚创建的可执行文件)。
bearerbox 和 wapbox 是网关的主要工作模块,在配置网关之前必须得到配置。这两个模块由一个配置文件控制,其中有 wapbox 组和 bearerbox 组。
配置文件由成组的配置变量构成。组由空行隔开,每个变量在自己的行中定义(Kannel 配置中的每个组由组变量标识)。以井号(#)开头的行是注释,应该被忽略。
一个变量定义中有变量的名称、等号(=)和变量的值。变量名中可以有除了空格和等号以外的任何字符。变量的值是一个字符串,可以有引号,也可以没有引号。如果变量以空格开头或结尾,或者包含特殊字符,则需要使用引号。普通的 C 转义符在引号内有效。
我引用了一个用于这个项目的配置文件的例子;它是网关运行所需要的基本文件。不过,还有一系列其他变量可以用来控制网关。您可以参考 Kannel 用户指南(User Guide)来了解它们。
|
组中包含它所关联的组的 ID。如果 ID 是 core,则它是 bearbox 的配置;另外,wapbox ID 是代表 wapbox 配置。 admin-port
标识符指定了 HTTP 管理通过哪个端口完成。bearerbox 和 wapbox 组的其他各个属性的描述见表 2 和表 3。必选的域由 m 来表示,o 表示是可选的域,c 表示是有条件的域。
表 1. bearerbox 的配置文件属性
变量 | 值 | 描述 |
group(m) | core | 这是一个必选变量。 |
admin-port(m) | 端口号(port-number) | bearerbox 侦听 HTTP 管理命令的端口号。它可以是高于 1023 的任意端口。 |
admin-port-ssl(o) | bool | 如果设置为真,那么默认的不安全的普通 HTTP 服务器就会由一个启用 SSL 的管理 HTTP 服务器所取代。默认情况下是'no'。 |
admin-password(m) | 字符串 | HTTP 管理命令的密码。 |
status-password | 字符串 | 请求 Kannel 状态的密码。如果没有设置,那么不需要密码;如果设置了,可以使用这个密码或者 admin-password。 |
admin-deny-ip | IP 列表 | 这些列表可以用来防止来自特定 IP 地址的连接。 |
admin-allow-ip | IP 列表 | 可以用做通配符。 |
wapbox-port(c) | 端口号 | 用于 wapbox 连接的端口。如果没有设置,则 Kannel 不能处理 WAP 传输。 |
box-deny-ip | IP 列表 | 这些列表可以用来防止来自特定 IP 地址对单元连接。 |
box-allow-ip | IP 列表 | 同 admin。它允许 IP。 |
udp-deny-ip | IP 列表 | 拒绝来自给定 IP 的 UDP 数据包。 |
udp-allow-ip | IP 列表 | 允许来自给定 IP 的 UDP 数据包。 |
wdp-interface-name(c) | IP 或者 * | 如果设置了这个参数,Kannel 就会侦听限于给定 IP 的来到 9200 到 9208 端口的 WAP UDP 数据包。如果不需要具体的 IP,可以只用一个星号(*)。 |
log-file | 文件名 | 记录日志的文件。这是对标准输出和命令行定义的日志文件的补充。core 组中的 log-file 只由 bearerbox 使用。 |
log-level | 数字 0 到 5 | 记入日志的 logfile 事件的最小限度的级别。0 代表调度,1 代表信息,2 代表警告,3 代表错误,4 代表重大问题。 |
表 2. wapbox 的配置文件属性
变量 | 值 | 描述 |
group(m) | wapbox | 这是一个强制变量。 |
bearerbox-host(m) | 主机名 | 安置 bearerbox 的机器。 |
timer-freq | 秒值 | 计时器的较验频率。默认为 1。 |
log-file | 文件名 | 同 bearerbox 的“core”组中同名属性。 |
log-level number | 0 到 5 | 含义与 bearerbox 中相同。 |
一
旦编译了 Kannel 并按您的规范编辑了配置文件,就可以进行最后一个步骤了。对于基本的工作,您可以拷贝并粘贴清单 1
中的文本,将其以任何名字保存,并用作您的配置文件。为了启动网关,您必须首先启动 bearerbox,然后再启动 wapbox。由于
bearerbox 是网关的基本部分,它必须要先启动。
通过下面的命令启动 bearerbox:./bearerbox -v 1
。
-v 1
将日志级别设置为 INFO。使用这一选项,您将不会看到大量的调试输出(默认是 DEBUG ./wapbox -v 1
。
要了解更多命令行选项,您必须回顾 Kannel 用户指南。
可以通过一个 HTTP 接口管理 Kannel。所有的命令都作为 HTTP 请求给出,所以可以方便地通过命令行给出它们,比如这一个:
% lynx -dump
在上面的命令中,“12345”是配置文件中设置的 admin-port。对大部分命令来说,需要有一个 admin-password
作为参数,如这里所示。shutdown 用于关闭网关。其他可用的命令是:
status-password
,那么不需要密码。
我将给出一些简单步骤,以通过移动电话模拟器来测试网关并访问来自因特网的 WML 页。您需要有两台机器,一台运行 Windows® 操作系统,另一台是 Linux 网关,最好用局域网连接起来。Linux 机器必须连接到因特网上,不管是直接的还是间接的。
您一定能通过模拟器访问网页并进行导航。
这个项目描述了构建 WAP 网关最便宜且最简单的方法——可以在任意范围内定制。
关于作者
作者是 ConvergeLabs 的一位软件工程师,多年来一直致力于 Linux 工作。他的主要兴趣在于 C、无线和 Linux。可以通过 manasb@convergelabs.com 与他联系。
此文档转载自IBM developerWorks,版权归IBM developerWorks所有。
google