状态控制消息

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)。

    显示应用程序如何发送状态控制 (CHASE) 的图像。
    应用程序发送 Status-Control(CHASE)

    在下图中,主机发送 BID 请求。

    显示主机如何发送 BID 请求的图像。
    主机发送 BID 请求

    在下图中,应用程序发送 Status-Control(SHUTC)。

    显示应用程序如何发送状态控制 (SHUTC) 的图像。
    应用程序发送 Status-Control(SHUTC)

    在下图中,主机发送 SNA SIGNAL 请求。

    显示主机如何发送 SNA SIGNAL 请求的图像。
    主机发送 SNA SIGNAL 请求

    下图中,主机发送了多个 RQE LUSTAT 请求,应用程序拒绝了第一个请求。

    显示应用程序如何拒绝第一个 RQE LUSTAT 请求的图像。
    应用程序拒绝第一个 RQE LUSTAT 请求

    在下图中,应用程序发送 Status-Control(LUSTAT) NOACKRQD。

    显示应用程序如何发送状态控制 (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

本节内容