防火墙拦截了一个svchost到239.255.255.250:1900的访问请求,经查原来是UPnP端口映射,顺便把搜集的有关实现方法放上。

UPnP 端口映射的实现
原作者: yoqi(优奇)
原文网址:http://blog.csdn.net/yoqi/archive/2005/06/28/405260.aspx

Bitcomet、比特精灵等软件已经实现了内网程序往网关端口自行开启端口映射的功能,以便外网程序直接TCP连接内网机器,去年我的一个项目刚好需要这个功能,找了些资料,了解了一下UPnP规范,实现了这个功能。

UPnP端口映射的过程和简单原理:

UPnP设备一般支持HTTP控制,就像现在某些无线AP,可以在浏览器输入 http://ip:port 的方式去访问操控一样。
所以照着普通的网络编程,TCP连接过去,发送HTTP包,包头和包数据遵照一定规格填写就是。至于这个ip/port的获得,只要往UPnP规定的ip/port(比如239.255.255.250:1900)发送一定规格的UDP广播包,就能查询得到(比如http://192.168.0.1:2869/upnphost/udhisapi.dll?content=uuid:fb6bbc52-aa87-4939-a4fa-289d3bbccc61等等)
所以客户端无操作系统的限制,只要支持最普通的tcp/ip即可

简单的步骤:

1、搜索UPnP设备:
 
    UDP 往 239.255.255.250:1900 广播一个"搜索"的HTTP包(格式当然有规定,就不贴上来了,以免啰嗦,查一下资料即可),如果收到返回,分析一下,会得到包含类似 http://192.168.0.1:2869/upnphost/udhisapi.dll?content=uuid:fb6bbc52-aa87-4939-a4fa-289d3bbccc61 的数据
 
2、得到UPnP设备属性和描述信息:

TCP 往前面得到的ip/port发一个GET的HTTP包,也就是类似在浏览器中访问http://192.168.0.1:2869/,分析返回的数据,即可得到UPnP的一些描述信息,和 controlurl。
  
3、对UPnP设备发送控制命令,查询属性。(比如下达增删端口映射的命令)

TCP 往 controlurl 发送一定规格的指令数据即可,比如增加端口是 AddPortMapping,再填一些参数就可以,删除端口是 DeletePortMapping。也可以往这个 controlurl 查询一下,看是否支持一些指令操作,和查询一些属性等等
   
    这些操作都是用TCP或UDP发送HTTP包,包内是XML格式的数据,返回的也是标准的HTTP返回,表明成功失败等等。
    UPnP只不过是TCP/UDP、XML、HTTP,还有其它通用协议的综合运用,并没有创新什么新协议。端口映射,只是UPnP一个小的功能模块,严格来说,不算是UPnP特别指定要的,只不过是网关设备支持UPnP操作,提供了增删端口映射的功能调用而已。
    UPnP的一个目标是各种设备能自动的互相发现、查询、访问和操作(比如数码相机、电脑、打印机、数码像框都能自动的互相发现和访问对方的相片,等等),具体我也没深究,有兴趣的话查一下资料。

上面所说的 UPnP 端口映射代码,大家可以在 eMule 0.46a 的源码里找到,它跟比特精灵所公开的源码基本一样,不知是谁抄谁的了,哈

UPnP端口映射的实现[转载]相关推荐

  1. UPNP端口映射Android实现

    这一段一直研究UPNP协议,搞得头都快炸了,找到一个upnp的jar包,感觉对发现InternetGatewayDevice非常方便.下面写了一个小程序,是发现路由器并进行端口映射的. package ...

  2. UPNP端口映射全过称

    学习资料下载:http://download.csdn.net/detail/yangguangmeng/7218265 UPNP的全称是 Universal plug-and-play( 通用即插即 ...

  3. UPnP 端口映射原理

    文章目录 一. 简介 二. 协议 2.1. 发现 2.2. 控制 三. miniupnp 3.1. upnpc 常用命令介绍 3.2. miniupnp 映射部分代码简单逻辑 参考 一. 简介 实现 ...

  4. UPnP端口映射设置操作

    目标:对UPnP服务的端口映射增删改查操作. 参考:这篇文章原理说的比较清楚. 方案一 使用gupnp-tools,gupnp是一个upnp开发库,其中gupnp-tools带了一个工具gupnp-u ...

  5. 命令查看mysql端口映射_【转载】烂泥:如何利用telnet命令检测端口映射是否成功...

    本文由男装世家提供友情赞助,首发于 为了测试在路由器上端口映射设置没有问题,远程可以通过telnet命令来验证端口是否映射成功,即在dos命令行下输入telnet +路由器WAN口IP +对应的端口号 ...

  6. java upnp 端口映射_路由器 UPnP设置与端口映射操作步骤合集 几种常用猫设置

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 所列如没你需要的猫,可留言 实达_ADSL_2110EH 详细端口映射的设置 假设内网IP为:192.168.10.2 在IE中用http://192.1 ...

  7. P2P端口映射 UPnP设置功能和使用详解

    P2P端口映射 UPnP设置功能和使用详解     在网上看了很多关于如何打开UPnP功能的文章,发现竟然没有一篇文章能把整个UPnP的设置过程介绍全的,都是只讲到一部分.所以决定写篇文章,至少把设置 ...

  8. BT下载教程之UPnP功能使用、BT端口映射、内网外网之完全解析

    以下是微软官方网站对UPnP的解释: 问:什么是 UpnP? 答:通用即插即用 (UPnP) 是一种用于 PC 机和智能设备(或仪器)的常见对等网络连接的体系结构,尤其是在家庭中.UPnP 以 Int ...

  9. 工业路由器的端口映射方法 NAT/DMZ/UPNP

    NAT英文全称是"Network Address Translation",中文意思是"网络地址转换"或者说端口映射,顾名思义,它是一种把内部私有网络地址(IP ...

最新文章

  1. Linux环境变量设置中配置文件分析(/etc/profile,~/.bashrc等)(转)
  2. leetcode算法题--子集
  3. VLAN配置命令列表
  4. java 连接sqlserver2005_JAVA用jdbc连接SQLServer2005
  5. Intellij Idea 使用
  6. 上海事业评中级职称还要考计算机,上海职称评审-事业单位如何评职称
  7. cytoscape操作经验
  8. 实用的网站***步骤
  9. 防止android应用的内存泄露
  10. 专业的raw图像处理编辑工具Capture One Pro 22 for Mac
  11. 红帽全年总营收24亿美元,同比增长18%
  12. java获取字符串实际编码_Java获取字符串编码方式
  13. Java:HttpClient篇,HttpClient4.2在Java中的几则应用:Get、Post参数、Session(会话)保持、Proxy(代理服务器)设置,多线程设置......
  14. 后缀mcp用什么软件打开_如何打开MCP文件?
  15. android之仿朋友圈程序,Android仿微信朋友圈添加图片的实例代码
  16. 现在1分、2分、5分硬币的收藏价格如何呢?
  17. 雅虎谷歌恩怨回顾:养虎为患自食苦果
  18. ensp系统服务器是哪个,ensp主机和服务器配置
  19. 计算机图像分析系统属于,智能图像分析系统
  20. rk3399 hdmi HDCP key烧录

热门文章

  1. 高房楼噪音测试软件,高层住宅噪音测试:11层分贝数高于其他楼层
  2. linux 查看nc文件,linux下nc的使用
  3. TEC温控器 半导体制冷片驱动模块 高精度温度控制器
  4. JS-Ajax(2021-12-10)
  5. linux 电池管理软件,在Linux中下载并安装TLP电源管理工具
  6. js脚本锁计算机软件,[计算机软件及应用]JS脚本大全各种常用脚本.doc
  7. 集成科大讯飞TTS【离线语音合成服务】
  8. CBCT重建保姆级入门(一)
  9. 网站推广120种实用方法系列连载
  10. 瑞云服务云|天正电气服务云系统项目顺利验收