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