因此,Skype 和其他 p2p 类型的应用程序通常通过所谓的打孔(请参阅此处的简单指南)来使两个客户端相互连接,这两个客户端都在防火墙后面,阻止传入连接。
uPnP 还用于绕过必须手动转发端口的用户。它与上面描述的那种打孔究竟有什么不同?我认为它必须以不同的方式运行,因为大多数路由器都有打开/关闭它的设置,而我认为没有办法阻止上述类型的 UDP 打孔(除了阻止传出连接和传入建立/相关)。
其次,如果说Skype/bittorrent可以用打孔的方式在AB之间建立和直接连接,那是否意味着它不需要在路由器上启用upnp?
要使 UPnP 工作,有问题的路由器必须支持它。具有 UPnP 的设备基本上要求启用 UPnP 的路由器打开一个端口并将流量转发给它。LAN 外部的任何一方都不应该能够这样做,除非 LAN 的路由器配置严重错误或对整个世界开放。
打孔利用了 UDP 的无连接特性:
打孔基本上可以让 LAN 外部的一方在中介的帮助下到达 NAT 后面侦听的对象。