UDP 打孔和 UPnP 有什么区别?

fpg*_*ost 6 upnp

因此,Skype 和其他 p2p 类型的应用程序通常通过所谓的打孔(请参阅此处的简单指南)来使两个客户端相互连接,这两个客户端都在防火墙后面,阻止传入连接。

uPnP 还用于绕过必须手动转发端口的用户。它与上面描述的那种打孔究竟有什么不同?我认为它必须以不同的方式运行,因为大多数路由器都有打开/关闭它的设置,而我认为没有办法阻止上述类型的 UDP 打孔(除了阻止传出连接和传入建立/相关)。

其次,如果说Skype/bittorrent可以用打孔的方式在AB之间建立和直接连接,那是否意味着它不需要在路由器上启用upnp?

Law*_*ceC 9

要使 UPnP 工作,有问题的路由器必须支持它。具有 UPnP 的设备基本上要求启用 UPnP 的路由器打开一个端口并将流量转发给它。LAN 外部的任何一方都不应该能够这样做,除非 LAN 的路由器配置严重错误或对整个世界开放。

打孔利用了 UDP 的无连接特性:

  • A在端口+IP上向B发送UDP数据包
  • A 的 NAT 记住这一点,并且由于 A 发起了数据包,因此认为 A 已开始对话(即使技术上使用 UDP 无法确定),然后允许该端口 + IP 上的传入流量
  • 仍然需要一个中间方(在您提供的文章中,即 Skype“交换”服务器),因为 B 的防火墙会阻止传入流量,但现在交换服务器可以进行 MITM 并通过 A 的端口 + IP 发送响应,这应该可以到达A 因为 NAT 由于 A 始发流量而转发。

打孔基本上可以让 LAN 外部的一方在中介的帮助下到达 NAT 后面侦听的对象。