WAP协议解析
- 格式:docx
- 大小:1.42 MB
- 文档页数:29
WAP协议解析
WAP包括WAP1.X和WAP2.0两个版本,WAP2.0向下兼容WAP1.X。WAP2.0主要应用如下:
1、 WAP PUSH业务,这种业务可通过推送代理发送或“推送”给基于服务器应用的多种设备,这尤其适合股票价格变更等实时信息的传送;
2、 UAProf,UAProf是一种标准的手机终端能力报告机制。通过该机制,CP/SP可以了解到访问终端的物理特性(如屏幕尺寸、分辨率、多媒体支持程度等)和软件功能(如是否支持MMS、支持Java、支持WAP Push等),从而有针对性地返回恰当的内容,以真正体现个性化的服务;
3、 无线电话应用业务(WTA),它使得WAP可以很好地与目前电信网络中的各种先进电信业务相结合,如智能网(Intelligent Network)业务。通过使用浏览器,移动用户可以应用各种智能网业务而不需修改移动终端;
4、 端到端的安全业务,基于WAP2.0,可以开发移动电子商务和集团客户,如股票、期货、外汇等证券交易等;
5、 多媒体信息传送业务(MMS);
6、 下载业务,如Java游戏,MP3等业务;
7、 其它有线互联网业务,如网站访问等;
一、WAP 1.x
先介绍WAP 1.x协议,WAP 1.x的层次结构如下(与有线网络对比):
该协议在GPRS网络中的框架如下:
WDP层由UDP/IP代替,下层为GB协议,常用的UDP端口号分配如下:
端口号 用途
9200 WAP Connectionless Session Service
9201 WAP Session Service
9202 WAP Secure Connectionless Session Service
9203 WAP Secure Session Service
看了下四川的数据包,都为有连接无安全的会话服务,也就是端口号为9201的数据,我们目前也只分析9201的数据,其他数据暂不作解析。
1.1 WTP
WTP英文全称为Wireless Transaction Protocol,中文名称为无线事务协议,WTP的主要功能有:
提供了三种类别的服务(可靠性和结果消息的组合),这三种类别为:不可靠无结果、可靠无结果、可靠有结果,分别对应级别0、1、2。
通过重发和确认为上层提供可靠连接
可将多个PDU合并成一个SDU
提供事务取消(Abort)功能
允许异步事务请求
WTP有以下几种消息: Message/function Class 2 Class 1 Class 0
Invoke message X X X
Verification X X
Hold on acknowledgement X
Result message X
Last acknowledgement X X
具体PDU类型及代码如下:
PDU Type
PDU Code
* NOT ALLOWED * 0x00
Invoke 0x01
Result 0x02
Ack 0x03
Abort 0x04
Segmented Invoke 0x05
Segmented Result 0x06
Negative Ack 0x07
PDU包括头和数据,头包含固定部分和可变部分。每种消息的固定部分都不一样,可变部分是指是否包含TPI(Transport Information Item),以及包含多少个TPI。下面就各PDU类型和TPI进行简单介绍。
1.1.1 Invoke PDU
Invoke PDU相当于客户端给服务端的请求包,如页面请求包。
CON:Continue Flag,指示是否存在TPI;
PDU Type:PDU类型;
GTR和TTR:Group Trailer和Transmission Trailer标记,指示是否是最后一个分片包,组合如下:
RID:Re-Transmission Indicator,重传标识;
TID:Transaction Identifier,事务ID,在一次事务中,双向事务ID都是一样的;
Version:当前版本为0x00;
TIDNew:TIDNew Flag,指示本TID为最新的TID;
U/P:U/P Flag,指示是否需要服务端发送ack;
RES:Reserved,保留位;
TCL:Transaction CLASS,要求的服务类别,为0,1,2。
如:
1.1.2 Result PDU
Result PDU相当于服务端给客户端的返回包,如页面返回包。
如:
1.1.3 Acknowledgement PDU
类似于tcp的ack包。
Tve/Tok:TID Verify Flag / TID OK Flag,前者为服务端至客户端,后者为客户端至服务端。
如:
1.1.4 Abort PDU
类似于tcp的fin和rst包。
Abort Type:终止类型
Abort reason:终止原因
Provider abort reason
WSP User abort reason
如:
1.1.5 Segmented Invoke PDU
一个请求可能由多个包组成,除第一个包时Invoke类型之外,其余包则为本类型。
Packet Sequence Number:分片包序号。
没有找到此类包,因为普通请求其内容本身不长,不需要分包。
1.1.6 Segmented Result PDU
一个返回可能由多个包组成,除第一个包是Result类型之外,其余包则为本类型。
如:
1.1.7 Neganative Acknowledgement PDU
用于数据包丢失时,要求对方重传。
Number of Missing Packets:丢失的包个数;
Packet Sequence Number of Missing Pakcets:丢失的包序号,有可能多个。
1.1.8 TPI
TPI有两种格式:长格式和短格式。
CON:Continue Flag,指示是否存在下一个TPI;
TPI Identity:TPI类型
TPI Length:TPI长度;
TPI Data:TPI值。
如:
1.1.9 SDU
有可能多个PDU放在一起发送,组成一个SDU,如下所示:
没有这样的数据包,不清楚如何识别。
1.1.10 事务交互过程
1.1.10.1 Class 0 事务
1.1.10.2 Class 1 事务
1.1.10.3 Class 2 基本事务
1.1.10.4 Class 2 带延时确认事务
1.1.10.5 带TID检验事务
分为成功和失败两种:
成功
失败
1.1.10.6 带Invoke乱序事务
1.1.10.7 带分片和重组事务
1.1.10.8 带重传事务
有主动重传和被动重传两种。
主动重传
被动重传
1.2 WSP
WSP,无线会话层,位于WTP/WDP之上,类似于HTTP协议。主要功能如下:
维护客户端至服务器的会话连接,包括会话建立、挂起、恢复、断开
向上层提供两种会话服务的接口:基于WTP之上的面向连接的服务(可靠会话)、基于WDP之上的无连接服务(暂不作分析)
实现HTTP/1.1定义的全部功能
实现PUSH、能力协商、会话的挂起/恢复等新特性
WSP的PDU结构相对比较简单,由三部分组成,如下:
其中TID只有在基于WDP之上的无连接服务下才会使用,我们现在暂时不考虑这种情况。
PDU Type定义如下:
下面分别就这些类型进行说明:
1.2.1 Connect
Connect 类型的PDU用于会话开始之前与WAP网关建立连接,同时完成双方的能力协商,即后面会话的一些参数设定。Connect域的结构如下:
Version:wsp版本号,目前为1.0,也就是 0x10;
CapabilitiesLen:能力字段所占字节数;
HeadersLen:头信息所占长度;
Capabilities:能力字段,可以包含多个能力,每个能力都是一个结构,属于LKV类型结构,如下:
其Indentifier分配如下:
Headers:类似于HTTP的请求/响应头,头域也可以包含多个或没有,每个域都是一个结构,以0x00结束,最后一个域没有0x00结束符,如下:
头域名字分配如下:
Name Encoding Version Assigned Nuber
Accept 1.1 0x00
Accept-Charset1 1.1 0x01
Accept-Encoding1 1.1 0x02
Accept-Language 1.1 0x03
Accept-Ranges 1.1 0x04
Age 1.1 0x05
Allow 1.1 0x06
Authorization 1.1 0x07
Cache-Control1 1.1 0x08
Connection 1.1 0x09
Content-Base1 1.1 0x0A
Content-Encoding 1.1 0x0B
Content-Language 1.1 0x0C
Content-Length 1.1 0x0D
Content-Location 1.1 0x0E
Content-MD5 1.1 0x0F
Content-Range1 1.1 0x10
Content-Type 1.1 0x11
Date 1.1 0x12
Etag 1.1 0x13
Expires 1.1 0x14
From 1.1 0x15
Host 1.1 0x16
If-Modified-Since 1.1 0x17
If-Match 1.1 0x18
If-None-Match 1.1 0x19
If-Range 1.1 0x1A
If-Unmodified-Since 1.1 0x1B
Location 1.1 0x1C
Last-Modified 1.1 0x1D
Max-Forwards 1.1 0x1E
Pragma 1.1 0x1F
Proxy-Authenticate 1.1 0x20
Proxy-Authorization 1.1 0x21
Public 1.1 0x22
Range 1.1 0x23
Referer 1.1 0x24