端口映射与UPnP

端口映射与UPnP
UPnP是通用即插即用(Universal Plug and Play)的缩写,它主要用于实现设备的智能互联互通。使用UPnP协议不需要设备驱动程序,因此使用UPnP建立的网络是介质无关的,它可以运行在几乎所有的操作系统平台之上,可以使用任何开发语言,使得在办公室、家庭和其他公共场所方便地构建设备相互联通的网络环境。UPnP实际上是扩展了传统单机的设备和计算机系统的概念,在"零配置"的前提下提供了连网设备之间的发现、接口声明和其他信息的交换等互动操作功能。

从UPnP的定义来看,它的功能不仅仅是能够实现端口映射。但是实现端口映射是它的一项重要的功能,也是我们最常利用的功能。端口映射,可以理解为就是网络地址的转换,即NAT,那么UPnP是如何实现这种转换的呢?

要实现UPnP,首先要操作系统支持这种协议,还衷诘牟僮飨低常琖inXP, Win2K, Vista都支持这个功能,不过系统默认不安装,需要手动安装。其次,路由器要支持UPnP协议,不过,现在的主流路由器都支持这个功能。最后,在程序中实现UPnP。下面的过程是程序利用UPnP协议实现端口映射:

1. 寻找UPnP设备
   首先通过广播的形式发送UDP数据报,如果收到了应答消息,根据应答消息可以得到UPnP设备的端口和地址。
   这里面的广播数据格式有严格的规定,可以查询相关的资料。成功的找到UPnP设备,会收到类似
   HTTP/1.1 200 OK 的消息响应。
2. 根据第一步获得的路由器的IP和端口,和路由器建立Socket连接,获取路由器的控制URL.
3. 根据第二步的控制URL, 向路由器发送添加端口映射的控制信息。
4. 如果第3步添加成功,则可以向路由器发送查询映射项的信息。
5. 当程序退出的时候,需要发送删除端口映射的控制信息,删除端口映射。

参考资料:
http://www.ibm.com/developerworks/cn/linux/other/UPnP/part1/index.html
http://www.ibm.com/developerworks/cn/linux/other/UPnP/part2/index.html
http://blog.bc-cn.net/user22/155472/archives/2007/7520.shtml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值