精华内容
下载资源
问答
  • UPNP自动端口映射工具

    2011-07-01 16:54:05
    UPNP自动端口映射工具 UPNP自动端口映射工具 UPNP自动端口映射工具 UPNP自动端口映射工具
  • UPnP自动端口映射工具/内网映射工具包!
  • UPnP自动端口映射工具

    2008-11-23 23:37:56
    UPnP自动端口映射工具,UPnP自动端口映射工具,UPnP自动端口映射工具,
  • 内网映射工具--UPnP自动端口映射工具
  • UPNP自动端口映射工具,可以将路由器UPNP开启
  • UPNP自动端口映射工具--安全中国anqn.com
  • 本文为你讲解如何使用UPnP协议实现网络设备自动配置路由器进行端口映射
  • 需要做端口映射的一定很想下载这个软件把,自己找了好久才下载到的,有需要的可以下载,绝对可以用,本人自己就用过,所以和大家分享
  • UPNP的全称是 Universal plug-and-play( 通用即插即用).UPnP 是针对智能家电、无线设备以及各种外观尺寸的个人电脑的普遍对等(peer-to-peer)网络连接而设计的一种... 我们这里用到的自动端口映射只是UPNP的一个小
    UPNP的全称是 Universal plug-and-play( 通用即插即用).UPnP 是针对智能家电、无线设备以及各种外观尺寸的个人电脑的普遍对等(peer-to-peer)网络连接而设计的一种架构。它旨在为家庭、小型企业、公共场 所中或连接到互联网的ad-hoc
     网或未管理网络提供易于使用、灵活且基于标准的连接。(引自这里.)
    

      我们这里用到的自动端口映射只是UPNP的一个小应用。按照UPNP的相关规范,UPNP网络的第0步是寻址(获得一个IP地址,在我要解决的问题中这不是一个问题。)       
        第1步是发现,控制点在网上搜索感兴趣的设备,而设备向网络中的控制点宣告其服务。对于自动端口映射来说就是发现带UPNP功能的路由器。

     发现这个过程主要有两步。第一,使用数据报套接字向239.255.255.250:1900,发送一条多播请求,格式如下

    M-SEARCH * HTTP/1.1
    HOST: 239.255.255.250:1900
    MAN:"ssdp:discover"
    MX:3
    ST:UPnP:rootdevice

          这个多播请求的含义如下:M-SEARCH SSDP协议定义的搜索请求方法。HOST必须是这个多播地址。MAN的值也必须是"ssdp:discover" 不可少了双引号。MX的含义是最长等待时间,可以自己设置。ST表示search target 搜索目标。我们在这里用找根设备。另外在编程中我们要在每一行后面加上"rn" 表示换行。(详见源码 UPNPNAT.discovery()).

          第二步,如果你的网络存在一个UPNP设备的话,为了被找到,设备必须向发送查找请求的多播通道的源 IP 地址与端口发送响应信息。所以你可以从239.255.255.250:1900这个地址接收到响应消息。类似下面的消息。

    HTTP/1.1 200 OK
    CACHE-CONTROL: max-age=100
    DATE: Sun, 15 Jan 2006 06:51:02 GMT
    EXT:
    LOCATION: http://192.168.14.1:1900/igd.xml
    SERVER: TP-LINK Wireless Router WR541G/5, UPnP/1.0
    ST: upnp:rootdevice
    USN:uuid:upnp-InternetGatewayDevice-192168141678900001::upnp:rootdevice

          接下来我们要从里面获得我们要的消息。首先,我们必须找到" 200 OK ",说明没有错误发生,否则一切免谈。接着,我们要找到LOCATION项,获得设备描述URL。(程序中的处理归根到底就是一个子字符的查找。)

           到这里,我们的第一步“发现”完成。


       第2步是描述。在第1步中我们往往能获得一个设备的描述URL,在第2步中我们要通过一个URL,下载一个XML文件。并从中找到有关设备的类型,服务类型,控制URL,事件触发URL等。

    我们同样分两步进行,首先下载设备描述文件。(请看源码中UPNPNAT::get_description()函数)
        1.解析描述文件的URL,获得主机(host)、端口(port)、路径(path).(parseUrl函数) 
        2.连接到host:port (tcp_connect 函数)
        3.构造类似

                                                    GET path HTTP/1.1
                                                    Host: host:port
    的信息(第二行下要一个空行),并通过刚才的TCP 套接字,发送到路由器。(sprintf ,send 函数).
        4.接收数据,我使用flag为 MSG_WAITALL的recv函数,函数一直阻塞直到数据全部读完。 数据最终保存在std::string description_info中。
        我想通过浏览器下载这个文件的过程是类似的吧。
     
        然后,解析这个XML文件。(请看源码 中UPNPNAT:: parser_description()函数)
    我们找到"root"的"deviceType"是"urn:schemas-upnp-org:device:InternetGatewayDevice:1"的"device" childNode ,获得这个"device"的"deviceList",记为A。
        找到A的"deviceType"是"urn:schemas-upnp-org:device:WANDevice:1"的"device" childNode ,获得这个"device"的"deviceList",记为B。
        找到B的"deviceType"是"urn:schemas-upnp-org:device:WANConnectionDevice:1"的"device" childNode ,获得这个"device"的"serviceList",记为C。
        找到C的"serviceType"是"urn:schemas-upnp-org:service:WANIPConnection:1" 或"urn:schemas-upnp-org:service:WANPPPConnection:1" 的"service"  childNode ,记为D.
        获得D的"controlUrl"保存在std::string control_url中。
        但是这里获得control_url一般为相对URL,所以要从"root"下面,找到"URLBase"的值,(如果是空,则用describe_url的"htpp://xxx.xxx.xxx.xxx:xxxx"部分代替.)
        最后在相对的control_url前加上URLBasr 获得完整的control_url.
     
        至此,第二步“获得控制URL”完成。
                                          

        第3步是控制。通过第2步获得的控制URL,通过向其发送控制消息(同样用XML描述)来实现某些功能。对于自动端口映射来说就是查看、增加、删除等。

    在这里我先把各种控制信息的格式说明一下。(下面的rn都是表示换行,我输入不了反斜杠。)

    • 增加端口映射。 "AddPortMapping"
    • "<NewRemoteHost></NewRemoteHost>rn"                              "<NewExternalPort>ExternalPort</NewExternalPort>rn"                               "<NewProtocol>Protocol</NewProtocol>rn"                                      "<NewInternalPort>InternalPort</NewInternalPort>n"
      "<NewInternalClient>InternalClient</NewInternalClient>rn"                 
      "<NewEnabled>1</NewEnabled>rn"
      "<NewPortMappingDescription>PortMappingDescription"       "</NewPortMappingDescription>rn"       
      "<NewLeaseDuration>LeaseDuration</NewLeaseDuration>rn"
    • 删除端口映射 "DeletePortMapping"
    • "<NewRemoteHost></NewRemoteHost>rn" "<NewExternalPort>ExternalPort</NewExternalPort>rn"   "<NewProtocol>Protocol</NewProtocol>rn"
    • 获得端口映射信息 "GetGenericPortMappingEntry"
    • "<NewPortMappingIndex>PortMappingIndex</NewPortMappingIndex>"  "<NewRemoteHost></NewRemoteHost>rn"   "<NewExternalPort></NewExternalPort>rn" "<NewProtocol></NewProtocol>rn"     "<NewInternalPort></NewInternalPort>rn" "<NewInternalClient></NewInternalClient>rn" "<NewEnabled>1</NewEnabled>rn"  "<NewPortMappingDescription>"                                          "</NewPortMappingDescription>rn"            "<NewLeaseDuration></NewLeaseDuration>rn"

         其中斜体部分需要在编程是填入的。ExternalPort 外部端口。InternalPort内部端口。这 两者一般就填映射的端口。Protocal 填TCP或UDP。InterClient 一般就是本地IP地址。PortMappingDescription 填写端口映射的描述,比如什么程序建立了这个端口。LeaseDuration 是映射的持续时间,用0表示不永久。PortMappingIndex 是端口映射索引,路由上第几个映射。

         我们再来看下面这个XML文档结构。

         "<?xml version="1.0" encoding="utf-8"?>rn" 
         "<s:Envelope xmlns:s="
         ""http://schemas.xmlsoap.org/soap/envelope/" "
         "s:encodingStyle="                                   
         ""http://schemas.xmlsoap.org/soap/encoding/">rn"
         "<s:Body>rn" 
         "<u:actionName xmlns:u="serviceType">rn"
         "actionParams</u:actionName>rn" 
         "</s:Body>rn"
         "</s:Envelope>rn"

         我们在actionName 处填入"AddPortMapping" "DeletePortMapping" "GetGenericPortMappingEntry"。serviceType 处填入设备的服务类型。"urn:schemas-upnp-org:service:WANIPConnection:1"或"urn:schemas-upnp-org:service:WANPPPConnection:1"。actionParams 填入上面的各种控制信息。

        最后在前面加上HTTP头。

        "POST path HTTP/1.1rn"
        "HOST: host:portrn"      
        "SOAPACTION:"serviceType#actionName"rn"  
        "CONTENT-TYPE: text/xml ; charset="utf-8"rn"
        "Content-Length: contentLength rnrn"

        path host port 意思很明显。contentLength面那个XML文档的长度。

      然后连接到host:port,发送到整个信息即可完成控制            

        第4步事件触发和第5步展示在自动端口映射没用用到。

    展开全文
  • 不需开端口映射发 不会的可以问我 334306329
  • 文章开始之前让我们设想下面的几个情形:我们在办公室内就能访问到生产车间的网络摄像机,而无需到监控室查看生产情况;...端口映射就是路由器将外网某一个端口与内网中某个设备的IP地址和端口号建立起一一对应关
    

    文章开始之前让我们设想下面的几个情形:我们在办公室内就能访问到生产车间的网络摄像机,而无需到监控室查看生产情况;在下班之前,或在回去的路上,就可以先打开家里的空调器和厨房设备,等进入家门,立刻就是一个温度宜人的环境――厨房里的饭也做好了;我们想在电视机上回味一下几天前在景区拍的照片,把相机或者DV联网就可以了,无需再去拷贝。工作生活都如此方便,将是一个很惬意的事情。

    实现这些场景的网络设备都要基于一种叫端口映射的网络技术。端口映射就是路由器将外网某一个端口与内网中某个设备的IP地址和端口号建立起一一对应关系。内网主动访问外网时,路由器主动建立了映射关系,内外网间就可以通信。但是外网要主动访问内网是不可行的,因为不知道内网的设备IP和端口,只能和路由器外网通信。路由器可以进行手动配置端口映射,但是便携式设备经常移动,内网的IP地址也是不是固定的,每次使用都要手动配置路由器显然是个麻烦的事情。本文就为你讲解如何使用UPnP协议实现网络设备自动配置路由器进行端口映射。

    一、UPnP协议简介

    UPnPUniversal Plug and Play,即插即用)是各种各样的智能设备、无线设备和个人电脑等实现遍布全球的对等网络连接(P2P)的结构。使用UPnP达到的效果是任何设备一旦连接上网络,所有在网络上的设备马上就能知道有新设备加入,这些设备彼此之间能互相通信,更能直接使用或者控制它,一切都不需要人工设置。

    1.1 UPnP结构

    服务、设备和控制点是UPnP网络的基本组件,如图1

     图片2

    1 UPnP组件图

    • 设备(Device):家电、手机、智能设备、无线设备、电脑等等都可以称之为设备。
    • 服务(Service):是指设备在不同情况下的动作和设备的状态。
    • 控制点(Control Point):指的是可以发现并控制其他设备的控制设备。在UPnP网络中,设备可以和控制点合并为同一台设备。

       

      1.2  UPnP工作流程

    UPnP定义了设备之间、设备和控制点、控制点之间通信的协议。完整的UPnP有设备寻址、设备发现、设备描述、设备控制、事件通知和基于HTML的描述等几部分构成。UPnP协议最底层是TCP/IP协议,UPnP实现的工作流程如图2所示:

    图片1

    2 UPnP实现的工作流程

    寻址:就是找个可用IP地址。一般都采用DHCP服务,使设备自动得到一个IP地址。

    发现:加入到网络中,设备会定期的以组播的方式表明自身的存在以及告知(Advertise)它提供的服务;控制点则是网络中广播search packets来发现具有某些服务的设备,具有该服务的设备以单播的方式应答。

    描述:控制点可以从发现消息中得到设备描述的URL(可以认为是浏览器地址),通过URL取回设备描述的信息。

    控制、事件和展示则是控制点获取描述之后进行的各种通信交互。其中控制是控制点对设备进行的操作;事件为设备向控制点定期发送其感兴趣的信息,展示可以认为是设备的一个功能,它给控制点一个URL,可以登录到设备的网页服务器。

    二、UPnP路由器端口映射控制点在W5500实现

    2.1 实验硬件平台和实验目的

    通过以上讲解,相信大家对UPnP也有一定认识了,下面就让我们开始我们实验之旅。我们选用的实验平台为WIZnet W5500EVB,它使用USB口进行供电和调试,单片机为STM32F103RCT6,网络芯片为WIZnet硬件TCP/IP的以太网芯片W5500

    我们的实验目的就是让W5500Control Point)控制路由器(Device)执行端口映射服务(Service),让外网中的PC2可以与内网中的W5500EVB板建立连接。如图3所示 PC2往路由器36.36.141.53:12222 发送的信息,将被转发到内网192.168.1.110:5000

    图片3

    3端口映射网络图

    2.2  UPnP自动端口映射软件实现流程

    本文中W5500将作为控制点的角色出现,并不需要实现展示的功能,在UPnP协议上仅实现了Search的过程,对网络中的Advertise消息不做处理。下面让我看看程序是如何实现的,首先看一下整个程序流程图如图4,对整个程序有个大致的了解:

     图片4

    4 主程序流程图

    如图所示:

    程序首先进行初始化,初始化CPU资源和W5500然后使用DHCP协议自动获取IP,如果获取失败就设定为固定IPDHCP的过程在此不再详细介绍。

    获取IP地址后,先使用SSDP发现设备。W5500打开本地一个socket,再使用UDP组播地址(255.255.255.255)发送SSDP M-SEARCH信息搜索在相同子网中的IGDInternet Gateway Device),设备收到SSDP M-SEARCH信息后会回复数据包。如图5 所示:

    图片5

    5发送SSDP广播包和收到回复信息

    通过解析收到数据包我们可以得到:LOCATION:设备描述文件的URL。通过Location信息,我们能够获得IGDIP地址和端口号。利用这个IP地址和端口号生成HTTP GET HeaderW5500重新打开一个Socket,然后再将其发送给IGD来获取IGD的服务描述。当IGD接收到HTTP GET Header后,IGD将会让W5500_Control_Piont获知它的设备描述和服务描述。发送的数据包如图6

    6还显示了设备回复的部分信息,从中我们可以看到设备描述和服务描述,WANIPConnection对应端口映射服务,可以看到该路由设备有该项服务。在WANIPConnection服务描述中可以得到Control URLeventSubURL,一个用来控制,一个用来订阅。

     图片6

    6发送获取描述单播包和收到的回复信息

    执行完上面的发现设备后在串口上为用户提供了一个菜单页面,通过在菜单中输入命令,我们可以交互添加端口和删除端口。

    首先是添加端口,利用IGDIP地址、端口号以及控制URL来完成XML,然后通过HTTP POST method-basedSOAP执行AddPortMapping操作。其执行过程如图7流程图所示:

    图片7

    7 AddPortProcess()函数流程图

    SOAP描述中可以看到ExternalPortProtocolInternalPort以及控制点IP地址等信息,如图8 AddPort的报文所示。

    IGD在收到这样的控制请求后,会给出一系列应答,如果应答中包含收到“<UDN>uuidAddPort Success!!”后,表明端口映射添加成功。添加端口映射成功后,就可以在外网访问内网中指定IP地址和端口了,如果添加了TCP端口映射,可以建立连接并发送数据测试。

     图片8

     

    8 AddPort的报文

    删除端口与添加端口格式一样,都是通过HTTP POST method-basedSOAP执行DeletePortMapping操作,只需要ExternalPortProtocol两个参数即可。在此不再详细叙述,请参考我们的程序代码下载链接:http://pan.baidu.com/s/1roc70

    自动端口映射功能测试

    程序讲解完毕后将讲解如何测试我们写的W5500EVB程序,看是不是能够达到我们的实现目的,实现控制路由器端口映射功能。

    第一步:开启路由器UPnP。登陆路由器控制界面,打开“转发规则->UPnP 设置”,如果UPnP状态没有开启,则需要开启一下。

    第二步:将编译好的可执行文件下载到开发板中,接网线到路由器上,接USB调试线到PC端,打开串口助手对应的COM口以便查看调试信息和进入串口命令菜单。按复位键,程序开始执行,经过串口打印信息,我们看到DHCP获取正确IP地址,发现UPnP设备、获得描述,设置事件都已完成,如图9所示:

     图片9

    9 UPnP执行成功打印输出

    接下来就是我们的串口操作菜单,如图10

    图片10

    10 程序完成初始化后的菜单界面

    第三步:基本命令输入。按照菜单提示进行命令输入,在此1-4就是基本的串口命令操作:打开/关闭led,设置/查看网络配置;5 6步就是开启TCP UDP回环测试。TCP回环实际上就是开启了一个TCP Server,同一网段的TCP Client可以直接与其建立通信,可发送数据到此TCP ServerTCP Server会回复相同的数据。串口基本配置和内网回环测比较简单,在此不再贴图查看。

    第四步:配置TCP端口映射。在串口调试助手上输入 7,进行配置选项,按照菜单提示,我们端口映射,外网端口号为12222,内网端口号为5000,添加成功后会提示AddPortSuccess。如图11所示:

     图片11

    11添加端口映射成功后串口打印出信息

    刷新第一步进入的UPnP状态设置和设备列表,可发现控制节点W5500_Control_Point 已经加入内部端口号为5000,外部端口53F712222。可见我们已经成功用UPnP协议对路由器端口进行了映射。而且看到Thunder5在这里也有UDP /TCP 端口映射列表。如图12所示。在这里也说一下,我们常用的P2P软件,Thunder PPlive等都支持UPnP端口映射。

     图片12

    12添加端口映射后路由器端口映射表

    第五步,用外网测试配置好的端口映射。

    如图3端口映射网络图,W5500PC2不在同一个网络中,如果不进行端口映射,PC2不可能连接到W5500 TCP Server。首先我们在串口界面上输入5进入TCP Server回环程序。接下来查看路由器的外网IP可见外网IP为“36.36.141.53”,其为公网IP。我们任意找一台PC用网络调试助手建立一个TCP Client ,去连接我们刚才配置好的服务器IP为“36.36.141.53”端口为“12222”。连接成功后,发送LED_ON(红色为发送的数据),通过网络调试助手我们可以看到收到LED_ON(黑色为收到的数据),证明回环已建立。这就如同,无论我们在什么地方都能对我们的设备进行连接和控制。如图13所示:

     图片13

    13外网连接到内网并进行数据回环测试

             同时通过EVB上的LED,我们可以发现,LED灯可以根据我们输入的指令执行亮灭动作。如图14 所示:

     图片14

    14 LED根据命令进行亮灭

    第六步:删除已添加的端口。在菜单界面中输入8,然后按指示删除刚才的端口,刷新路由器映射表,发现已经没有这个应用了。

    总结

    目前,实现各种设备的互联互通已经成为人们的迫切需求,而实现这一目的的关键是家庭网络的中间件技术,最有前景的就是今天讲的UPnP,因此支持UPnP标准的设备越来越多。本文通过UPnP部分协议实现了设备的自动端口映射,方便设备直接部署在内网中,无需客户去配置,就能在外网中直接访问内网设备,查看或者配置设备信息。作为一个UPnP协议的一个简单应用,希望能给大家一个思路。

    展开全文
  • UPNP是一种即插即用的网络端口映射的协议,这是由delphi写的一个UPNP端口自动映射源代码
  • 新世纪UPNP端口自动映射器 新世纪UPNP端口自动映射
  • UPNP端口映射

    2012-02-15 22:27:26
    1、对于一台内网电脑,UPnP功能可以使网关或路由器的NAT模块做自动端口映射,将你程序所监听的端口从网关或路由器映射到内网电脑上。 2、网关或路由器的网络防火墙模块开始对Internet上其他电脑开放这个端口。 3、...
  • 案例分析Upnp协议实现自动端口映射,案例适用,介绍的比较详细
  • UPnP 内网端口映射工具VC源代码

    热门讨论 2012-01-06 10:00:39
    路由自动映射工具源码,将内网的机器上使用的软件自动映射到路由的UPUP服务器上,vc编写。
  • upnp 端口映射

    2019-12-23 14:47:34
    外面访问你不用再端口映射了。 p2p是个概念,就是不过服务器,点对点(peer 2 peer)传数据,和upnp本质上没联系。而且p2p也没有规定协议,你随便自己定义协议就可以。 关于upnp你理解的没错,就是抢个端口,只不过这...

    一般讲upnp的用途,就是用来NAT后的设备,到NAT申请一个端口,让NAT外的可以访问,说白了就是你的设备用upnp协议去注册一下这么个过程。外面访问你不用再端口映射了。
    p2p是个概念,就是不过服务器,点对点(peer 2 peer)传数据,和upnp本质上没联系。而且p2p也没有规定协议,你随便自己定义协议就可以。

    关于upnp你理解的没错,就是抢个端口,只不过这个过程对用户来讲是“自动的”,所以就是所谓的即插即用。

    简介
    处于内网的机器,因为没有一个公有的Ip,外面是无法主动连接到内网的设备。如果希望外面可以连接到处于内网的指定设备。UPNP端口映射是一个较简易的方案。当然这并不是唯一方案,穿透和转发也是一个较普遍的方式,本文只讨论UPNP端口映射的实现方式。UPNP端口映射将一个外部端口映射到一个【内网Ip:端口】,当然也指明了使用的协议是UDP,TCP,还是此映射同时适应UDP和TCP。

    UPNP使用的常用命令:
    “GetStatusInfo”,
    “GetExternalIPAddress”,
    “AddPortMapping”,
    “GetSpecificPortMappingEntry”,

    1. 建立UDP socket,并绑定到一个自定的端口
      2、通过UDP发送组播包:M-search,端口1900,包的内容如下所示
      M-SEARCH * HTTP/1.1
      HOST: 239.255.255.250:1900
      ST: urn:schemas-upnp-org:device:InternetGatewayDevice:1
      MAN: “ssdp:discover”
      MX: 2
      3、接收M-search的回应,并做相应的处理
      HTTP/1.1 200 OK
      CACHE-CONTROL: max-age=100
      DATE: Thu, 01 Jan 1970 21:39:02 GMT
      EXT:
      LOCATION: http://192.168.1.1:1900/igd.xml
      SERVER: Mercury Router MR804 Router, UPnP/1.0
      ST: urn:schemas-upnp-org:device:InternetGatewayDevice:1
      USN: uuid:6ec73f58-1dd2-11b2-9465-e6838914e4d9::urn:schemas-upnp-org:device:InternetGatewayDevice:1
      1》获取path(lacation) ,此为 : /igd.xml #path#
      端口为: 1900 (有些路由并不一定是UPNP的端口1900) #ServerPort#
      ip:192.168.1.1 (有时候我们的内网中可能存在多个路由,并且都开启了upnp服务,这时候我们要判断哪一个才是网关路由,并且只处理网关路由的回应)
      2》获取ST,此为:urn:schemas-upnp-org:device:InternetGatewayDevice:1 #ST#
      4、建立tcp连接,–》【网关:ServerPort】
      注意:有些路由不支持keep-alive特性,做每一次交互都做一次连接
      5、获取path位置的xml数据:
      GET /igd.xml HTTP/1.1
      Host: 192.168.1.1:1900
      Connection: Close
      User-Agent: MSWindows/6.1.7601, UPnP/1.0, MiniUPnPc/1.6
      6、接收并分析得到的xml数据
      HTTP/1.1 200 OK
      CONTENT-LENGTH: 2733
      CONTENT-TYPE: text/xml
      DATE: Thu, 01 Jan 1970 21:39:02 GMT
      LAST-MODIFIED: Tue, 28 Oct 2003 08:46:08 GMT
      SERVER: Mercury Router MR804 Router, UPnP/1.0
      CONNECTION: close
    <?xml version="1.0"?> 1 0 urn:schemas-upnp-org:device:InternetGatewayDevice:1 http://192.168.1.1:80 Mercury Router MR804 Mercury http://www.mercurycom.com.cn MR804 8.0 MR804 8.0 uuid:6ec73f58-1dd2-11b2-9465-e6838914e4d9 123456789001 urn:schemas-upnp-org:service:Layer3Forwarding:1 urn:upnp-org:serviceId:L3Forwarding1 /l3f /l3f /l3f.xml urn:schemas-upnp-org:device:WANDevice:1 WAN Device Mercury http://www.mercurycom.com.cn WAN Device WAN Device 1 12345678900001 uuid:80104052-1dd2-11b2-a699-e6838914e4d9 123456789001 urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1 urn:upnp-org:serviceId:WANCommonInterfaceConfig /ifc /ifc /ifc.xml urn:schemas-upnp-org:device:WANConnectionDevice:1 WAN Connection Device Mercury http://www.mercurycom.com.cn WAN Connection Device WAN Connection Device 1 12345678900001 uuid:8c99e7b0-1dd2-11b2-8291-e6838914e4d9 123456789001 urn:schemas-upnp-org:service:WANIPConnection:1 urn:upnp-org:serviceId:WANIPConnection /ipc /ipc /ipc.xml 获取端口映射服务urn:schemas-upnp-org:service:WANIPConnection:1 的控制路径:/ipc #ControlUrl# 7、发送获取外网IP的命令请求:GetExternalIPAddress POST /ipc HTTP/1.1 Host: 192.168.1.1:1900 User-Agent: MSWindows/6.1.7601, UPnP/1.0, MiniUPnPc/1.6 Content-Length: 285 Content-Type: text/xml SOAPAction: "urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" Connection: Close Cache-Control: no-cache Pragma: no-cache <?xml version="1.0"?>

    <s:Envelope xmlns:s=“http://schemas.xmlsoap.org/soap/envelope/” s:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”><s:Body><u:GetExternalIPAddress xmlns:u=“urn:schemas-upnp-org:service:WANIPConnection:1”></u:GetExternalIPAddress></s:Body></s:Envelope>
    8、分析接收数据
    HTTP/1.1 200 OK
    CONNECTION: close
    SERVER: Mercury Router MR804 Router, UPnP/1.0
    CONTENT-LENGTH: 404
    CONTENT-TYPE: text/xml; charset=“utf-8”

    <?xml version="1.0"?>

    <SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”>
    SOAP-ENV:Body
    <u:GetExternalIPAddressResponse xmlns:u=“urn:schemas-upnp-org:service:WANIPConnection:1”>113.119.126.148</u:GetExternalIPAddressResponse></SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

    解析得到NewExternalIPAddress标签中的外网ip:113.119.126.148
    9、发送命令获取指定的外部端口的详细信息{内部端口,ip,协议,外部端口,。。。}
    使用命令GetSpecificPortMappingEntry,并在NewExternalPort指定要查询的外部端口
    POST /ipc HTTP/1.1
    Host: 192.168.1.1:1900
    User-Agent: MSWindows/6.1.7601, UPnP/1.0, MiniUPnPc/1.6
    Content-Length: 399
    Content-Type: text/xml
    SOAPAction: “urn:schemas-upnp-org:service:WANIPConnection:1#GetSpecificPortMappingEntry”
    Connection: Close
    Cache-Control: no-cache
    Pragma: no-cache

    <?xml version="1.0"?>

    <s:Envelope xmlns:s=“http://schemas.xmlsoap.org/soap/envelope/” s:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”><s:Body><u:GetSpecificPortMappingEntry xmlns:u=“urn:schemas-upnp-org:service:WANIPConnection:1”>5500TCP</u:GetSpecificPortMappingEntry></s:Body></s:Envelope>
    10、接收数据并并分析指定的端口有没有被映射
    HTTP/1.1 200 OK
    CONNECTION: close
    SERVER: Mercury Router MR804 Router, UPnP/1.0
    CONTENT-LENGTH: 574
    CONTENT-TYPE: text/xml; charset=“utf-8”

    <?xml version="1.0"?>

    <SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”>
    SOAP-ENV:Body
    <u:GetSpecificPortMappingEntryResponse xmlns:u=“urn:schemas-upnp-org:service:WANIPConnection:1”>80192.168.1.831JUAN UPNP0</u:GetSpecificPortMappingEntryResponse></SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    如上所示:外部端口5500已经做了映射,映射到{192.168.1.83:80,TCP}
    1.1》映射到期望的客户端
    1.2》没有映射到期望的客户端,如映射到别的ip
    2》未映射,会返回500错误:HTTP/1.0 500 Internal Server Error
    HTTP/1.1 500 Internal Server Error
    CONTENT-LENGTH: 481
    CONTENT-TYPE: text/xml; charset=“utf-8”
    DATE: Thu, 01 Jan 1970 00:00:02 GMT
    EXT:
    SERVER: Mercury Router MR804 Router, UPnP/1.0

    <SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”>
    SOAP-ENV:Body
    SOAP-ENV:Fault
    SOAP-ENV:Client
    UPnPError


    402
    Invalid ExternalPort


    </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    如果已经做了期望的映射,则进入等待下一轮的更新
    否则做端口映射
    11、发送命令添加端口映射:
    POST /ipc HTTP/1.1
    Host: 192.168.1.1:1900
    User-Agent: MSWindows/6.1.7601, UPnP/1.0, MiniUPnPc/1.6
    Content-Length: 589
    Content-Type: text/xml
    SOAPAction: “urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping”
    Connection: Close
    Cache-Control: no-cache
    Pragma: no-cache

    <?xml version="1.0"?>

    <s:Envelope xmlns:s=“http://schemas.xmlsoap.org/soap/envelope/” s:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”><s:Body><u:AddPortMapping xmlns:u=“urn:schemas-upnp-org:service:WANIPConnection:1”>5500TCP80192.168.1.831JUAN UPNP0</u:AddPortMapping></s:Body></s:Envelope>
    12、接收并分析是否映射成功:
    HTTP/1.1 200 OK
    CONNECTION: close
    SERVER: Mercury Router MR804 Router, UPnP/1.0
    CONTENT-LENGTH: 332
    CONTENT-TYPE: text/xml; charset=“utf-8”

    <?xml version="1.0"?>

    <SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”>
    SOAP-ENV:Body
    <u:AddPortMappingResponse xmlns:u=“urn:schemas-upnp-org:service:WANIPConnection:1”></u:AddPortMappingResponse></SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    返回HTTP/1.1 200 OK,可见操作成功,进入等待下一轮的更新

    展开全文
  • UPnP基本原理以及在NAT中的应用 案例分析Upnp协议实现自动端口映射 转载于:https://www.cnblogs.com/liyou-blog/p/4421549.html

    UPnP基本原理以及在NAT中的应用

    案例分析Upnp协议实现自动端口映射

     

    转载于:https://www.cnblogs.com/liyou-blog/p/4421549.html

    展开全文
  • UPnP端口映射实用工具

    2015-07-24 00:53:22
    自己用Java实现的UPnP端口映射器,采用了自行实现的UPnP协议栈。 启动start.bat后如果网络上有被可发现的UPnP兼容网关,就可以对其进行动态的端口映射配置。 退出后将会自动删除启动时创建的映射规则
  • UPnP 端口映射

    千次阅读 2007-08-22 15:08:00
    UPnP(Universal Plug and Play),通用即插即用,是一组协议的统称(具体情况请参考微软文档:UPnP NAT Traversal 常见问题),不能简单理解为UPnP=“自动端口映射”。在BitComet下载中,UPnP包含了2层意思: 1....
  • 支持UPnP,很多地方都有说明,这里就不细说,简而言之就是网关可以不需手动设置即自动为某个软件进行端口映射。如果该网关具有该功能,那么他就可以称作支持UPnP。 而允许UPnP框架通过,则是另一个概念。 操作...
  • UPNP端口映射全过称

    千次阅读 2015-05-13 11:57:43
    UPNP的全称是 Universal plug-and-play( 通用即插即用).UPnP 是针对智能家电、无线设备以及各种外观尺寸的个人电脑的普遍对等(peer-to-peer)网络连接而设计... 我们这里用到的自动端口映射只是UPNP的一个小应用。按
  • UPnP端口映射实现过程(一)

    万次阅读 2012-06-12 16:14:34
    对于自动端口映射来说就是发现带UPnP功能的路由器。这一过程主要分两步。第一步,使用数据包套接字向239.255.255.250:1900,发送一条多播请求。 M-SEARCH * HTTP/1.1 (SSDH协议定义的搜索方法请求) HOST: 239....
  • NAT网关添加端口映射

    万次阅读 2009-11-17 17:22:00
    BitComet自动端口映射 BitComet 选项 -> 网络连接中设置允许使用UPnP自动端口映射。公网用户不需要进行端口映射,建议关闭。 注意:用户所使用的宽带路由器/ADSL Modem必须支持UPnP功能,设备是否具备此功能可查阅...
  • 并且在光猫上“高级NAT设置”的“虚拟服务器”做了端口映射, 我手动添加了四个端口映射, 过了一会再去看发现竟然多出了七八个端口映射, 还以为是我的光猫被黑客入侵了, 安全起见,赶紧先关掉光猫断开网络, ...

空空如也

空空如也

1 2 3 4
收藏数 79
精华内容 31
关键字:

upnp自动端口映射