当 STUN 服务器从不同的 STUN 代理接收到具有相同事务 ID 的请求时,它会如何表现?

How does a STUN server behave when it receives request with same Transaction ID from diffrent STUN Agents?

当一个 STUN 服务器收到来自两个具有相同事务 ID 的不同 STUN 代理的请求时,它应该如何表现?

我认为你不应该准备你的软件来处理这种奇怪的情况。交易ID是客户端生成的随机值,你不太可能在stun客户端看到这种bug。

The transaction ID is a 96-bit identifier, used to uniquely identify STUN transactions. For request/response transactions, the transaction ID is chosen by the STUN client for the request and echoed by the server in the response.

如果不是随机的,那么这很可能是由一个伪造的客户端软件引起的,最终你只会向那个客户端发送错误的答案,直到它的开发者发现这个问题并修复他们的软件。

这不应该发生,但是如果服务器应该检查 5 元组(客户端 IP 地址和端口、服务器 IP 地址和端口以及传输协议(当前是 UDP、TCP 或 TLS 之一)的组合) ).如果 5 元组不匹配,则服务器应继续将其视为有效事务,否则应按照 RFC-5766 进行操作。

来自 STUN 绑定请求的交易 ID 在 STUN 绑定响应中简单地回显。服务器不会尝试将此值解释为除日志记录以外的任何内容。它也不会尝试管理或处理重复的请求或重复的事务 ID。如果两个不同的客户端发送具有相同交易 ID 的绑定请求,那么两者将在其相应的响应中获得相同的交易 ID。

交易 ID 只是为了客户的利益。如果客户端从服务器收到的响应与请求中使用的事务 ID 不同,则应该简单地忽略它。因为该数据包可能是之前 STUN 会话的延迟到达。

大约只有在客户端等待响应超时并再次重新发送绑定请求时才会存在重复的事务 ID。 RFC 5389 在 section 6 中提到了这一点: Resends of the same request reuse the same transaction ID.