状态控制消息
Status-Control 消息提供对使用 PLU 连接的主逻辑单元 (PLU) 会话上的会话控制和数据流控制协议的访问。 它们不用于其他连接。 Status-Control 消息直接映射到等效的 SNA 会话控制和数据流控制请求/响应单位 (RU)。
除 LUSTAT 发送的请求异常 (RQE) 外,所有与正常流中的 SNA 请求相对应的 Status-Control 消息,以及与加速流中的 CLEAR 和 STSN 请求相对应的 Status-Control 消息,都设置了 ACKRQD(需要确认)字段。 与加速流中的 SNA 请求(CLEAR 和 STSN 除外)相对应的 Status-Control 消息不会将 ACKRQD 字段设置为本地节点。 不过,应用程序可以在发送这些 Status-Control 消息时设置 ACKRQD。 本主题中的最后一个图汇总了哪些 Status-Control 请求始终设置了 ACKRQD。
如果 Status-Control 请求在消息标头中设置了 ACKRQD,则在发送方在流中发送更多数据消息或更多 Status-Control 请求之前,接收方必须提供 Status-Control 响应(Acknowledge、Negative-Acknowledge-1 或 Negative-Acknowledge-2)。 发送方仍可以在流中发送 Status-Control 响应、Status-Acknowledge、Status-Error 和 Status-Resource 消息。 这同时适用于正常流和加速流以及所有请求模式(包括延迟请求模式)。 请求中收到的消息密钥必须在响应中返回。 (这是为了允许多个 RQE LUSTAT 消息未完成。)本地节点在 Status-Control 请求和 DATAFMI 消息上增加消息密钥,这些消息是它通过 PLU 连接发送给应用程序的。
对于函数管理接口 (FMI) 的逻辑单元应用程序 (LUA) 变体,消息密钥字段的使用方式有所不同,如下所示:
对于入站加速流请求,本地节点将 SNA 序列号设置为应用程序在消息密钥字段中提供的值。 应用程序必须确保此字段设置为正确的序列号。
对于入站 Status-Control 响应,本地节点将 SNA 序列号设置为应用程序在消息密钥字段中提供的值。 应用程序必须确保此字段设置为要发送响应的请求的序列号。
除 Status-Control(LUSTAT) 外,如果 Status-Control 请求不设置 ACKRQD,则应用程序不应回复,因为本地节点已发送了肯定响应。
例如,如果应用程序发送了一个 Status-Control(QC) 请求,并设置了 ACKRQD(对应于正常流中的 SNA 请求),这会阻止与入站正常流相对应的更多数据和 Status-Control 请求,直到收到 Status-Control(QC) 响应为止。 它不会阻止正常流中的其他消息或加速流中的消息。 例如,应用程序仍可发送 Status-Control(SIGNAL)。
收到 Status-Control 响应意味着确认所有未完成的消息(包括流中的数据消息)。
对 Status-Control 消息使用 ACKRQD 可有效地强制实施确切响应和即时请求模式。 这适用于:
与 SNA 请求 CLEAR 和 STSN 相对应的 Status-Control 消息(因为加速流为 RQD)。
与所有 DFC 请求相对应的 Status-Control 消息(都是 RQD),但 LUSTAT 除外(可能是 RQE)。
应用程序可以在与加速流中的 SNA 请求相对应的 Status-Control 请求上设置 ACKRQD,即使不需要 ACKRQD 也是如此。 例如,当应用程序发出方向信号时(例如,一个 3270 模拟器的终端操作员反复按 ATTN 键),它可以生成多个 Status-Control(SIGNAL) 请求消息,这会对其他用户的性能产生不利影响。 应用程序可以在第一个 Status-Control(SIGNAL) 请求上设置 ACKRQD,并忽略会导致更多 Status-Control(SIGNAL) 请求消息的事件,直到从本地节点接收到 Status-Control(SIGNAL) 响应。
下面六个图中的消息流显示了有和没有 ACKRQD 的出站和入站 Status-Control 序列,以及相应的 SNA RU。
在第一个图中,应用程序发送 Status-Control(CHASE)。
应用程序发送 Status-Control(CHASE)在下图中,主机发送 BID 请求。
主机发送 BID 请求在下图中,应用程序发送 Status-Control(SHUTC)。
应用程序发送 Status-Control(SHUTC)在下图中,主机发送 SNA SIGNAL 请求。
主机发送 SNA SIGNAL 请求下图中,主机发送了多个 RQE LUSTAT 请求,应用程序拒绝了第一个请求。
应用程序拒绝第一个 RQE LUSTAT 请求在下图中,应用程序发送 Status-Control(LUSTAT) NOACKRQD。
应用程序发送 Status-Control(LUSTAT) NOACKRQD下面的表格汇总了本地节点支持的 Status-Control 请求,以及 SNA 会话控制 (SC) 和数据流控制 (DFC) 请求。 对于每个 Status-Control 请求,表格提供以下信息:
相应 SNA 请求的 SNA 类别(SC 或 DFC)。
相应 SNA 请求使用的流(正常或加速)。
支持相应 SNA 请求的 TS 或 FM 配置文件。
其有效方向 (NODE <–> APPL) 。
是否需要 ACKRQD。 请注意,应用程序可能会在不需要 ACKRQD 的 Status-Control 请求上设置 ACKRQD。
Status-Control 消息的 control-type 字段中使用的十六进制代码。 (有关详细信息,请参阅 FMI 消息格式。)
Status-Control | SNA RQ 流 | TS 配置文件 | FM 配置文件 | 方向节点 - appl | ACKRQD | 代码 |
---|---|---|---|---|---|---|
CLEAR | SC、Exp | 2、3、4 | – | –> | ACKRQD | CCLEAR (0x01) |
SDT | SC、Exp | 3、4 | – | –> | – | CSDT (0x02) |
RQR | SC、Exp | 4 | – | <– | – | CRQR (0x03) |
STSN | SC、Exp | 4 | – | –> | ACKRQD | CSTSN (0x04) |
取消 | DFC、Norm | – | 3、4、7 | <–> | ACKRQD | CCANCEL (0x10) |
LUSTAT | DFC、Norm | – | 3、4、7 | <–> | – | CLUSTAT (0x11) |
SIGNAL | DFC、Exp | – | 3、4、7 | <–> | – | CSIGNAL (0x12) |
RSHUTD | DFC、Exp | – | 3、4、7 | <– | – | CRSHUTD (0x13) |
BID | DFC、Norm | – | 3、4 | –> | ACKRQD | CBID (0x14) |
CHASE | DFC、Norm | – | 3、4 | <–> | ACKRQD | CCHASE (0x15) |
SHUTC | DFC、Exp | – | 3、4 | <– | – | CSHUTC (0x16) |
SHUTD | DFC、Exp | – | 3、4 | –> | – | CSHUTD (0x17) |
RTR | DFC、Norm | – | 3、4 | <– | ACKRQD | CRTR (0x18) |
QC | DFC、Norm | – | 4 | <–> | ACKRQD | CQC (0x20) |
QEC | DFC、Exp | – | 4 | <–> | – | CQEC (0x21) |
RELQ | DFC、Exp | – | 4 | <–> | – | CRELQ (0x22) |
下表中的请求仅用于 LUA。 (有关详细信息,请参阅 FMI 概念。)
Status-Control | SNA RQ 流 | TS 配置文件 | FM 配置文件 | 方向节点 - appl | ACKRQD | 代码 |
---|---|---|---|---|---|---|
CRV | SC、Exp | 3、4 | – | –> | ACKRQD | CCRV (0x05) |
BIS | DFC、Norm | – | 18 | <–> | ACKRQD | CBIS (0x19) |
SBI | DFC、Exp | – | 18 | <–> | ACKRQD | CSBI (0x1A) |
关于如何使用特定 Status-Control 消息,本部分的以下主题中进行了介绍,具体位于 PLU 会话协议(如链接、括号、恢复等)的上下文中。
有关 Status-Control 消息的格式,请参阅 Status-Control。