1. 简单数据类型.
________________ ____________
dataType | defination
----------- |-----------------
bit | 一位数据
octer | 八位opaque数据
unit8 | 八位unsinged整数
unit16 | 16位unsinged整数
unit32 | 32位unsinged整数
unitvar | 可变长度的unsinged整数
2. 协议数据单元的结构
2.1
下面的协议结构适合于大部分的PDU.
________________ __________________
______
| TID | TYPE | Type-Specific Contents |
----------------------------------------
PDU数据都以一个"事务标识"和一个" 类型标识"作为开头的.
名称 类型 描述
-----------------------------------------------------------
TID unit8 S-Unit-MethodInvoke.req::Transaction Id or
S-Unit-MethodResult.req::Transaction Id or
S-Unit-Push.req::Push Id
---------------------------------------------------
TYPE unit8 PDU type
------------------------------------------------------
TID 是用来在面向无连接的会话服务中把请求与响应联系起来. TID这一项是否需要存在是有
条件 的. 它必须包含在面向无连接的 wsp pdu 中, 但是不能包含在面向连接的 pdu中.
在面向无连接的 wsp中, TID 将作为 "Transaction Id"或者"push ID" 参数出现.
TYPE 是用来定义PDU的类型和功能的,其值在"表34"中定义.
2.2.1
Connect : Connect PDU 在会话开始的时候发送
Name Type Source
Version uint8 WSP protocol version
CapabilitiesLen uintvar Length of the Capabilities field
HeadersLen uintvar Length of the Headers field
Capabilities CapabilitiesLen S-Connect.req::Requested Capabilities
octets
Headers HeadersLen S-Connect.req::Client Headers
octets
version 属性表明了wsp协议的版本, 它决定了这以后所有pdu单元的格式. 本协版本使用的
是1.0版本, 0x10 .
capabilities 属性包含了发送者请求的属性设置, 每一个属性都有一个属性参数与之对应.
更多的信息请参照 8.3中的属性编码.
headers 属性包含了从客户端发送到服务器来申请整个会话的头文件
2.2.2
ConnectReply: ConnectReply PDU 用来响应Connect PDU.
Name Type Source
ServerSessionId Uintvar Session_ID variable
CapabilitiesLen Uintvar Length of Capabilities field
HeadersLen Uintvar Length of the Headers field
Capabilities CapabilitiesLen S-Connect.res::Negotiated Capabilities
octets
Headers HeadersLen S-Connect.res::Server Headers
octets
ServerSessionId 包含了服务会话标识符,他用来鉴别紧接而来的用来管理会话的pdu单元.
简单的说,如果客户机想要通过底层协议继续这个会话,就必须用到serverSessionID
2.2.3
Redirect: 当连接被拒绝,返回的响应是Redirect PDU. 当服务器地址改变时,它会被用到.
Name Type Source
Flags uint8 S-Disconnect.req::Redirect Security
and S-Disconnect.req::Reason Code
Redirect multiple octets S-Disconnect.req::Redirect Addresses
Addresses
flags:最高位置一时,客户机应该使用redirect Address与服务器建立和继续所有的会话,否则
在当前会话成功建立之前,不使用redirectAddress建立会话.如果第四位置一,客户机可
以在向新的服务器地址发送会话请求的同时使用当前的安全会话.
RedirectAddresses: 包含了一个或者多个新的服务器地址.后继的connectPDUs应该被送往这些
地址.以取代发送RedirectPDU的服务器. 重定向地址的长度由底层协议发送的SDU报告来
确定.每一个重定向地址包含如下的编码格式
Name Type Purpose
Bearer Type 1 bit Flag indicating inclusion of Bearer Type field
Included
PortNumber 1 bit Flag indicating inclusion of PortNumber field
Included
Address Len 6 bits Length of the Address field
BearerType uint8 Type of bearer network to use
PortNumber uint16 Port number to use
Address AddressLen Bearer address to use
octets
BearerTypeIncluded 和 PortNumberIncluded 分别指示BearerType和PortNumber域是否存在.
若会话使用了相同的BearerType和PortNumber,则BearerType和PortNumber域可以省略.
BearerType:指明了传输使用的bearer类型,其编码值在W**协议中定义.
*ortNumber:包含了目的地的端口号.如果重定向的端口号与ConnectPDU使用的端口号不同,则
必须使用网络动态或者静态的端口号(49152-65535).客户机不能改变由重定向引起的协议
层的配置(例如:客户机不能停止使用由重定向引发的安全层).如果端口号改变,Redire-
ct::Flages的最高位必须置0.
Address:包含了使用的bearer地址. bearerType也暗示了address域中的地址编码格式.编码应
该使用合适的bearer规范中定义的本地地址传送格式.如果这种格式使用的时bit数.而不
是八位二进制编码的组合,则这个地址应该是big-endian multi-octet整数.
(the necessary number of zero fill bits shall be included in the most signif-
ican octet so that the fill bits occupy the most significant bits. The used
bearer address formats are defined in [WDP] together with the bearer type
codes)由于不确定翻译的是否准确,故写出原文,在我的学习笔记中,这种 情况还会出现
并且不再进行说明.以下是此文翻译:
零作为必要的填充位,应该被包含在大多数重要的八位数组中,因此,填充位占用了大多数的
重要位. 使用的bearer地址格式在WDP中与bearerType一起被定义.
2.2.4
Disconnect:用来结束一个会话.
Name Type Source
ServerSessionId uintvar Session_ID variable
ServerSessionId:包含了结束会话的服务器标识.
2.2.5
Reply:The Reply PDU is used by the session creation facility, and it is defined in
section 2.3.3, “Reply”, below.
ReplyPDU 在会话建立中使用并且在下面的2.3.3中定义.
2.3 Method Invocation Facility
有两个PDU单元用于服务器的方法调用, Get 和 Post, 取决于所需的参数
http/1.1中定义的方法被指派给特殊的PDU类型编号. 没有在http/1.1中定义的PDU类型编号
在性能交流会期间被确立下来. 使用Get方法或是Post方法取决于这个方法是否包含请求的内容.
Get方法使用的PDU编码范围是0x40-0x5F,Post方法使用的PDU编码范围是0x60-0x7F.
2.3.1 Get
Get 方法类似于http/1.1中的 1.1 GET, OPTIONS, HEAD, DELETE and TRACE 方法, 是一种不包
含请求内容的一种扩展方法.
Name Type Source
URILen uintvar Length of the URI field
URI URILen S-MethodInvoke.req::Request URI or
octets S-Unit-MethodInvoke.req::Request URI
Headers multiple S-MethodInvoke.req::Request Headers or
octets S-Unit-MethodInvoke.req::Request Headers
url域包含了URL, 若url是普通的以空字符作为结束符的字符串,则执行时须去掉空字符.
headers域包含了所有的请求的头信息. headers的长度取决于作为底层传输提供或者报告的
SDU size. Headers域紧随着URL域并且结束于SDU的末尾.
2.3.2 Post
Post 方法类似于http/1.1中的POST和PUT方法,是一种包含请求内容的扩展方法.
Name Type Source
UriLen uintvar Length of the URI field
HeadersLen uintvar Length of the ContentType and Headers fields
combined
Uri UriLen S-MethodInvoke.req::Request URI or
octets S-Unit-MethodInvoke.req::Request URI
ContentType multiple S-MethodInvoke.req::Request Headers or
octets S-Unit-MethodInvoke.req::Request Headers
Headers octets S-MethodInvoke.req::Request Headers or
S-Unit-MethodInvoke.req::Request Headers
Data multiple S-MethodInvoke.req::Request Body or
octets S-Unit-MethodInvoke.req::Request Body
ContentType:包含了内容的数据类型,其值与下面章节中4.2.2中的定义一致.
Data:包含了请求的数据.数据的长度取决于SDU size. Data紧随在herders之后并结束于SDU的
末尾.
2.3.3 Reply
Reply 是一种从服务器返回的请求响应, 用在S-Connect中指明会话中出现的错误.
Staus:包含了尝试和满足需求的结果代码. staus编码已经由http/1.1中定义并且在表36中描述.
其他域含义同其他.
________________
dataType | defination
----------- |-----------------
bit | 一位数据
octer | 八位opaque数据
unit8 | 八位unsinged整数
unit16 | 16位unsinged整数
unit32 | 32位unsinged整数
unitvar | 可变长度的unsinged整数
2. 协议数据单元的结构
2.1
下面的协议结构适合于大部分的PDU.
________________
| TID | TYPE | Type-Specific Contents |
----------------------------------------
PDU数据都以一个"事务标识"和一个" 类型标识"作为开头的.
名称 类型 描述
-----------------------------------------------------------
TID unit8 S-Unit-MethodInvoke.req::Transaction Id or
S-Unit-MethodResult.req::Transaction Id or
S-Unit-Push.req::Push Id
---------------------------------------------------
TYPE unit8 PDU type
------------------------------------------------------
TID 是用来在面向无连接的会话服务中把请求与响应联系起来. TID这一项是否需要存在是有
条件 的. 它必须包含在面向无连接的 wsp pdu 中, 但是不能包含在面向连接的 pdu中.
在面向无连接的 wsp中, TID 将作为 "Transaction Id"或者"push ID" 参数出现.
TYPE 是用来定义PDU的类型和功能的,其值在"表34"中定义.
2.2.1
Connect : Connect PDU 在会话开始的时候发送
Name Type Source
Version uint8 WSP protocol version
CapabilitiesLen uintvar Length of the Capabilities field
HeadersLen uintvar Length of the Headers field
Capabilities CapabilitiesLen S-Connect.req::Requested Capabilities
octets
Headers HeadersLen S-Connect.req::Client Headers
octets
version 属性表明了wsp协议的版本, 它决定了这以后所有pdu单元的格式. 本协版本使用的
是1.0版本, 0x10 .
capabilities 属性包含了发送者请求的属性设置, 每一个属性都有一个属性参数与之对应.
更多的信息请参照 8.3中的属性编码.
headers 属性包含了从客户端发送到服务器来申请整个会话的头文件
2.2.2
ConnectReply: ConnectReply PDU 用来响应Connect PDU.
Name Type Source
ServerSessionId Uintvar Session_ID variable
CapabilitiesLen Uintvar Length of Capabilities field
HeadersLen Uintvar Length of the Headers field
Capabilities CapabilitiesLen S-Connect.res::Negotiated Capabilities
octets
Headers HeadersLen S-Connect.res::Server Headers
octets
ServerSessionId 包含了服务会话标识符,他用来鉴别紧接而来的用来管理会话的pdu单元.
简单的说,如果客户机想要通过底层协议继续这个会话,就必须用到serverSessionID
2.2.3
Redirect: 当连接被拒绝,返回的响应是Redirect PDU. 当服务器地址改变时,它会被用到.
Name Type Source
Flags uint8 S-Disconnect.req::Redirect Security
and S-Disconnect.req::Reason Code
Redirect multiple octets S-Disconnect.req::Redirect Addresses
Addresses
flags:最高位置一时,客户机应该使用redirect Address与服务器建立和继续所有的会话,否则
在当前会话成功建立之前,不使用redirectAddress建立会话.如果第四位置一,客户机可
以在向新的服务器地址发送会话请求的同时使用当前的安全会话.
RedirectAddresses: 包含了一个或者多个新的服务器地址.后继的connectPDUs应该被送往这些
地址.以取代发送RedirectPDU的服务器. 重定向地址的长度由底层协议发送的SDU报告来
确定.每一个重定向地址包含如下的编码格式
Name Type Purpose
Bearer Type 1 bit Flag indicating inclusion of Bearer Type field
Included
PortNumber 1 bit Flag indicating inclusion of PortNumber field
Included
Address Len 6 bits Length of the Address field
BearerType uint8 Type of bearer network to use
PortNumber uint16 Port number to use
Address AddressLen Bearer address to use
octets
BearerTypeIncluded 和 PortNumberIncluded 分别指示BearerType和PortNumber域是否存在.
若会话使用了相同的BearerType和PortNumber,则BearerType和PortNumber域可以省略.
BearerType:指明了传输使用的bearer类型,其编码值在W**协议中定义.
*ortNumber:包含了目的地的端口号.如果重定向的端口号与ConnectPDU使用的端口号不同,则
必须使用网络动态或者静态的端口号(49152-65535).客户机不能改变由重定向引起的协议
层的配置(例如:客户机不能停止使用由重定向引发的安全层).如果端口号改变,Redire-
ct::Flages的最高位必须置0.
Address:包含了使用的bearer地址. bearerType也暗示了address域中的地址编码格式.编码应
该使用合适的bearer规范中定义的本地地址传送格式.如果这种格式使用的时bit数.而不
是八位二进制编码的组合,则这个地址应该是big-endian multi-octet整数.
(the necessary number of zero fill bits shall be included in the most signif-
ican octet so that the fill bits occupy the most significant bits. The used
bearer address formats are defined in [WDP] together with the bearer type
codes)由于不确定翻译的是否准确,故写出原文,在我的学习笔记中,这种 情况还会出现
并且不再进行说明.以下是此文翻译:
零作为必要的填充位,应该被包含在大多数重要的八位数组中,因此,填充位占用了大多数的
重要位. 使用的bearer地址格式在WDP中与bearerType一起被定义.
2.2.4
Disconnect:用来结束一个会话.
Name Type Source
ServerSessionId uintvar Session_ID variable
ServerSessionId:包含了结束会话的服务器标识.
2.2.5
Reply:The Reply PDU is used by the session creation facility, and it is defined in
section 2.3.3, “Reply”, below.
ReplyPDU 在会话建立中使用并且在下面的2.3.3中定义.
2.3 Method Invocation Facility
有两个PDU单元用于服务器的方法调用, Get 和 Post, 取决于所需的参数
http/1.1中定义的方法被指派给特殊的PDU类型编号. 没有在http/1.1中定义的PDU类型编号
在性能交流会期间被确立下来. 使用Get方法或是Post方法取决于这个方法是否包含请求的内容.
Get方法使用的PDU编码范围是0x40-0x5F,Post方法使用的PDU编码范围是0x60-0x7F.
2.3.1 Get
Get 方法类似于http/1.1中的 1.1 GET, OPTIONS, HEAD, DELETE and TRACE 方法, 是一种不包
含请求内容的一种扩展方法.
Name Type Source
URILen uintvar Length of the URI field
URI URILen S-MethodInvoke.req::Request URI or
octets S-Unit-MethodInvoke.req::Request URI
Headers multiple S-MethodInvoke.req::Request Headers or
octets S-Unit-MethodInvoke.req::Request Headers
url域包含了URL, 若url是普通的以空字符作为结束符的字符串,则执行时须去掉空字符.
headers域包含了所有的请求的头信息. headers的长度取决于作为底层传输提供或者报告的
SDU size. Headers域紧随着URL域并且结束于SDU的末尾.
2.3.2 Post
Post 方法类似于http/1.1中的POST和PUT方法,是一种包含请求内容的扩展方法.
Name Type Source
UriLen uintvar Length of the URI field
HeadersLen uintvar Length of the ContentType and Headers fields
combined
Uri UriLen S-MethodInvoke.req::Request URI or
octets S-Unit-MethodInvoke.req::Request URI
ContentType multiple S-MethodInvoke.req::Request Headers or
octets S-Unit-MethodInvoke.req::Request Headers
Headers octets S-MethodInvoke.req::Request Headers or
S-Unit-MethodInvoke.req::Request Headers
Data multiple S-MethodInvoke.req::Request Body or
octets S-Unit-MethodInvoke.req::Request Body
ContentType:包含了内容的数据类型,其值与下面章节中4.2.2中的定义一致.
Data:包含了请求的数据.数据的长度取决于SDU size. Data紧随在herders之后并结束于SDU的
末尾.
2.3.3 Reply
Reply 是一种从服务器返回的请求响应, 用在S-Connect中指明会话中出现的错误.
Staus:包含了尝试和满足需求的结果代码. staus编码已经由http/1.1中定义并且在表36中描述.
其他域含义同其他.