确认和拒绝入站数据
对于待响应的已发送或已接收的每个 SNA 链,如请求异常 (RQE) 或明确响应要求 (RQD),本地节点将维护一个相关表项。 如果表项耗尽,本地节点将终止使用最多表项的会话。 会向应用程序发送 Status-Error 消息(代码 0x46)和 Close(PLU) 请求,并向主机发送 TERM-SELF 消息。 可通过发送更改方向 (CD)(半双工)数据、ACKRQD 数据、任何 Status-Control(CHASE) 或包含 ACKRQD 的 Status-Control(LUSTAT) 来避免表项不足(入站)。 如打开 PLU 连接中所述,可以通过发送礼节性确认消息来避免出站短缺。
本地节点会将数据链发送到主机,其链响应模式如下:
明确
如果应用程序使用 ACKRQD 字段集向本地节点发送数据消息,并且 BIND 参数指定辅助节点使用明确或明确/异常响应模式。
异常
如果应用程序在未使用 ACKRQD 字段集的情况下向本地节点发送数据消息,并且 BIND 参数指定辅助节点使用异常或明确/异常响应模式。
无响应
如果应用程序在未使用 ACKRQD 字段集的情况下向本地节点发送数据消息,并且 BIND 参数指定辅助节点使用无响应模式。
如果来自应用程序的数据消息的 ACKRQD 设置不反映在 BIND 参数中指定的链响应模式,则本地节点返回 Status-Acknowledge(Nack-2) 指示非严重错误代码。 例如,应用程序指定了 ACKRQD 但 BIND 参数不允许本地节点发送明确响应链的情况。
在案例 1 中,应用程序将收到它发送给本地节点的所有功能管理数据 (FMD) 链的确认:
来自主机的正响应作为 Status-Acknowledge(Ack) 消息返回到应用程序。
来自主机的负响应作为 Status-Acknowledge(Nack-1) 消息返回,包含 SNA 感知代码。
尝试发送消息时本地节点检测到的错误将作为 Status-Acknowledge(Nack-2) 消息返回,包含等效错误代码。
在案例 2 中,应用程序只收到它发送给本地节点的 FMD 链确认:
来自主机的负响应,作为 Status-Acknowledge(Nack-1) 消息返回,包含 SNA 感知代码。
尝试发送消息时本地节点检测到的错误,作为 Status-Acknowledge(Nack-2) 消息返回,包含等效错误代码。
在案例 3 中,当本地节点检测到消息中的错误并向应用程序发送 Status-Acknowledge(Nack-2) 时,该应用程序只接收到它发送给本地节点的 FMD 链确认。 主机唯一能提出的异议是发送后续 LUSTAT 0x400A(不支持无响应),在感知限定符字段中使用请求的序列号。 和往常一样,它以 Status-Control(LUSTAT) 方式呈现给应用程序。
每当应用程序收到 Status-Acknowledge(Ack) 或 Status-Acknowledge(Nack-1) 时,它会隐式确认合作伙伴在以前发送的所有链的主机中收到半会话。
在案例 2 中,应用程序通常不会收到主机发送给它的链的此类响应,而在案例 3 中,应用程序永远不会收到此类响应。 因此,为了让主机确认收到了之前发送的所有链,应用程序应发出带有 ACKRQD 集的 Status-Control(CHASE) 请求。 这会导致本地节点向主机生成 SNA CHASE 请求。 收到此 CHASE 响应确认主机已经收到这个 CHASE 请求和应用程序之前发送的所有链。 本地节点发出 Status-Control(CHASE) 确认,通知应用程序情况属实。
以下三个图说明了本地节点和应用程序之间的入站数据确认和拒绝协议,以及这些协议与基础 SNA 协议之间的关系。
在第一张图中,应用程序将入站数据链中的 ACKRQD 字段设置为使主机确认收到链和所有以前发送的链。
应用程序设置 ACKRQD 字段在下图中,Status-Acknowledge(Nack-1) 拒绝最后一个链,但确认主机接收了之前发送的所有数据链。
Status-Acknowledge(Nack-1) 拒绝最后一个链,但确认接收在下图中,应用程序使用 Status-Control(CHASE) 使主机确认收到相应的 CHASE 请求和所有以前发送的链。
使用 Status-Control(CHASE) 使主机确认收到相应的 CHASE 请求
另请参阅
打开 PLU 连接
PLU 会话
出站链接
入站链接
段传递
Brackets
方向
速度和区块
确认和拒绝数据]
关闭和静止
恢复
应用程序启动的终止
LUSTAT]
响应时间监视器数据