wireshark流量捕获中的MQPUT_REPLY是什么?

问题描述 投票:0回答:1

我正在使用 Wireshark 分析 IBM MQ 中的流量。我可以看到一条

MQPUT
消息发送到 MQ,大约 118 毫秒后,出现一条
MQPUT_REPLY
消息。我在 IBM MQ 文档中找不到有关
MQPUT_REPLY
的任何内容。你能告诉我什么是
MQPUT_REPLY
吗?
MQPUT_REPLY
是 MQ 对 MQPUT 消息的响应吗?

ibm-mq wireshark
1个回答
0
投票

您正在查看 MQ 客户端应用程序和队列管理器之间通过 SVRCONN(队列管理器)和 CLNTCONN(客户端)通道的 MQ 流量。

客户端或队列管理器之间的每次交互都是通过传输段完成的。每个传输段都有一个称为TSH(传输段标头)的标头。 IBM 将 TSH 视为专有信息,并且不发布任何文档。因此,您找不到任何相关信息的原因。

此外,任何段的最大大小为 32768 字节。

Wireshark 可以理解部分或大部分信息,因为人们多年来一直在对所有 TSH 数据进行逆向工程。

客户端和队列管理器之间的通道具有双向通信。当客户端应用程序发出 MQPUT API 调用(消息数据小于 32KB)时,MQ 客户端库会将 TSH 作为消息数据的前缀,然后发送到队列管理器。队列管理器将处理 MQ 调用并使用 MQPUT_REPLY 的 TSH 段进行回复,其中包含有关 MQPUT 所发生情况的信息,包括完成代码和原因代码。如果您仔细观察,您会发现屏幕截图中的 MQCMIT 也会发生这种情况。

如果客户端应用程序发出消息数据大于 32KB 的 MQPUT API 调用,则 MQ 客户端库会将消息数据分解为 32KB 块,并使用 TSH 发送每个块。在 TSH 中,它将被标记为第一段、中间段或最后段。队列管理器会将所有块组装成原始消息,对其进行处理,然后使用 MQPUT_REPLY 的 TSH 段进行回复。

所有 MQ API 调用都会发生此通信。即 MQCONN 将有一个匹配的 MQCONN_REPLY 段,MQOPEN 将有一个匹配的 MQOPEN_REPLY 段,等等...

© www.soinside.com 2019 - 2024. All rights reserved.