TCP 连接是否需要交换 ICE 候选人

Do you need exchange ICE candidates for TCP connection

用户 A 想通过 ICE/TURN/STUN 机制向用户 B 发送 TCP 请求。如果用户 B 生成一个 SDP 及其 ICE 候选并将其发送给用户 A。用户 A 是否必须直接回答用户 B 而无需将其 SDP 和 ICE 候选发送给用户 B? 我们只需要 TCP 连接(不需要 UDP)。

确实,当用户 A 收到用户 B 的 SDP 和用户 B 的 ICE 候选者时。它可以启动检查以了解它可以使用用户 B 的哪个 IP 来创建 TCP 连接(因此发送 stun 请求到每个 IP 的用户 B)。 当 TCP 连接打开时。 USER A 向用户 B 发送请求,B 可以通过 TCP 响应该请求,不是吗? 用户 B 不需要检查它可以联系到 A 的哪个 IP,因为它不需要向用户 A 发送请求,不是吗?

通过 TCP 进行 P2P NAT 遍历比 UDP 更难一些。但是,是的,它需要交换候选地址,包括从 STUN 或 TURN 服务器获得的 public 地址。并且主要技巧通常是两个端点需要同时尝试相互连接。

在此处阅读更多内容:https://en.wikipedia.org/wiki/TCP_hole_punching