使用 Stun 的服务器自反传输
Using Stun's server reflexive transport
我正在尝试开发自己的 Lite-ICE 客户端。我能够得到 STUN 响应,它为我提供了我的服务器自反地址。我的问题是关于后面的步骤。
因此,我从分配给本地地址为 L-IP1 和 L-Port1 的 STUN 客户端的 STUN 服务器收到 IP1 和 Port1 作为我的服务器反射地址。
我了解如果 L-IP1 和 L-Port1 被多路复用到 send/receive 非 STUN 消息 to/from 远程服务器,它是如何工作的。
如果我想要另一个应用程序,一个完全独立的进程来使用相同的绑定怎么办?那么,我可以启动另一个应用程序来将 UDP 端口也绑定到 L-Port1 吗?如果是这样,应用程序 (STUN) 和其他应用程序是否都会从远程服务器接收到目标设置为 IP1 和端口 1 的消息(从远程服务器的角度来看)?而那些不理解消息类型或方法的人,就直接忽略它?它通常是这样工作的吗?
What if I want another application, a completely separate process to use the same bindings?
您通常让每个应用程序获取其与不同本地端口的绑定。
So, can I start another application to bound the UDP port to L-Port1 too?
如果另一个进程将套接字绑定到同一本地端口,您将收到套接字绑定错误。有多种解决方法,但请继续阅读,这可能不是您想要的。
If so, will both the applications (STUN) and this other application receive message from the remote servers with destination set to IP1 and Port1 (from the remote server's perspective)?
您可以使用 SO_REUSEADDR 选项。但是,如果您有两个进程的套接字连接到同一个本地 UDP 端口,则该端口的传入数据包将被路由到任一套接字。 (第一个调用 recvfrom 的人获取数据包 - 否则,它是不确定的)。
And the one that does not understand the message type or method, simply ignores it? Is that how it normally work?
没有
我认为您的意思是您在一个进程中执行 STUN,但希望在另一个进程中使用这些绑定的实际应用程序 运行。只需让您的应用程序自己执行 STUN 绑定,然后简单地重新使用套接字来获取数据。如果您尝试在同一个套接字上复用 STUN 和应用程序数据,您将需要(您自己的)代码来区分它们。
我正在尝试开发自己的 Lite-ICE 客户端。我能够得到 STUN 响应,它为我提供了我的服务器自反地址。我的问题是关于后面的步骤。
因此,我从分配给本地地址为 L-IP1 和 L-Port1 的 STUN 客户端的 STUN 服务器收到 IP1 和 Port1 作为我的服务器反射地址。
我了解如果 L-IP1 和 L-Port1 被多路复用到 send/receive 非 STUN 消息 to/from 远程服务器,它是如何工作的。
如果我想要另一个应用程序,一个完全独立的进程来使用相同的绑定怎么办?那么,我可以启动另一个应用程序来将 UDP 端口也绑定到 L-Port1 吗?如果是这样,应用程序 (STUN) 和其他应用程序是否都会从远程服务器接收到目标设置为 IP1 和端口 1 的消息(从远程服务器的角度来看)?而那些不理解消息类型或方法的人,就直接忽略它?它通常是这样工作的吗?
What if I want another application, a completely separate process to use the same bindings?
您通常让每个应用程序获取其与不同本地端口的绑定。
So, can I start another application to bound the UDP port to L-Port1 too?
如果另一个进程将套接字绑定到同一本地端口,您将收到套接字绑定错误。有多种解决方法,但请继续阅读,这可能不是您想要的。
If so, will both the applications (STUN) and this other application receive message from the remote servers with destination set to IP1 and Port1 (from the remote server's perspective)?
您可以使用 SO_REUSEADDR 选项。但是,如果您有两个进程的套接字连接到同一个本地 UDP 端口,则该端口的传入数据包将被路由到任一套接字。 (第一个调用 recvfrom 的人获取数据包 - 否则,它是不确定的)。
And the one that does not understand the message type or method, simply ignores it? Is that how it normally work?
没有
我认为您的意思是您在一个进程中执行 STUN,但希望在另一个进程中使用这些绑定的实际应用程序 运行。只需让您的应用程序自己执行 STUN 绑定,然后简单地重新使用套接字来获取数据。如果您尝试在同一个套接字上复用 STUN 和应用程序数据,您将需要(您自己的)代码来区分它们。