【问题标题】:Advantages of uPNP/IGD over SOCKS?uPNP/IGD 相对于 SOCKS 的优势?
【发布时间】:2009-04-04 21:16:25
【问题描述】:

我很好奇为什么它更普遍。它有更好的 API 吗?

我记得很久以前当我第一次了解 NAT 时(我用它来共享一个拨号 14.4kbps 调制解调器),我认为有一天每个家庭都会有一个包含 NAT 的路由器,但它“显然”还需要一个 SOCKS进程能够打开侦听端口。当宽带开始出现时,很高兴看到 NAT 成为一种常见功能,我认为 SOCKS 会是一个额外的功能,并且慢慢变得越来越普遍......但什么都没有!我不得不手动转发端口。然后出现了 uPNP,但很少有“严肃”的应用程序支持它,主要是 P2P 共享、游戏和一些 IM。

我还没有看到任何家庭路由器包含 SOCKS(当然,除了基于 Linux 的固件升级)。有人知道为什么吗??

编辑:

正如 Vartec 所指出的,UPnP 是一种零配置和服务发现,而不是代理服务。现在我知道我指的是 IGD 协议,即家庭路由器中存在的 NAT 穿越服务,并通过 UPnP 发现。所以,我的问题应该是“为什么是 IGD/UPnP 而不是 SOCKS?”

【问题讨论】:

    标签: api networking upnp socks


    【解决方案1】:

    与 UPnP 相比,SOCKS 具有局限性。通常 SOCKS 需要在每个客户端上进行配置,并且对应用程序不透明(Windows 上默认未安装/启用系统范围的套接字 SOCKSification),而即使没有 UPnP 的 NAT 也大多透明地工作,并且无需任何额外的客户端配置即可传出 TCP 套接字和传出 UDP。

    带有 UPnP 的 NAT 也比 SOCKS 更好地支持服务器 TCP 套接字:SOCKS 只能接受带有其 BIND 请求的单个连接,这对于在 FTP 等协议中接收单个 TCP 连接是可以的,但对于运行需要接受来自许多客户端的许多连接。 SOCKS 4 的 BIND 请求也有 2 分钟的超时,但服务器通常不知道下一个客户端何时尝试连接。

    低级 TCP 设置(例如 TCP Nagle、流量类别)也不能通过 SOCKS 代理工作,但它们通过 NAT 工作。

    【讨论】:

      【解决方案2】:

      据我所知,UPnP 是用于本地网络设备的 zeroconf 发现协议类型,而 SOCKS 是隧道代理服务器。它们完全不同,实际上我看不出它们有什么共同点。

      【讨论】:

        【解决方案3】:

        这是两个不同的东西,socks 是一种协议,它允许您通过代理服务器路由 tcp 和 udp(socks v5),它用于传出连接,路由器与此无关(除了它们充当代理)

        upnp 的 IGD 是一个“api”,它允许您告诉路由器您要打开一个端口并将其转发到计算机,这是用于传入连接..我的 linksys 默认启用了 upnp,并且一个我知道要使用的应用是 msn messenger(可能仅用于文件传输)

        【讨论】:

        • socks 还允许您在代理上打开一个侦听端口并将其转发到您的应用程序。
        猜你喜欢
        • 2010-09-22
        • 2011-06-03
        • 2017-03-19
        • 2010-12-23
        • 2015-07-23
        • 2011-02-26
        • 1970-01-01
        • 2012-05-08
        • 1970-01-01
        相关资源
        最近更新 更多