2.3 WSP Layer
WSP层在WTP之上,为WAP应用程序提供会话级的连接,处理客户端、服务器端数据的交互等功能。实际上,WAP在制定之初就以当时已非常流行的Internet/HTTP协议作为参考,因此WSP协议提供了HTTP/1.1的所有功能,包括CONNECT/GET/POST等命令,所不同的是WSP针对这些Header/Body进行了二进制编码,以减少数据包大小,换句话说,是实现了二进制版本的HTTP/1.1。此外,WSP还增加了一些无线应用的特殊功能,比如Push等。
2.3.1 WSP PDU通用字段
TID(部分类型没有) | PDU Type | (根据Type可变) |
TID:
PDU Type:8-bit unsigned integer
WSP层每个PDU都由一个TID字段和一个必需的Type字段构成,其后的内容根据不同的Type要求组成。
2.3.2 WSP PDU类型(常用)
▲
▲
▲
▲
▲
▲
▲
PDU Type对应的值列表如下:
类型名称 | 值 |
(保留) | 0x00 |
Connect | 0x01 |
ConnectReply | 0x02 |
Redirect | 0x03 |
Reply | 0x04 |
Disconnect | 0x05 |
Push | 0x06 |
Suspend | 0x08 |
Resume | 0x90 |
Get | 0x40 |
Post | 0x60 |
WSP PDU分析
▲
Name | Type | Source |
Version | 8bit ungisnged int | WSP Protocol version |
CapabilitiesLen | 变长unsigned int | Capabilities长度 |
HeadersLen | 变长unsigned int | Headers长度 |
Capabilities | Octets data | S-Connect Request Cap |
Headers | Octets data | S-Connect Client Headers |
▲
Name | Type | Source |
ServiceSessionId | 变长unsigned int | Session_ID 变量 |
CapabilitiesLen | 变长unsigned int | Capabilities长度 |
HeadersLen | 变长unsigned int | Headers长度 |
Capabilities | Octets data | S-Connect Request Cap |
Headers | Octets data | S-Connect Client Headers |
Name | Type | Source |
URILen | 变长unsigned int | Length of URI field |
URI | Octets data | URI内容 |
Headers | Octets data | |
▲
Name | Type | Source |
Status | 8bit ungisnged int | |
HeadersLen | 变长unsigned int | Content和Headers字段的长度 |
ContentType | Octets data | |
Headers | Octets data | |
Data | Octets data | |
▲
Name | Type | Source |
ServerSessionId | 变长 ungisnged int | Session_ID变量 |
2.3.4 WSP Header和内容编码
为了减少无线传输的数据通信量,WSP层传递的数据采取编码方式,把Header和Body内容都转换为二进制编码,通过二进制方式压缩数据包长度。
特别的,在Header部分,WSP定义了一系列二进制值对应表。请查阅WAP-WSP规范文档的附录A部分。
2.4 WSP层深入分析
◆
◆
◆
◆
2.5 移动梦网WAP网关分析
上述的流程和组包方式,我在free download的Kannel WAP网关中都通过了测试,使用比较顺利,但是目前通过公网能访问的WAP网站不多。
当连接移动梦网wap网关时,主要有以下差别的地方:
◆
◆