linux wap,在 Linux 上构建 WAP 网关(初级)

Webme09.cublog.cngoogle

在 Linux 上构建 WAP 网关(初级)

| 2005-01-27 14:09

Hardware13.jpg        实现移动服务的最热门技术是无线应用协议(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 系统上网关的构建。

网关将处理工作负载划分到下面两个位置:

信使单元(bearer box),它连接到 SMS(短消息服务)中心和 CSD(电路交换路数)路由器,为 wapbox 向它们提供一个统一的接口。信使单元通过实现 WAP 栈的 WDP(无线数据报协议,Wireless Datagram Protocol)层来完成这一工作。

wapbox,WAP 栈中更高的层位于这一单元。每个会话以及它们的事务都由同一个 wapbox 来处理。

信使单元自

CSD 路由器接收到 UDP(用户数据报协议,User Datagram Protocol)数据包,检查它们是不是 WAP

数据包,然后将它们路由到 WAP 单元。这个简单的设计使得信使单元对每个数据包的处理最少。信使单元也发送其他单元生成的 UDP

数据包,这多少增加了一些路由处理。 wapbox 实现了 WTP(无线传输协议,Wireless Transaction Protocol)和

WSP(无线会话协议,Wireless Session Protocol)层。它们从电话取得类似于 HTTP 的请求,并将真正的 HTTP

请求发送到内容服务器,压缩响应,然后将它们发回到终端。(会话被保持,以尽可能限制无线带宽。)

在构造网关之前,您必须有以下基本条件:

C 编译器(CC 或 GCC),开发库和相关工具

Gnome XML 库(也叫 gnome-xml 和 libxml),版本 2.2.5 或更新(请参见 中的链接)

GNU Make

Posix 线程库(pthread.h)

有两种途径可以构建网关。第一个途

径是获得源代码,自己编译并安装它。第二个途径是得到预编译的二进制 RPM(RedHat 包管理器, Package

Manager),然后安装。RPM 是一个设计用来编译和管理源代码和二进制软件包的程序。它也是可移植的,可以运行于不同的平台上。请参阅 参考资料 以获得更多关于 RPM 的资料。

首先,您需要通过 Kannel 的 Web 站点(请参阅 参考资料)下载 Kannel 的源代码以进行安装。下载完成后,在命令行中输入下面的命令来编译源代码:./configuremake

理想情况下,您将可以不出任何问题地编译代码。如果前面提到的库都存在,那么编译是很容易的。要安装网关,输入下面的命令: 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)来了解它们。

#The sample.conf file which is the core configuration file

#for running the WAP Gateway

#Start of Configuration File

group = core

admin-port = 13000

admin-port-ssl = false

admin-password = rose123

status-password = rose123

admin-deny-ip = "205.158.62.76"

admin-allow-ip = "*.*.*.*"

wapbox-port = 13002

box-deny-ip = "205.158.62.76"

box-allow-ip = "*.*.*.*"

udp-deny-ip = "205.158.62.76"

udp-allow-ip = "*.*.*.*"

wdp-interface-name = "*"

log-file = "my_kannel.log"

log-level = 1

#The wapbox group for WAP gateway configuration

group = wapbox

bearerbox-host = localhost

timer-freq = 1

log-file = "my_wap.log"

log-level = 1

#End of Configuration File

组中包含它所关联的组的 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-ipIP 列表这些列表可以用来防止来自特定 IP 地址的连接。

admin-allow-ipIP 列表可以用做通配符。

wapbox-port(c)端口号用于 wapbox 连接的端口。如果没有设置,则 Kannel 不能处理 WAP 传输。

box-deny-ipIP 列表这些列表可以用来防止来自特定 IP 地址对单元连接。

box-allow-ipIP 列表同 admin。它允许 IP。

udp-deny-ipIP 列表拒绝来自给定 IP 的 UDP 数据包。

udp-allow-ipIP 列表允许来自给定 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 number0 到 5含义与 bearerbox 中相同。

旦编译了 Kannel 并按您的规范编辑了配置文件,就可以进行最后一个步骤了。对于基本的工作,您可以拷贝并粘贴清单 1

中的文本,将其以任何名字保存,并用作您的配置文件。为了启动网关,您必须首先启动 bearerbox,然后再启动 wapbox。由于

bearerbox 是网关的基本部分,它必须要先启动。

通过下面的命令启动 bearerbox:./bearerbox -v 1。

-v 1 将日志级别设置为 INFO。使用这一选项,您将不会看到大量的调试输出(默认是 DEBUG ),同时 conf_file

是您的 Kannel 所使用的配置文件的名字。基本的发行包附带了样例配置文件 wapkannel.conf(在 /gw 子目录下),用于构建

WAP Kannel。您可以编辑那些配置文件以构建您自己专门的系统。在信使单元之后,必须启动 wapbox。通过输入下面的命令启动它:./wapbox -v 1。

要了解更多命令行选项,您必须回顾 Kannel 用户指南。

可以通过一个 HTTP 接口管理 Kannel。所有的命令都作为 HTTP 请求给出,所以可以方便地通过命令行给出它们,比如这一个:% lynx -dump

在上面的命令中,“12345”是配置文件中设置的 admin-port。对大部分命令来说,需要有一个 admin-password 作为参数,如这里所示。shutdown 用于关闭网关。其他可用的命令是:

Status,得到网关的当前状态。如果没有设置 status-password,那么不需要密码。

Suspend,设置 Kannel 为挂起状态。需要一个密码。

Resume,将 Kannel 的状态设置为运行。需要一个密码。

我将给出一些简单步骤,以通过移动电话模拟器来测试网关并访问来自因特网的 WML 页。您需要有两台机器,一台运行 Windows® 操作系统,另一台是 Linux 网关,最好用局域网连接起来。Linux 机器必须连接到因特网上,不管是直接的还是间接的。

您可以使用 Nokia 7210 Content Authoring SDK(请参阅 ),它可以用于 Windows 系统。

将它安装到 Window 系统中。

做一些小小的配置,并将网关地址设置为运行着网关的 Linux 机器的 IP 地址。

现在在模拟器中输入提供 WML 页服务的 Web 站点地址,就大功告成了!

您一定能通过模拟器访问网页并进行导航。

这个项目描述了构建 WAP 网关最便宜且最简单的方法——可以在任意范围内定制。

浏览 Kannel 的非盈利站点 以获得关于开放源代码 WAP 网关的所有资料。

通读 RPM 资料网页 以深入了解 RedHat 包管理器。

RPM HOWTO 提供了更多关于 RPM 的资料。

在 XMLSoft 站点 您可以找到 Gnome XML 库。

在 Linux 技术专区 可以找到更多为 Linux 开发者准备的参考资料。

在 developerWorks 无线专区 可以获得更多关于无线技术的思想和专门技术。

访问 Wap 论坛 以获得关于 WAP 技术的所有细节。

关于作者

作者是 ConvergeLabs 的一位软件工程师,多年来一直致力于 Linux 工作。他的主要兴趣在于 C、无线和 Linux。可以通过 manasb@convergelabs.com 与他联系。

此文档转载自IBM developerWorks,版权归IBM developerWorks所有。Webme09.cublog.cngoogle

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值