upnp介绍和使用


  P2P技术目前运用的相当广泛了,主要实现P2P的方案主要有2种:
  一,使用STUN协议(RFC 3489).
  STUN协议即常说的UDP打洞,基本思想通过公网上安装的一个STUN server(一般有2个IP地址)充当联系人,client首先与公网上的STUN server联系,判断自己处于内网还是公网,若处于内网,则继续与STUN server联系,判断NAT是哪种类型,若是Core nat则支持STUN,若是Symmetic nat则不支持以STUN形式的P2P.
  STUN最成功的案例要属skype,但STUN方案也有不足之处,主要有2点:
  1)需要额外的STUN服务器.
  2)symmetic nat无法穿透.

  二,使用UPNP端口映射技术。
  UPNP直接把一个内网端口映射到一个网关设备的外网IP的一个端口上,任何发送到外网IP的这个端口的数据,都会被自动转发到内网映射的端口上,只要做了端口映射,就无须关心NAT地址转换所带来的麻烦,对于应用程序从端口映射过的内网地址发出的数据,NAT会把从这个内网地址发出的数据IP头改为相应的公网IP和端口(简称IPPORT1),对方响应的数据被发送到IPPORT1,NAT设备又会把数据传给绑定IPPORT1的内网地址. 相比于STUN,UPNP有着以下几点优势:
  1)无需额外的服务器.
  2)开发相比STUN简单.
  使用UPNP需要网关支持UPNP(现在的网关设备还没见过不支持UPNP的).
  windows系列的操作系统已经内置了UPNP的支持,并且为了方便应用程序的调用,提供了一组UPNP的com组件形式.
  emule开源项目是一个P2P共享的文件传输软件,其UPNP模块有两种形式,一是使用操作系统提供的UPNP接口,二是使用miniupnpc(一个upnp开源项目)提供的接口,用于没有提供UPNP功能的操作系统,miniupnpc项目主页上有支持的NAT设备清单,emule优先选择操作系统提供的UPNP接口,若失败,则尝试miniupnpc提供的接口.

你可能感兴趣的:(Third,party,software)