uPNP / IGD优于SOCKS的优势?

时间:2009-04-04 21:16:25

标签: api networking upnp socks

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

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

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

编辑:

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

3 个答案:

答案 0 :(得分: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工作。

答案 1 :(得分:0)

据我所知,UPnP是本地网络中设备的zeroconf发现类协议,而SOCKS是隧道代理服务器。他们是完全不同的,实际上我没有看到任何东西,他们会有共同点。

答案 2 :(得分:0)

这是两个不同的东西,socks是一个允许你通过代理服务器路由tcp和udp(socks v5)的协议,它用于传出连接,路由器与此没有任何关系(除了它们作为一个代理也是)

upnp的IGD是一个'api',允许你告诉你的路由器你想要打开一个端口并将它送到计算机,这是用于传入连接..我的linksys默认启用了upnp和一个app我知道使用这个是msn messenger(可能只用于文件传输)