关于UPNP的一些问题

2023-10-18 09:30
文章标签 问题 upnp

本文主要是介绍关于UPNP的一些问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问:什么是 UpnP?
答:通用即插即用 (UPnP) 是一种用于 PC 机和智能设备(或仪器)的常见对等网络连接的体系结构,尤其是在家庭中。UPnP 以 Internet 标准和技术(例如 TCP/IP、HTTP 和 XML)为基础,使这样的设备彼此可自动连接和协同工作,从而使网络(尤其是家庭网络)对更多的人成为可能。

问:UPnP 对消费者意味着什么?
答:简单、更多选择和更新颖的体验。包含通用即插即用技术的网络产品只需实际连到网络上,即可开始正常工作。实际上,UPnP 可以和任何网络媒体技术(有线或无线)协同使用。举例来说,这包括:Category 5 以太网电缆、Wi-Fi 或 802.11B 无线网络、IEEE 1394 ("Firewire")、电话线网络或电源线网络。当这些设备与 PC 互连时,用户即可充分利用各种具有创新性的服务和应用程序。

问:什么是 UPnP 论坛?
答:“通用即插即用论坛”是一个开放式业界协会,成立于 1999 年 6 月,旨在帮助定义 UPnP 标准以简化家庭(长远上讲则是企业)智能设备的联网。为实现上述目标,该论坛正在制定和公布 UPnP 设备控制协议及服务控制协议。截止到 2001 年 6 月初,已有 350 多家公司成为 UPnP 论坛的成员。UPnP 论坛受由 22 名成员组成的 UPnP Steering Committee(UPnP 指导委员会)的管理。此外还设立了技术委员会、市场推广委员会及各种工作委员会(分别面向某种特定的设备),旨在努力实现该机构的目标。有关论坛成员的列表及加入论坛的信息,请见论坛 Web 站点。

问:UPnP 的技术要素是什么?

答:UPnP 范围广泛,原因是它面向的是家庭网络、临近网络及小型企业和商住楼中的网络。在网络控制设备的管理下,它支持任何两个设备之间的数据通讯。UPnP 不依赖于特定的操作系统、编程语言或物理媒体。

UPnP 支持零配置网络及自动查找功能,这样以来,设备即可动态加入网络,获取 IP 地址,宣布自己的名称,根据需要提供功能,并了解其它设备的存在和功能。DHCP 和 DNS 服务器为可选项。只要在网络上可用,即可加以使用。此外,设备还可自动平稳地脱离网络,而不会遗留任何不必要的状态。

UPnP 汲取了 Internet 的成功之处并继承了它的组件,包括 IP、TCP、UDP、HTTP 及 XML。UPnP 中涉及了多供应商之间的协作,旨在建立标准的设备控制协议 (DCP)。与 Internet 类似,这些协议以公告式线协议为基础,表示为 XML 形式,且通过 HTTP 进行通讯。

问:什么是 NAT?为什么使用它?
答:“网络地址转换”是一种 Internet Engineering Task Force (IETF) 标准,用于允许专用网络(使用专用地址范围,例如 10.0.x.x、192.168.x.x、172.x.x.x)上的多台 PC 机或设备共享单个、可全局路由的 IPv4 地址。经常使用 NAT 的一个主要原因就是 IPv4(最新一代 Internet)地址的资源日渐紧缺。

在构成公用 Internet 与专用局域网之间屏障的网关设备中,可以使用 NAT。当专用局域网的 IP 数据包经过网关时,NAT 将把专用 IP 地址和端口号转换为公用 IP 地址和端口号,从而跟踪这些转换以保持各个会话不变。Microsoft® Windows® XP 和 Windows Me 操作系统中的“Internet 连接共享”及许多 Internet 网关设备都使用 NAT,尤其是在通过 DSL 或电缆调制解调器连接宽带网的情况下。随着越来越多的家庭和小型企业将自己的 PC 机连接起来并共享 Internet 连接,NAT 的使用量正急剧增加。

问:NAT 的问题在哪?
答:简言之:NAT 会“瓦解”许多家庭或小型企业中日渐需要的最新型 PC 和家庭网络技术,例如多玩家游戏、实时通讯及其它对等服务。如果在公用 Internet 上使用专用地址或同时使用同一端口号,这些应用程序就会中止。应用程序必须使用公共地址,且每个会话都须使用唯一的端口号。大型机构有专门的 IT 人员来确保其公司应用程序在 NAT 上正常使用,但较小的机构和消费者却不具备这样奢侈的条件。UPnP NAT Traversal 可以自动解决 NAT 给应用程序带来的许多问题,使之成为小型企业和消费者理想的解决方案。

问:谁提出的 NAT Traversal 解决方案?

答:NAT Traversal 解决方案是 UPnP IGD Working Committee 为制定 Internet 网关设备 (IGD) 规范所从事工作的一部分。UPnP 的成员公司可以加入该委员会,也可以只选择跟踪其工作进展。委员会的主席是 Intel 公司的 Prakash Iyer (prakash.iyer@intel.com)。许多公司,包括 Microsoft,都在为此而努力。

问:是否有其它途径来解决 NAT Traversal 的问题?如果有,为什么将 UPnP 视为最佳选择?
答:是的,确实有其它途径来解决此问题,但目前还没有其它机制来作为解决该问题的业界标准,从而能对消费者自动实现,而对开发人员则普遍可行。其它方案或者要求用户进行人工干预,或者要求 Internet 网关设备制造商进行专门的开发,并要求软件开发人员处理 NAT Traversal 对特殊应用程序的需要。因此,只有 UPnP 能解决该重大问题。

用户的工作: NAT Traversal 的手工干预法要求用户使用浏览器(PC 机上一种基于图形用户界面的工具)或 PC 上的命令行界面工具来更改家中 Internet 网关设备上的某些设置。尽管有些热衷技术的用户不会有很大困难,但许多用户却感到困难重重。此外,许多用户甚至不知道 NAT Traversal 问题正对其 Internet 服务的使用造成干扰。用户可能想体验一种多玩家游戏或使用其它某些对等服务,却发现由于某种原因而无法连接。这会导致用户采取疑难解答步骤、寻求电话支持、感到不满,甚至以后不打算使用新的服务或不打算尝试新的技术感受。

开发人员的工作: 为避免要求用户手动解决此 NAT Traversal 问题,有些 Internet 网关设备制造商已编写出应用层网关支持,并将其包含到设备中。该应用层网关软件的设计思路是特殊的应用程序。换言之,设备制造商将编写和测试特殊的代码,自动使一个应用程序完成 NAT。如果该应用程序软件进行了更新,则设备制造商所编写的应用层代码将必须重新进行更新和测试。当只需要考虑几个对等或相关的应用程序时,这种一对一解决 NAT Traversal 问题的方式对于设备制造商而言是可管理的,但它无法对数百或数千个应用程序伸展自如,这时不仅开发成本高,并可能需要有关这些应用程序各自原理方面的知识。解决该问题较好的方法就是让设备制造商为设备添加能理解 UPnP 的软件或固件,然后让其它设备和软件能利用同一技术与 NAT 设备进行通讯。现在只有 UPnP 能够完成这种职责。

问:UPnP NAT Traversal 解决方案的作用是什么?
答:支持 UPnP 的 NAT Traversal 可确保下列情况的实现:

* 多玩家游戏
* 对等连接
* 实时通讯
* 远程协助(Windows XP 的功能之一)

对于 IHV 而言,该解决方案免去了编写和维护应用层网关 (ALG) 数据库以通过 NAT 的必要。它受 Windows XP 和 Direct Play(一种 Windows 编程资源)的支持,因此为 DPlay 编写的软件应用程序将能自动对 NAT Traversal 使用 UPnP 解决方案。

通过提供下列操作的方法,UPnP 论坛的 IGD 规范可进行自动 NAT Traversal:

* 了解公用 IP 地址
* 列举现有的端口映射
* 添加和删除端口映射
* 指定映射的租用期

问:哪些制造商在实施 UPnP NAT Traversal 解决方案?
答:目前,大多数大型网关(DSL/电缆路由器)制造商都宣布计划从 2001 年(不迟于 7 月份)在提供的产品中实施 UPnP NAT Traversal 解决方案。其中包括:Microsoft(WindowsXP 中)、Linksys、D-Link、Intel、Netgear and Buffalo Technology 及 Arescom。

其中的一些制造商已宣布将为已拥有其设备的用户提供固件或软件升级,从而为支持 UPnP 的 NAT Traversal 提供支持。

问:用户怎样才能知道哪些 Internet 网关设备支持 UPnP?
答:用户可以查阅 Internet 网关设备制造商的 Web 站点,或者阅读产品包装上的标签,以确定是否提供该功能。后面几个月内,有些零售商将会知道这个情况。在未来的几个月中,UPnP 论坛会提供一个 UPnP 徽标。制造商可以在自己的产品包装、营销资料或产品上包含该徽标,以表明该产品满足 UPnP 论坛的测试要求。

问:开发人员实施该方案时有哪些可用的资源?
答:资源有很多,范围从白皮书到互操作性测试事件 (PlugFests)。有关技术性的文章,请访问 http://www.upnp.org/resources.htm。有关未来的重大事件,请参阅 http://www.upnp.org/events.htm。Microsoft 在 MSDN Online 上提供有关 Windows XP 的开发人员信息。 

用于 UPnP 的网络媒体
UPnP 使用标准的 IP 协议集,从而保持了网络媒体的不可知性。UPnP 网络设备可以使用任何通讯媒体连接,包括无线频率(RF,无线)、电话线、IrDA、以太网以及 IEEE 1394。换言之,任何可以和网络设备一同使用的媒体都可以启用 UPnP。唯一要关心的可能是使用的媒体是否支持目标用途所要求的带宽。 UPnP 使用开放的标准协议,如 TCP/IP、HTTP 和 XML。但是,由于多种原因(包括成本、技术要求或兼容支持),其它的技术也可能与网络设备一起被使用。这些包括网络技术,如 HAVi、CeBus、LonWorks、EIB 或 X10。通过 UPnP 网桥或代理,这些技术也可以加入到 UPnP 网络中。包含桥接设备的 UPnP 网络看起来可能如下图所示。

20050413BridgedNet2.gif
图 3:桥接的 UPnP 网络

UPnP 使用的协议
UPnP 利用了多种现有的标准协议。使用这些标准化的协议有助于确保供应商实现之间的互操作性。对于用以实现 UPnP 的协议,您经常可以发现它们用在 Internet 和局域网的各个位置。这种普遍性确保了有大量的人员知道该如何实现和部署基于这些协议的解决方案。由于相同的协议已在使用之中,因此几乎不需要执行任何操作就可以让 UPnP 设备在现有的网络化环境中工作。在本节的其余部分概述了一些用于实现 UPnP 的协议。
20050413FullProtocolStack.gif
图 4:UPnP 协议组合

UPnP 特有的协议
UPnP 供应商、UPnP 协会工作委员会以及 UPnP 设备架构文档定义了可用于实现 UPnP 的最高级协议。基于设备架构,该工作委员会定义了特定于设备类型的规范,这些类型比如 VCR、HVAC 系统、洗碗机以及其它设备。此后,UPnP 设备供应商可以添加特定于各自设备的数据,如型号名称、URL 等等。

TCP/IP
TCP/IP 网络协议集充当了建立其余 UPnP 协议的基础。通过使用该标准(普遍使用的 TCP/IP 集),UPnP 可以利用其跨越不同物理媒体的能力并确保多个供应商之间的互操作性。

UPnP 设备可以使用 TCP/IP 集合中的多种协议(包括 TCP、UDP、IGMP、ARP、IP)和 TCP/IP 服务(比如 DHCP 和 DNS)。当我们在本节介绍了其它协议和在下一节介绍了 UPnP 的工作方式之后,如何使用这些协议和服务来提供 UPnP 工作所需的内容也就会变得一目了然。

由于 TCP/IP 是使用最为普遍的网络协议之一,因此定位或创建一个对覆盖面和/或性能进行优化的 UPnP 设备实现将相当容易。

本文档假定您对 TCP/IP 协议集和服务有基本的了解。有关 TCP/IP 的详细信息,可以在本文档结束位置所列出的参考中找到。

HTTP、HTTPU、HTTPMU
TCP/IP 提供了用来实现 UPnP 设备间网络连接的基本协议集。对 Internet 的成功作出了巨大贡献的 HTTP 也是 UPnP 的核心部分。UPnP 的所有组件都建立在 HTTP 或其变体之上。

HTTPU(和 HTTPMU)是 HTTP 的变体,定义它们是为了通过 UDP/IP(而不是 TCP/IP)发送消息。下面介绍的 SSDP 将使用这些消息。这些协议的基本消息格式沿袭了 HTTP,并且是多播通讯和当消息传输不要求与可靠性有关的开销时所需要的。

一些关于较为高级的协议和 UPnP 工作的说明需要您基本了解 HTTP 协议。有关 HTTP 的详细信息,可以通过在本文档结束位置所列出的参考中找到。

SSDP
顾名思义,简单服务发现协议 (SSDP) 定义了网络服务是如何在网络上被发现的。SSDP 基于 HTTPU 和 HTTPMU 创建,定义了控制点定位网络上感兴趣的资源和设备通知它们在网络上的可用性的方法。通过定义同时使用搜索请求和展示通知,SSDP 避免了在仅使用这两种机制中的任一种时所必需的开销。这样,网络中的每个控制点都可以获得关于网络状态的完整信息,同时保持了低水平的网络流量。

访问点和设备都可以使用 SSDP。UPnP 访问点启动后可以发送 SSDP 搜索请求(通过 HTTPMU)来发现网络上可用的设备和服务。访问点可以细化该搜索,从而仅查找特定类型的设备(如 VCR)、特定服务(如具有时钟服务的设备)乃至特定设备。

UPnP 设备会侦听多播端口。一旦收到搜索请求,该设备就检查该搜索条件以确定它们是否匹配。如果匹配,一个单播 SSDP(通过 HTTPU)响应将被发送到该控制点。

同样,当将设备插入网络时,它会发出多播 SSDP 展示通知消息,通知它所支持的服务。

在展示通知和单播设备响应消息中都包含该设备描述文档(含有该设备支持的属性和服务组合的信息)所在位置的指示符。

除了提供发现功能外,SSDP 还提供了设备及其关联的服务适当地从网络离开的方式(再见通知),并包含清除陈旧信息的缓存超时设置来进行自我维护。

GENA
定义普通事件通知架构 (GENA) 是为了提供收、发使用了 HTTP over TCP/IP 和多播 UDP 的通知的能力。GENA 还定义了通知预定者和发布者的概念以启用事件。

在 UPnP 中,GENA 格式可用于创建将要使用简单服务发现协议 (SSDP) 发送的展示通知,并为 UPnP 事件提供表示服务状态已更改的能力。希望接收事件通知的控制点会向事件源进行预定,方法是发送一个含有它感兴趣的服务、将事件发往的位置以及事件通知的预定时间的请求。

要连续接收通知,所作的预定必须定期予以更新。也可以使用 GENA 取消预定。

SOAP
简单对象访问协议 (SOAP) 定义了可扩展标识语言 (XML) 和 HTTP 的使用来执行远程过程调用。它正在变成 Internet 上基于 RPC 的通讯标准。通过使用 Internet 的现有基础设施,它可以有效地配合防火墙和代理工作。SOAP 还使用安全套接字层(SSL) 提供安全性,并使用了 HTTP 的连接管理功能,从而使得 Internet 上的分布式通讯就像访问网页一样简单。

与远程过程调用非常相似,UPnP 使用 SOAP 向设备发送控制消息并将结果或错误返回到控制点。

每个 UPnP 控制请求都是一个 SOAP 消息,都包含调用操作和一组参数。其响应也是 soap 消息,其中包括状态、返回值以及任何返回参数。

XML
为使用 W3C 定义,可扩展标识语言 (XML) 是 Web 上的结构化数据的通用格式。另外,借助 XML,几乎可以将任何类型的结构化数据放到文本文件中。

XML 使用标记和属性,这使它看起来与 HTML 非常相似。实际上,它们在以下方面存在显著的差别:XML 标记和属性的含义不是全局定义的,而是在使用它们的上下文中进行解释。XML 的这些功能使得它成为开发各种文档类型架构的最佳选择。W3C 定义了将 XML 作为架构语言的使用。

XML 是 UPnP 的核心部分,被用在设备和服务描述、控制消息和事件处理中。


下面就是 UPnP 架构的关键构成:

* UPnP 设备 - UPnP 设备应该是由服务程序与相配套的部件构成。例如,一个 VCR 设备可能包括磁带传输服务程序、调谐器部件和计时服务程序。同样地,TV/VCR 组合设备也不会仅由服务程序构成,还要包括配套的部件。
* UPnP 服务程序 - UpnP 网络中控制程序的最小的单元就是服务程序。服务程序会显示操作界面,还会模拟出动作状态,在模拟的过程中会利用到状态变量。例如,在时钟服务程序中,在模拟出时钟的过程中就利用到当前时间这个状态变量,用当前时间来定义时钟的状态,还有两个动作,设置时间和获取时间,可以用来对这个服务程序进行控制。
* UPnP 控制点 - UPnP 网络中的控制点是一种控制设备,它能够发现并控制其它设备。
20050413upnp2.jpg
UPnP 架构的组成部分
20050413upnp1.gif

这篇关于关于UPNP的一些问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/231685

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6

问题-windows-VPN不正确关闭导致网页打不开

为什么会发生这类事情呢? 主要原因是关机之前vpn没有关掉导致的。 至于为什么没关掉vpn会导致网页打不开,我猜测是因为vpn建立的链接没被更改。 正确关掉vpn的时候,会把ip链接断掉,如果你不正确关掉,ip链接没有断掉,此时你vpn又是没启动的,没有域名解析,所以就打不开网站。 你可以在打不开网页的时候,把vpn打开,你会发现网络又可以登录了。 方法一 注意:方法一虽然方便,但是可能会有

vue同页面多路由懒加载-及可能存在问题的解决方式

先上图,再解释 图一是多路由页面,图二是路由文件。从图一可以看出每个router-view对应的name都不一样。从图二可以看出层路由对应的组件加载方式要跟图一中的name相对应,并且图二的路由层在跟图一对应的页面中要加上components层,多一个s结尾,里面的的方法名就是图一路由的name值,里面还可以照样用懒加载的方式。 页面上其他的路由在路由文件中也跟图二是一样的写法。 附送可能存在

vue+elementui--$message提示框被dialog遮罩层挡住问题解决

最近碰到一个先执行this.$message提示内容,然后接着弹出dialog带遮罩层弹框。那么问题来了,message提示框会默认被dialog遮罩层挡住,现在就是要解决这个问题。 由于都是弹框,问题肯定是出在z-index比重问题。由于用$message方式是写在js中而不是写在html中所以不是很好直接去改样式。 不过好在message组件中提供了customClass 属性,我们可以利用

Visual Studio中,MSBUild版本问题

假如项目规定了MSBUild版本,那么在安装完Visual Studio后,假如带的MSBUild版本与项目要求的版本不符合要求,那么可以把需要的MSBUild添加到系统中,然后即可使用。步骤如下:            假如项目需要使用V12的MSBUild,而安装的Visual Studio带的MSBUild版本为V14。 ①到MSDN下载V12 MSBUild包,把V12包解压到目录(

YOLO v3 训练速度慢的问题

一天一夜出了两个模型,仅仅迭代了200次   原因:编译之前没有将Makefile 文件里的GPU设置为1,编译的是CPU版本,必须训练慢   解决方案: make clean  vim Makefile make   再次训练 速度快了,5分钟迭代了500次

Pycharm配置conda环境(解决新版本无法识别可执行文件问题)

引言: 很多小伙伴在下载最新版本的pycharm或者更新到最新版本后为项目配置conda环境的时候,发现文件夹目录中无法显示可执行文件(一般为python.exe),以下就是本人遇到该问题后试验和解决该问题的一些方法和思路。 一般遇到该问题的人群有两种,一种是刚入门对pycharm进行conda环境配置的小白(例如我),不熟悉相关环境配置的操作和过程,还有一种是入坑pycharm有段时间的老手