精华内容
下载资源
问答
  • UPNP和端口转发

    千次阅读 2015-07-23 01:03:46
    1.1 What is UPnP? UPnP的概念最早来源于即插即用。即插即用是描述计算机总线特性、设备规格的一个专业术语。利用即插即用可以大大简化系统的整个硬件组成,而不需要再进行物理设备的配置,也避免了解决资源冲突时...

    1. 说明

    1.1 What is UPnP?    
    UPnP的概念最早来源于即插即用。即插即用是描述计算机总线特性、设备规格的一个专业术语。利用即插即用可以大大简化系统的整个硬件组成,而不需要再进行物理设备的配置,也避免了解决资源冲突时用户的干预[1][2]。整个思路就是:只需要在设备中插入,然后就可以使用。

    如今将UPnP将即插即用概念创造性地应用于网络环境下。UPnP可以自动搜索设备类别。它支持零配置,“隐形”网络,以及自动检索功能。这就意味着设备UPnP可以动态加入网络、获得IP地址、传输性能,从而得到当前设备以及其他设备的性能的相关信息——全自动化、完全零配置网络支持。
    【编程】UPNP和端口转发


    UPnP网络应用的步骤

    在UPnP机制下存在6种不同的步骤:

    (1)寻址
    寻址是通过控制点和设备取得网络地址的过程。这些控制点和设备先从DHCP服务器上获得一个IP地址;如果没有可用的IP地址,将会在169.254的子网上随机获取一个自动IP地址。

    注意: 在寻址过程中,AutoIP和DHCP都可以协助UPnP控制点和设备取得一个IP地址。但是DHCP要比AutoIP的更为常用和可靠。所以,在这篇应用手册和基于W5200的模型中,DHCP是获得IP地址的唯一方法。

    (2)搜索

    控制点可以通过搜索来查找对它们有意义的设备。
    当控制点进入网络时,它们以普通或者特殊方式释放search packets来搜索and/or服务的设备。搜索完成后,具有合适服务特性的设备或者子设备就会做出响应。
    同样地,UPnP设备首先将会以规律性间隔的方式在网络上表明自身的存在。控制点监听这些状态,检测这些新的设备并且判断它们在网络上的性能表现。
    网络上的其它UPnP设备将会发出通知表明它们提供的服务将不再有效。

    注意: 在搜索过程中,无论是Searching或者Advertising都可以帮助UPnP控制点来寻找UPnP设备。在Searching和Advertising这两种方法相同的情况下,在这篇应用手册和基于W5200的模型中都是保留了Searching方法,而Advertising方法将被忽略。

    (3)描述

    UPnP发送搜索包,将控制点送到一个它们能够检索Device Description Document(DDD)的位置。
    DDD包括:所有嵌入式设备的概述以及一个服务列表。
    被称做服务控制协议定义(SCPD)一个URL。SCPD描述了控制点如何使用这些设备提供的服务。
    控制和事件URLs:这些URLs表示控制点必须发送命令来配置UPnP设备,并且利用这些设备所提供的服务。
    用来陈述的URL(见第6步).

     (4)控制
     
    控制过程允许控制点向设备发送命令。如之前提到的,在DDD中指定发送命令的URL。

     (5) 事件

    事件过程允许控制点跟踪设备的状态变化。控制点首先订阅合适的服务,随后设备服务中任何状态的变化都会以事件的形式发送给已经订阅的控制点来保证它们的更新。

     (6) 陈述

    控制点能够选择性地为设备显示一个用户的界面。用来陈述的URL是在DDD中已经被指定。陈述页面显示基于HTML的用户界面,这样用户就可以参考and/or设备的状态。所以陈述过程是控制过程和事件过程的补充。

    2. 端口转发和UPnP
    端口转发

    简单来说,端口发送(另一种说法是NAT遍历)功能允许创建TCP和UDP协议映射。这些协议应用于外部因特网网关设备(IGD)端口(称为外部端口)和内部客户机地址。这里的内部客户地址与其中的一个端口相联系(分别称为内部客户机和内部端口)。

    请参考下面的图形来理解端口转发的应用:
    【编程】UPNP和端口转发



    展开全文
  • 有一个IGD-PCP IWF specification试图解决类似的问题,虽然它假设你的"Router 1"支持PCP,而不是UPnP . 因此,让我们尝试从两个简单的UPnP... 在我们的案例中,事件演示也几乎没用 . 因此,需要关注的主要问题...

    有一个IGD-PCP IWF specification试图解决类似的问题,虽然它假设你的"Router 1"支持PCP,而不是UPnP . 因此,让我们尝试从两个简单的UPnP路由器/ NAT设备的纯理论角度来解决这个问题 .

    寻址

    发现

    说明

    控制

    事件

    演示文稿

    对我们来说,寻址并不重要,让我们假设在任何地方使用适当的DHCP并完成它 . 在我们的案例中,事件和演示也几乎没用 . 因此,需要关注的主要问题是发现,描述和控制 .

    发现通过SSDP消息交换工作 . SSDP使用UDP进行传输,端口号为1900(默认情况下)和众所周知的多播地址 .

    描述从设备在发现阶段提供的URL开始,控制点(在我们的例子中是PC)需要在此URL上发出HTTP GET请求,这意味着它使用TCP作为带有设备IP地址的传输协议(单播) .

    控制从设备在其描述中提供的URL开始,并且它在TCP之上的HTTP之上使用SOAP,这反过来也意味着我们的单播IP .

    所以,对于双NAT来说,所有这些意味着在UPnP交互的描述和控制步骤中,我们从PC到路由器1的通信没有问题,因为所有这些只是具有单播IP地址的标准TCP . 但是要进入描述步骤,我们需要有一个路由器1的URL,所以让我们仔细看看如何以正常方式获取此URL .

    有两种主要的发现机制 - 广告(当设备周期性地多播一些关于它的信息时)和搜索(当控制点发送多播搜索消息并且设备通过单播响应回答时) . 显然,默认情况下,路由器2后面的PC无法从路由器1获取组播通告,路由器1无法从PC获取组播搜索消息,所以我们在这里遇到问题,现在的问题是是否有可能没有组播的通信 .

    幸运的是,相同的架构文档说:

    此外,允许控制点将发现消息单播到端口1900上的特定IP地址或由可选的SEARCHPORT.UPNP.ORG头字段指定的端口(为此用途取代端口1900),搜索该特定IP地址的UPnP设备或服务 . ...所有设备应在端口1900上侦听传入的单播搜索消息,或者,如果提供,则在SEARCHPORT.UPNP.ORG头字段中指定端口号,并且如果它们的任何根设备,嵌入式设备或服务与搜索匹配,则应响应发现消息中的条件 .

    这意味着如果你知道路由器1的IP地址(当然是来自路由器2的那个),你可以(最重要的是,规范允许)与单播UDP消息进行通信,这也是NAT友好的,所以不是路由器2后面的PC要做的问题 .

    唯一剩下的就是获得路由器1的IP地址 . 不幸的是,没有简单的标准方法可以做到这一点,但你至少有两个选择:tracerouting(以你想要的任何方式)和暴力IP扫描(最有可能的是,路由器1的潜在IP集合是有限的) .

    现在您可以与路由器1进行通信,但在与其通信时仍然应该记住一件小事 - 在任何内部UPnP消息中,您应该使用路由器2 IP地址(从路由器1侧看到)及其端口 . 与路由器1上的 AddPortMapping 参数的 NewInternalClient 参数一样,您应该使用路由器2 IP . 这个,BTW,提出了一个路由器2 IP的问题,但是你可以通过路由器2 UPnP ExternalIPAddress 变量WANIPConnection service获得(该服务是required for IGDs to implement) .

    所以,总结一下:

    技术上可以做到这一点,虽然我怀疑任何标准库都能为你做到这一点

    你需要的两件事是:

    路由器2 "external" IP,你通过 WANIPConnection 变量 WANIPConnection UPnP服务获得

    路由器1 "internal" IP(来自路由器2侧),需要跟踪路由或扫描

    给定路由器1 IP,您只需要在发现步骤而不是多播时使用单播消息传递

    其他一切都应该正常工作,只需注意在UPnP消息中使用路由器2 "external" IP而不是PC IP

    展开全文
  • upnp 端口映射

    万次阅读 2018-07-10 15:34:25
    当然这并不是唯一方案,穿透和转发也是一个较普遍的方式,本文只讨论UPNP端口映射的实现方式。UPNP端口映射将一个外部端口映射到一个【内网Ip:端口】,当然也指明了使用的协议是UDP,TCP,还是此映射同时适应UDPTCP...

    简介

    处于内网的机器,因为没有一个公有的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"?>
    <root xmlns="urn:schemas-upnp-org:device-1-0">
    <specVersion>
    <major>1</major>
    <minor>0</minor>
    </specVersion>
    <URLBase></URLBase>
    <device>
    <deviceType>urn:schemas-upnp-org:device:InternetGatewayDevice:1</deviceType>
    <presentationURL>http://192.168.1.1:80       </presentationURL>
    <friendlyName            >Mercury Router MR804</friendlyName>
    <manufacturer                         >Mercury</manufacturer>
    <manufacturerURL    >http://www.mercurycom.com.cn</manufacturerURL>
    <modelDescription                       >MR804 8.0</modelDescription>
    <modelName                           >MR804</modelName>
    <modelNumber                             >8.0</modelNumber>
    <UDN>uuid:6ec73f58-1dd2-11b2-9465-e6838914e4d9</UDN>
    <UPC>123456789001</UPC>
    <serviceList>
    <service>
    <serviceType>urn:schemas-upnp-org:service:Layer3Forwarding:1</serviceType>
    <serviceId>urn:upnp-org:serviceId:L3Forwarding1</serviceId>
    <controlURL>/l3f</controlURL>
    <eventSubURL>/l3f</eventSubURL>
    <SCPDURL>/l3f.xml</SCPDURL>
    </service>
    </serviceList>
    <deviceList>
    <device>
    <deviceType>urn:schemas-upnp-org:device:WANDevice:1</deviceType>
    <friendlyName>WAN Device</friendlyName>
    <manufacturer                         >Mercury</manufacturer>
    <manufacturerURL    >http://www.mercurycom.com.cn</manufacturerURL>
    <modelDescription>WAN Device</modelDescription>
    <modelName>WAN Device</modelName>
    <modelNumber>1</modelNumber>
    <modelURL></modelURL>
    <serialNumber>12345678900001</serialNumber>
    <UDN>uuid:80104052-1dd2-11b2-a699-e6838914e4d9</UDN>
    <UPC>123456789001</UPC>
    <serviceList>
    <service>
    <serviceType>urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1</serviceType>
    <serviceId>urn:upnp-org:serviceId:WANCommonInterfaceConfig</serviceId>
    <controlURL>/ifc</controlURL>
    <eventSubURL>/ifc</eventSubURL>
    <SCPDURL>/ifc.xml</SCPDURL>
    </service>
    </serviceList>
    <deviceList>
    <device>
    <deviceType>urn:schemas-upnp-org:device:WANConnectionDevice:1</deviceType>
    <friendlyName>WAN Connection Device</friendlyName>
    <manufacturer                         >Mercury</manufacturer>
    <manufacturerURL    >http://www.mercurycom.com.cn</manufacturerURL>
    <modelDescription>WAN Connection Device</modelDescription>
    <modelName>WAN Connection Device</modelName>
    <modelNumber>1</modelNumber>
    <modelURL></modelURL>
    <serialNumber>12345678900001</serialNumber>
    <UDN>uuid:8c99e7b0-1dd2-11b2-8291-e6838914e4d9</UDN>
    <UPC>123456789001</UPC>
    <serviceList>
    <service>
    <serviceType>urn:schemas-upnp-org:service:WANIPConnection:1</serviceType>
    <serviceId>urn:upnp-org:serviceId:WANIPConnection</serviceId>
    <controlURL>/ipc</controlURL>
    <eventSubURL>/ipc</eventSubURL>
    <SCPDURL>/ipc.xml</SCPDURL>
    </service>
    </serviceList>
    </device>
    </deviceList>
    </device>
    </deviceList>
    </device>
    </root>

    获取端口映射服务<serviceType>urn:schemas-upnp-org:service:WANIPConnection:1</serviceType>

    的控制路径<controlURL>:/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"><NewExternalIPAddress>113.119.126.148</NewExternalIPAddress></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"><NewRemoteHost></NewRemoteHost><NewExternalPort>5500</NewExternalPort><NewProtocol>TCP</NewProtocol></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"><NewInternalPort>80</NewInternalPort><NewInternalClient>192.168.1.83</NewInternalClient><NewEnabled>1</NewEnabled><NewPortMappingDescription>JUAN UPNP</NewPortMappingDescription><NewLeaseDuration>0</NewLeaseDuration></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>
    <faultcode>SOAP-ENV:Client</faultcode>
    <faultstring>UPnPError</faultstring>
    <detail>
    <UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
    <errorCode>402</errorCode>
    <errorDescription>Invalid ExternalPort</errorDescription>
    </UPnPError>
    </detail>
    </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"><NewRemoteHost></NewRemoteHost><NewExternalPort>5500</NewExternalPort><NewProtocol>TCP</NewProtocol><NewInternalPort>80</NewInternalPort><NewInternalClient>192.168.1.83</NewInternalClient><NewEnabled>1</NewEnabled><NewPortMappingDescription>JUAN UPNP</NewPortMappingDescription><NewLeaseDuration>0</NewLeaseDuration></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工作组定义的端口转发概念。最后,这篇文章会说明W5200芯片如何添加删除端口映射。今天为大家分享第一部分,端午节后继续为大家分享后面两部分~希望对大家有帮助~ 1. 说明 1.1 概念 请参考...

    这篇应用文章将会介绍WIZnet W5200芯片和基于W5200的模块上UPnP的一些技术信息。第一,介绍什么是UPnP。第二,介绍UPnP工作组定义的端口转发概念。最后,这篇文章会说明W5200芯片如何添加和删除端口映射。今天为大家分享第一部分,端午节后继续为大家分享后面两部分~希望对大家有帮助~

    1. 说明

    1.1 概念 请参考Wikipedia

    What is UPnP?    

    UPnP的概念最早来源于即插即用。即插即用是描述计算机总线特性、设备规格的一个专业术语。利用即插即用可以大大简化系统的整个硬件组成,而不需要再进行物理设备的配置,也避免了解决资源冲突时用户的干预[1][2]。整个思路就是:只需要在设备中插入,然后就可以使用。

    如今将UPnP将即插即用概念创造性地应用于网络环境下。UPnP可以自动搜索设备类别。它支持零配置,“隐形”网络,以及自动检索功能。这就意味着设备UPnP可以动态加入网络、获得IP地址、传输性能,从而得到当前设备以及其他设备的性能的相关信息——全自动化、完全零配置网络支持。

    1.2 UPnP结构以及UPnP涉及的步骤

    UPnP结构

    TCP由客户端和服务器构成。同样地,UPnP结构也基于设备和控制点:

     设备:

         提供服务

        例如,UPnP DVD播放器是用来提供DVD播放服务的设备。

        记录设备的状态.

        例如,DVD播放器能够记录DVD的播放状态。

    控制点

         控制已经定义的设备来执行相应的服务

    图 1. UPnP网络

    为了能够实现所有的描述,通用即插即主要应用于TCP/IP、DHCP、XML等等现存的一些标准中,从而使这些标准的应用更加广泛。

    UPnP网络应用的步骤

    UPnP机制下存在6种不同的步骤:

    (1)寻址

    寻址是通过控制点和设备取得网络地址的过程。这些控制点和设备先从DHCP服务器上获得一个IP地址;如果没有可用的IP地址,将会在169.254的子网上随机获取一个自动IP地址。

    注意: 在寻址过程中AutoIPDHCP都可以协助UPnP控制点和设备取得一个IP地址。但是DHCP要比AutoIP的更为常用和可靠。所以,在这篇应用手册和基于W5200的模型中,DHCP是获得IP地址的唯一方法。

     

    (2)搜索

    控制点可以通过搜索来查找对它们有意义的设备。

    当控制点进入网络时,它们以普通或者特殊方式释放search packets来搜索and/or服务的设备。搜索完成后,具有合适服务特性的设备或者子设备就会做出响应。

    同样地,UPnP设备首先将会以规律性间隔的方式在网络上表明自身的存在。控制点监听这些状态,检测这些新的设备并且判断它们在网络上的性能表现。

    网络上的其它UPnP设备将会发出通知表明它们提供的服务将不再有效。

    注意: 在搜索过程中,无论是Searching或者Advertising都可以帮助UPnP控制点来寻找UPnP设备。在Searching和Advertising这两种方法相同的情况下,在这篇应用手册和基于W5200的模型中都是保留了Searching方法,而Advertising方法将被忽略。

    (3)描述

    UPnP发送搜索包,将控制点送到一个它们能够检索Device Description Document(DDD)的位置。DDD包括:

    所有嵌入式设备的概述以及一个服务列表。

    被称做服务控制协议定义(SCPD)一个URLSCPD描述了控制点如何使用这些设备提供的服务。

    控制和事件URLs:这些URLs表示控制点必须发送命令来配置UPnP设备,并且利用这些设备所提供的服务。

    用来陈述的URL(见第6).

     (4)控制

    控制过程允许控制点向设备发送命令。如之前提到的,在DDD中指定发送命令的URL

     (5) 事件

    事件过程允许控制点跟踪设备的状态变化。控制点首先订阅合适的服务,随后设备服务中任何状态的变化都会以事件的形式发送给已经订阅的控制点来保证它们的更新。

     (6) 陈述

    控制点能够选择性地为设备显示一个用户的界面。用来陈述的URL是在DDD中已经被指定。陈述页面显示基于HTML的用户界面,这样用户就可以参考and/or设备的状态。所以陈述过程是控制过程和事件过程的补充。

    注意: W5200扮演了一个UPnP控制点的角色,实际上它并不需要嵌入一个网络服务器。网络服务器在UPnP设备中是不可缺少的,所以在本文和基于W5200单片机的模型中,并不支持陈述过程。

     

    2. 端口转发和UPnP

    端口转发

    简单来说,端口发送(另一种说法是NAT遍历)功能允许创建TCPUDP协议映射。这些协议应用于外部因特网网关设备(IGD)端口(称为外部端口)和内部客户机地址。这里的内部客户地址与其中的一个端口相联系(分别称为内部客户机和内部端口)。

    请参考下面的图形来理解端口转发的应用:

    UPnP和端口转发

    端口转发是IGD众多功能中最基本的一个(更多的IGD标准功能可以在UPnP IGD服务模板中找到)。尽管端口转发功能可以手动完成,但是通过使用UPnP,端口转发功能默认执行操作。我们可以这样说,UPnP为用户实现了端口转发的更清晰化。

    目前,很多类型的P2P软件都支持UPnP的端口转发功能,例如SkypeUTorrent以及MSN。如果你对UPnP感兴趣,可以登录IGD的设置页面找到端口发送列表(见图4),在列表中你会发现所有的端口映射。大部分的映射都是有UPnP完成,而不是用户。

    图4. UPnP端口映射列表

    展开全文
  • 大家好,前面我们为大家分享了如何实现W5200E01-M3中的UPnP(通用即插即用)端口转发(一),今天继续为大家分享第二部分,希望对大家有帮助~ 第一部分请参考:...
  • 大家好,前面我们为大家分享了如何实现W5200E01-M3中的UPnP(通用即插即用) 端口转发(二),今天继续为大家分享最后一部分,希望对大家有帮助~ 第一部分请参考: ...
  • upnp

    千次阅读 2016-12-05 17:39:56
    简介 处于内网的机器,因为没有一个公有的Ip,外面是无法主动连接到内网的设备。...当然这并不是唯一方案,穿透和转发也是一个较普遍的方式,本文只讨论UPNP端口映射的实现方式。UPNP端口映射将一个外部端口映射到一
  • NAT端口映射: napt,upnp以及nat-pmp

    万次阅读 2018-05-04 21:12:05
    natp是内部机器通过路由器也就是网关向外部发送网络请求时,路由器记住内部机器的ip和端口,同时跟真正发送数据的外网端口绑定,产生一个临时映射表,当收到外网数据以后通过这个映射表将数据转发给内部机器。...
  • 用户则不需要手工去添加端口转发,这在一些端口不固定的应用上更加方便。应用描述:UPnP请求中包含的有关应用程序的描述。外部端口:路由器为应用程序打开的外部端口。协议类型:所打开的协议的类型。内部端口:...
  • UPnP之NAT 穿越技术

    2013-06-02 09:41:57
    然后,这些程序将获得共享的全球可路由IP地址,并且配置端口映射以将来自NAT外部端口的数据包转发到应用程序使用的内部端口上--所有这一切都是自动完成的,用户无需手动映射端口或者进行其它工作。NAT穿越技术允许...
  • Robusta Port Forwarder端口转发器使它易于非技术性用户能够在您的路由器上创建转发规则,而无需访问路由器的管理界面。该程序提供了一个简单的桌面客户端,允许您添加新的端口配置,在简单的类似于向导的方式直接...
  • 参考地址 ...关于广域网实现原理为Upnp实现外网端口转发 https://blog.csdn.net/c676063769/article/details/38704199 查询当前外网地址 http://www.ip138.com/ 注意 由于IP摄像头软件...
  • TorrentCore 在支持.NET Standard ... UPnP端口转发 IPv6跟踪器 DHT适用于无轨洪流 uTorrent传输协议 用法 TorrentCore旨在易于使用,同时在需要时支持更多高级功能。 有没有稳定的版本,但你可以参考TorrentCore
  • 重要笔记 当前的芳香族仍在紧张发展中。 系统结构可能随时更改。... 产品特点 用户界面 Web桌面界面(优于Synology DSM) ...UPnP端口转发 Samba(通过第三方子服务支持) WiFi管理(Rpi支持wpa_supplicant或Armbian支持n
  • 两端都需要端口转发,但是PacChat应该通过UPNP自动处理此问题 端口转发意味着PacChat在任何公共,学校或工作场所网络上工作的可能性很小 下载与构建 git clone https://github.com/Arccotangent/pacchat.git cd ...
  • 支持UPnP/NAT-PMP端口转发 支持加密(兼容Azureus) 多个文件同步下载/上传 从RSS下载 综合搜索引擎 支持DHT网络 支持uTorrent对等交换 自动扫描下载的目录 良好的国际化(支持25种语言) 选择性下载文件 下载时...
  • 使用端口转发、DMZ和UPnP实现内网穿透 SDN光猫1.4版本以上开启了可以实现外网访问的虚拟服务器、DMZ和UPnP等功能。这几个功能也正是因在工信部投诉无法桥接的人太多才开发并开放的。浏览器打开http://192.168.1.1...
  • qBittorrent功能 抛光的类似于µTorrent的用户界面 无广告 集成良好且可扩展的搜索引擎 ...UPnP / NAT-PMP端口转发支持 在所有平台上可用:Windows,Linux,macOS,FreeBSD,OS / 2 提供约70种语言
  • 通常情况下这个功能是用于NAT端口映射:局域网内的客户端应用程序想要从局域网主机接收网络连接,它必须在局域网路由器上创建一个端口来做转发和映射的事情。 映射一个NAT端口 Cling支持所有必要的功能:在...
  • 2.在路由器的转发规则--》虚拟服务器中配置端口和IP的映射。(这些端口是网络电视盒子用的,配置这些映射之后,电视盒子外面的网络实现直连,实现将媒体串流到设备,好像是少了中间的缓冲转码操作,速度可以提高4-...
  • 局域网内机器对外开放服务

    千次阅读 2007-12-13 23:24:00
    路由设置:1)虚拟服务器,设置... 有些路由器可能只需要一个地方设置,就是设置端口映射(端口转换)和转发地址(转向内网机器)。如果只有一台机器对外暴露,最简单的办法:指定某IP机器为DMZ主机。(TP-Link路由有此功能)
  • tightvnc连接ubuntu14.04

    千次阅读 2015-05-12 13:30:26
    打开左上角的启动器,输入vino,会出现一个桌面共享的应用程序(如果没有...勾选“自动配置UPnP路由器开放和转发端口”,关闭即可 在ubuntu13.10下此时已经可以用tightvnc远程连接了,但是14.04还是不行,搜了一下,可
  • K2T OpenWrt 18.06 AP模式专用版固件(内含说明文档) - 2018-08-17 ...6) UPnP:允许局域网内客户端自动设置路由器上的端口转发。。 9. 集成四种主题: 1) Bootstrap 2) Darkmatter 3) Material 4) OpenWrt
  • 基于地址,协议和端口的包过滤 13.基于站点、URL和关键字的应用层过滤 14.支持网络时间同步 15.支持UPnP 16.支持IP/MAC绑定 17.支持DNS代理 18.支持动态DNS 19.支持PPPOE服务器 20.静态路由,动态路由RIP I和RIP II ...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

upnp和端口转发