Security 在某些应用程序中,即使在防火墙或NAT之后,数据包也是如何发送出去的?

Security 在某些应用程序中,即使在防火墙或NAT之后,数据包也是如何发送出去的?,security,networking,audio,network-programming,voice,Security,Networking,Audio,Network Programming,Voice,例如Skype/Team viewer/Logmein等应用程序,它们在NAT(防火墙后面)后面发送音频/视频。但是,当我制作一个小型应用程序,将文本发送到另一个NAT位置时,它没有做到这一点 Example: Sender: -> Public ip: 91.1.2.3 My lan ip is: 192.168.1.2 with port 14446 udp -------> Data format: RTP packets Receiver: <------- Da

例如Skype/Team viewer/Logmein等应用程序,它们在NAT(防火墙后面)后面发送音频/视频。但是,当我制作一个小型应用程序,将文本发送到另一个NAT位置时,它没有做到这一点

Example: 

Sender: 
-> Public ip: 91.1.2.3 My lan ip is: 192.168.1.2 with port 14446 udp
-------> Data format: RTP packets
Receiver:
<------- Data received: 0 packets
-> Public ip: 92.1.2.3 Friend lan ip is: 10.0.0.2 with port 14446 udp

* same in both way
示例:
发件人:
->公共ip:91.1.2.3我的lan ip:192.168.1.2,端口为14446 udp
------->数据格式:RTP数据包
接收人:
公共ip:92.1.2.3好友lan ip:10.0.0.2,端口为14446 udp
*两方面都一样
其他人是如何做到这一点的?如何进行对等2应用程序开发以克服NAT问题?我们一直都有公共ip,主要是NAT问题

但在这种情况下,Skype又是如何工作的呢?我们是否有UDP的音频/视频端口范围,或者UDP始终从任何位置打开?但我的在UDP的范围端口以上不起作用,我也尝试过。秘密是什么?这让我很好奇

注意:
我的目标是处理音频数据包,我认为过多的过滤或防火墙会导致延迟和延迟,其他问题也会相对涉及。因此,对于我的应用程序,我想非常清楚地知道一些端口(哪些端口范围?)可以用于这样的目的,而这实际上不会阻碍开发压力。

我相信您使用的端口通常用于确定是否应该允许。某些端口总是通过。我不确定确切的端口,但所有NAT和防火墙的端口都不同。

一个常见的解决方案是,客户端程序向外连接到服务器,从而建立连接。大多数防火墙都允许外部连接——假设您是受信任的,并且始终可以连接到外部。当服务器希望向您发送消息时,它会在打开的连接上做出响应。

有多种类型的NAT,它们允许的流量各不相同

对于大多数NAT,STUN将允许您打开端口并找出您打开的端口(可能与您发送的端口不同)。在SIP和RTSP中,您通常会向另一端提供由STUN确定的外部IP和端口

完全对称NAT意味着STUN不允许您使用第三方服务器通过STUN支持端口,因此您必须使用UPnP(如果启用)或路由器中的映射端口(或设置触发器),或者您必须玩邪恶的游戏,使双方都认为他们发起了连接。(不容易,也不能保证。)


有关穿越nat的详细机制,请参见IETF中的ICE&TURN规范(RFC)——但请注意,在某些情况下,您必须使用外部代理转发数据包。

A(防火墙后)、B(防火墙后的朋友)、C(服务器stun/nat映射器)。A连接C,C连接A,寄存器连接C?或者A连接B,但由于NAT落后而无法通信。或者A和B在电话中谈论这些协商信息,并试图建立NAT映射的背后?你的确切意思是,STUN只是一个公共ip和公共端口映射,但仍然是a到B。我的意思是:a连接到C,从而确定其外部ip/端口。这就是斯泰恩所做的。C服务器所有者现在可以声明A在该外部IP/端口上联机且可访问。因此,B可以直接连接到A。C不会参与直接通信。非常好的信息。但我们仍然在处理延迟问题。我试图实现的想法是A)握手(无防火墙/NAT问题)B)将原始数据包从user1传递到user2,而不涉及交换机/代理服务器来处理媒体数据包。因为在我的研究和实验中,已经证明peer2对等媒体不应该涉及第三方过滤。主要目标是降低媒体延迟。阅读我引用的文章。如果没有对路由器的控制,您无法轻松处理完全对称路由器的情况;没有某种类型的RTP代理/转发器(参见ICE/TURN),两端的路由器肯定不是完全对称的。您可以通过UPnP(如果启用)或手动端口映射处理对称路由器。我不是100%确定你所说的“握手”是什么意思。如果可以避免使用代理,低延迟通信会更好-ICE让您确定是否有避免中继的方法。这些IPv6兼容吗?或者,当IPv4不存在时,它们将被删除并挂起。