https://www.rfc-editor.org/rfc/rfc6520没有解释为什么心跳请求/响应往返应该包含有效负载。它只是指定有效负载有空间,并且响应必须包含与请求相同的有效负载。
这个有效载荷有什么用?我的问题是:
工程师在设计协议以允许将任意有效负载包含到心跳请求中时会想到什么?有什么优势?
响应中必须包含此有效负载的原因是什么?
我看到通过允许任意有效负载,应用程序能够明确地将某个响应与某个请求相匹配。这是唯一的优势吗?如果是,那么为什么不强制有效载荷具有一定的长度?有效载荷长度的灵活性有什么好处?它是否与加密概念有关,因此心跳请求的长度必须是不可预测的?
其他类似“心跳”的协议扩展只是预先定义了确切的请求(例如“ping”)和相应的响应(例如“pong”)。为什么https://www.rfc-editor.org/rfc/rfc6520采取了不同的路线?
重要的是要了解 RFC6520 中做出的选择背后的原因,以便正确评估所有这些可能是智能放置的后门的假设。