GSM 上的 Linux GPRS 和数据
GPRS 是一个用于通过 GSM 传输数据的数据分组服务,是一种卓越的数字蜂窝标准。尽管 GSM 上的数据是线路交换的并且不管怎样都占用一个通道,但是 GPRS 上的数据是一直连接的(always-on)、分组交换(packet-switched)的数据流,用户根据使用付费。GSM 的传输速度一般是 9.6 kbps,而 GPRS 能够运行的速度为 56 kbps 到 170 kbps。
GPRS 和 GSM 芯片通常有一个到系统的 UART 接口。对于内置 GSM/GPRS 支持的母板(例如,一个带有连接到 UART 通道的 Siemen MC-45 模块的母板),传统的串行驱动程序就能驱动这个链接。考虑 PCMCIA/CF 的形成因素(例如一张可选 GPRS 卡),serial_cs(是用于访问 PCMCIA 串行设备的普通卡服务驱动程序)能够允许其他操作系统把此卡当作一个串行设备。第一个未使用的串行设备(/dev/ttySx)被分配给此卡,然后此卡就可以被当成串行设备访问。serial_cs 也可以通过全球定位系统 (GPS) PCMCIA 和 CF 卡模拟串行端口。针对 USB GPRS 调制解调器而言,USB-to-serial 转换器一般 USB 端口转换为虚拟串行端口,因此系统其他部分就会将它看作串行设备。
GPRS 网络使用 GGSN(GPRS 网关支持节点) 连接到一个外部网络(例如 Internet)。GPRS 设备类似于拥有扩展 AT 命令集的调制解调器,在进入数据模式之前必须使用 AT 命令定义一个上下文。上下文字符串看起来类似于清单 3 中给出的示例。
清单 3. 上下文字符串
'AT+CGDCONT=1,"IP","internet.voicestream.com","0.0.0.0",0,0'
|
在这个示例中,1 代表上下文编号,IP 是数据分组类型,internet.voicestream.com 是接入点名称(APN) 字符串,0.0.0.0 意味着服务提供者选择 IP 地址,其他参数与数据和报头压缩有关。APN 字符串取决于服务提供者。一般不需要用户名和口令。
PPP 允许网络协议(比如 TCP/IP)在串行链路上运行。在无线网络的上下文中,PPP 可以使 TCP/IP 运行于 GPRS 上,数据通过 GSM、Bluetooth RFCOMM 以及 IrDa COMM 进行传输。清单 4 给出了一种调用 PPP 后台进程 pppd 的公共语法。
清单 4. 调用 PPP 后台进程 pppd 的公共语法
pppd ttySx call connection-script
|
在这个示例中,ttySx 是物理或虚拟的串行设备(PPP 运行其上),connection-script 是 /etc/ppp/peers/ 目录中的一个文件,这个目录包含在 pppd 和服务提供者之间交换的用于建立链接的 AT 命令序列。建立链接并完成身份验证以后,PPP 将启动网络控制协议(Network Control Protocol,NCP)。IPCP (Internet Protocol Control Protocol,Internet 协议控制协议) 是用于运行 IP 的 NCP。一旦 IPCP 成功通过 IP 地址,PPP 就开始与 TCP/IP 栈交互。
清单 5 给出了用于连接到 GPRS 服务提供者的 PPP 链接脚本示例,而清单 6 给出的是用于到 GSM 服务提供者的数据连接的连接脚本示例。
清单 5. 针对 GPRS 的 pppd 链接脚本示例(/etc/ppp/peer/gprs-script)
|