https://tools.ietf.org/html/rfc6520没有解释为什么心跳请求/响应往返应该包含有效负载。它只是指定有效载荷的空间,并且响应必须包含与请求相同的有效载荷。
这个有效载荷有什么用?我的问题是:
工程师在设计协议时可以考虑什么才能将任意有效负载包含在心跳请求中?有什么好处?
响应中必须包含此有效负载的原因是什么?
我看到,通过允许任意有效负载,应用程序能够明确地将某个响应与某个请求匹配。这是唯一的优势吗?如果是,那么为什么没有强制有效载荷达到一定的长度呢?有效载荷长度的灵活性有多大?它是否与加密概念有关,因此心跳请求的长度必须是不可预测的?
其他类似“心跳”的协议扩展只是预先定义了确切的请求(例如“ping”)和相应的响应(例如“pong”)。为什么https://tools.ietf.org/html/rfc6520采取不同的路线?
重要的是要理解RFC6520中做出的选择背后的原因,以便正确评估所有这些可能是智能放置后门的假设。
答案 0 :(得分:1)
关于任意大小:rfc abtract声明Hearbeat扩展是DTLS的路径MTU(PMTU)发现的基础。改变大小是实施该协议(http://en.wikipedia.org/wiki/Path_MTU_Discovery)
关于任意内容:可能无法保留数据包传送或数据包丢失。改变内容有助于识别它们