是否可以使用 TCP 或 UDP 中继 UDP 或 TCP 数据;即混合协议?
Is it possible to relay UDP or TCP data using TCP or UDP; i.e. intermixing the protocol?
Headers UDP 和TCP 数据不同。我有一个用例,我想在其中传输 RTP 媒体流。首先选择 UDP,然后选择 TCP。
现在假设 RTP 数据包被接收到本地 UDP 端口。
此本地计算机首先尝试使用 UDP 与服务器建立连接。如果成功,则不再查询。
但是如果 UDP 不可用,那么我们建立 TCP 连接。 我可以中继 TCP 上本地UDP 端口的数据吗? 假设它最终会被馈送到对等UDP 端口。我们的兴趣只是转发而已。
反之切换UDP端口和TCP连接。这也可以吗?
当然,您可以创建一个明确的中继应用程序,它接受 UDP 数据并在 TCP 连接内转发这些数据。然后是对等方中的另一个中继,它从 TCP 连接中提取消息并将这些消息作为 UDP 转发。这样你就基本上创建了一个隧道。
或者您可以更改您的应用程序,使其检测到 UDP 不工作并直接使用 TCP,而不涉及任何类型的中继。就开销和所需的基础设施而言,这可能是更好的方法。不过,这必须明确编码到您的应用程序中,即发送方和接收方都需要不同的套接字,并且根据协议,您可能需要额外的消息封装,因为 TCP 只是一个没有消息边界的字节流,而 UDP 具有内置消息。至于 RTP:当在 TCP 等协议上使用时,已经有一个用于构建 RTP 消息的标准,请参阅 RFC 4571。
Headers UDP 和TCP 数据不同。我有一个用例,我想在其中传输 RTP 媒体流。首先选择 UDP,然后选择 TCP。
现在假设 RTP 数据包被接收到本地 UDP 端口。 此本地计算机首先尝试使用 UDP 与服务器建立连接。如果成功,则不再查询。
但是如果 UDP 不可用,那么我们建立 TCP 连接。 我可以中继 TCP 上本地UDP 端口的数据吗? 假设它最终会被馈送到对等UDP 端口。我们的兴趣只是转发而已。
反之切换UDP端口和TCP连接。这也可以吗?
当然,您可以创建一个明确的中继应用程序,它接受 UDP 数据并在 TCP 连接内转发这些数据。然后是对等方中的另一个中继,它从 TCP 连接中提取消息并将这些消息作为 UDP 转发。这样你就基本上创建了一个隧道。
或者您可以更改您的应用程序,使其检测到 UDP 不工作并直接使用 TCP,而不涉及任何类型的中继。就开销和所需的基础设施而言,这可能是更好的方法。不过,这必须明确编码到您的应用程序中,即发送方和接收方都需要不同的套接字,并且根据协议,您可能需要额外的消息封装,因为 TCP 只是一个没有消息边界的字节流,而 UDP 具有内置消息。至于 RTP:当在 TCP 等协议上使用时,已经有一个用于构建 RTP 消息的标准,请参阅 RFC 4571。