如何设置网络功能 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
本主题介绍了网络隔离概念,以及如何为 Windows 运行时应用设置网络功能以全面控制网络访问。 网络功能确保 Windows 运行时应用有权访问所需的网络资源,并为最终用户提供有关访问级别的精确预期值。 了解本主题将确保你的 Windows 运行时应用可以正确地连接到网络资源。 网络隔离功能确保 Windows 运行时应用仅在明确请求正确的功能后访问网络资源。
你需要了解的内容
技术
Windows.Networking.BackgroundTransfer
支持高级下载和上载操作。
-
支持使用套接字和 WebSocket 进行网络通信。
-
支持使用 AtomPub 协议访问 Web 资源。
-
提供一个现代 HTTP 客户端 API,以供连接到 Web 服务。
-
管理联合源。
-
支持使用 Web 客户端连接到 Web 服务(仅适用于 C#/VB)。
先决条件
- 以下信息适用于任何需要进行网络连接的联网或网络感知的 Windows 运行时应用。这会影响采用 JavaScript 编写的应用。这也影响使用 .NET Framework 4.5 以 C#、VB.NET 和 C++ 编写的应用。
网络隔离清单
使用该清单可确定你的应用是否已配置网络隔离。
- 确定应用所需的网络访问方向。这可以是客户端发起式出站请求或主动式入站请求,也可以是这两种网络请求的组合。
- 确定应用将与之通信的网络资源的类型。应用可能需要与家庭或工作网络上的受信任资源通信。应用可能需要与 Internet 上的资源通信。应用可能需要同时访问这两类网络资源。
- 配置应用清单中必需的网络隔离功能。这些功能通常在开发应用时使用 Microsoft Visual Studio 2013 来进行配置。
- 使用所提供的用于故障排除的网络隔离工具来部署并运行应用,以此进行测试。
有关网络隔离的详细信息
并非所有应用都需要访问网络,但对于需要访问网络的应用,Windows 8.1 提供了不同级别的网络访问,可通过选择相应的功能来实现。
通过网络隔离可以为每个应用定义其所请求的网络访问的范围。网络访问请求可分为两类:
出站客户端发起的请求
应用作为客户端,通过向远程计算机(通常为服务器)发送初始网络请求来发起网络访问。客户端应用向服务器发送一个或多个请求,而服务器则向客户端应用发送回一个响应或数个响应。所有从 Web 客户端应用到 Web 服务器的通信都属于此类别。入站主动提供的请求
应用作为网络服务器,侦听来自远程计算机的入站网络请求。远程计算机通过向作为服务器的应用发送初始请求来发起网络访问。 远程计算机向应用发送一个或多个请求,而应用则向远程计算机发送回一个或多个响应。用作媒体服务器的应用属于此类别。
未定义访问范围的应用将被禁止访问指定类型的网络连接。 设置和强制实现网络隔离可以确保:应用被滥用时仅可访问它已获得明确访问授权的网络。这样可以显著减小对其他应用程序和系统的影响范围。
网络隔离会影响下列尝试访问网络的命名空间中的所有方法和属性。
- Windows.Networking.BackgroundTransfer
- Windows.Networking.Sockets
- Windows.Web.AtomPub
- Windows.Web.Http
- Windows.Web.Syndication
- System.Net.Http
Windows 会主动强制实现网络隔离。如果未启用相应的网络功能,则在调用这些命名空间中的方法或访问其中的属性时导致的网络访问都可能受网络隔离影响而失败。在其他命名空间中,调用上述命名空间中的方法或访问其中属性的类也会受到影响。
应用的网络功能在构建应用清单时进行配置。网络功能通常是在开发应用时使用 Visual Studio 添加的。可以使用文本编辑器在应用清单中手动设置网络功能。
网络隔离和网络功能
网络隔离是 Windows 8 所使用的应用程序安全模型的组成部分。Windows 会主动发现网络边界,并为网络隔离强制实现网络访问限制。下面列出了系统将搜寻的网络边界:
家庭\工作网络
这是你的本地家庭或工作网络。它由计算机所连接的本地子网及被配置为网络组成部分的本地代理组成。Internet 代理不在此边界范围之内。在域环境中,此范围包括 Active Directory 站点和子网所定义的范围。Internet
不包括家庭或工作网络的 Internet。它由提供 Internet 访问的所有代理组成。任何不属于你的“家庭\工作网络”的网络访问都被视为“Internet 访问”****。
Windows 8 将所有远程网络主机分类为这两种类别之一。通过理解应用将与之通信的主机的适用方向和类别,你将可以为你的应用选择正确的功能。
应用必须启用应用清单中某些与联网相关的功能才能获得网络访问授权。这些功能被定义为安全标识符 (SID),Windows 8 使用它们来强制实现边界。
下面列出了所定义的网络隔离功能:
Visual Studio 中使用的术语 | 描述 |
---|---|
Internet (客户端) |
提供对 Internet 及公共场所(如机场和咖啡厅)网络的出站访问。多数需要进行 Internet 访问的应用都应使用此功能。 这是应用部件清单 (manifest) 中的 internetClient 功能。 |
Internet(客户端和服务器) |
为应用提供来自 Internet 及公共场所(如机场和咖啡厅)网络的入站和出站访问。 这是应用部件清单 (manifest) 中的 internetClientServer 功能。 |
专用网络(客户端和服务器) |
为应用提供用户信任场所(如家庭和工作场所)中的入站和出站网络访问。 这是应用部件清单 (manifest) 中的 privateNetworkClientServer 功能。 |
注意
Windows Phone 应用商店应用具有单个网络功能,该功能使应用可访问所有网络。“Internet (客户端和服务器)”功能可支持适用于客户端操作(出站访问权限)和服务器操作(入站问权限)的网络的完全访问权限。然而,如果在 Package.appxmanifest 文件中指定了任何网络功能(internetClient、internetClientServer 或 privateNetworkClientServer),Windows Phone 应用商店应用在运行时具有对适用于客户端和服务器操作的网络的完全访问权限。
当你在 Visual Studio 中开发和测试自己的 Windows Phone 应用商店应用时,你将在运行应用时获得网络功能(“Internet (客户端和服务器)”),即使你未在应用清单文件中指定该功能也是如此。但在你发布自己的应用时,你的应用不会自动获得网络功能。如果你的应用要求进行网络连接,请务必在清单设计器的“功能”页面上选中“Internet (客户端和服务器)”功能。
为了控制网络访问,可能还需启用应用清单中的一些其他功能。这些功能以 GUID 形式定义,用于强制实现边界。
Visual Studio 中使用的术语 | 描述 |
---|---|
企业身份验证 |
允许网络连接至要求提供域凭据的网络资源。如要启用此功能,域管理员必须为所有应用均启用此功能。示例将是从 Intranet Sharepoint 服务器中检索数据的应用。 通过此功能可以使用你的凭据来访问要求提供凭据的网络中的网络资源。具有此功能的应用可在网络上模拟其用户。 无需此功能,应用即可通过身份验证的代理访问 Internet。 这是应用部件清单中的 enterpriseAuthentication 功能。 |
邻近感应 |
与邻近计算机的设备进行近距离感应通信所必需的功能。近距离感应可用于向附近设备上的应用程序发送邀请或与其进行连接。 此功能让应用可以访问邻近设备网络,并在用户同意发送或接受邀请的情况下与这些设备进行连接。 这是应用部件清单 (manifest) 中的 proximity 功能。 |
共享用户证书 |
此功能让应用可以访问软件和硬件证书,如智能卡证书。在运行过程中调用此功能时,用户必须采取插入卡或选择证书等操作。 使用此功能时,应用会将你的软件和硬件证书或智能卡用于识别。你的雇主、银行或政府服务机构可以使用此功能来进行识别。 这是应用部件清单中的 sharedUserCertificates 功能。 |
为了确保网络访问的正常进行,可能还需启用应用清单中的一些与设备访问相关的设备功能。这些设备功能以 GUID 形式定义,系统使用它们来强制实现边界。
Visual Studio 中使用的术语 | 描述 |
---|---|
摄像头 |
提供对摄像头视频源的访问。 当应用要通过网络与远程计算机共享摄像头视频源时,需要使用此功能。 这是应用部件清单 (manifest) 中的 webcam 功能。 |
务必要明确你的应用需要哪些功能。下表列出了一些常用操作及所需的功能。
所需功能
应用程序 | 描述 |
---|---|
只使用内容的 Web 客户端。这可能包括从网站加载 HTML 的应用以及使用 RSS syndication 或 AtomPub 协议的应用。 |
internetClient |
社交网络应用。这包括在社交网络站点上使用并生成内容的应用。 |
internetClient |
对等 (p2p) 应用。这包括提供对即时消息或聊天访问的应用。 |
internetClientServer |
用于在家庭或工作网络中共享的应用。这包括访问媒体或网络连接存储 (NAS) 内容的应用。 |
privateNetworkClientServer |
家庭或工作网络上的业务线应用。这包括充当 HTTP 客户端或使用套接字或 WebSockets 的应用。 |
privateNetworkClientServer |
在家庭或工作网络上具有联网功能的工作效率应用。这包括访问网络功能的工作效率应用。 |
privateNetworkClientServer |
需要网络访问的游戏应用。 |
internetClient |
进行比赛的多玩家 Internet 游戏应用。 |
internetClient |
人员距离较近的多玩家游戏。 |
proximity |
使用多播发现或使用多播发现玩家的多玩家游戏应用。 |
internetClientServer |
使用家庭或工作网络的多玩家游戏应用。这包括使用多播发现或使用多播发现玩家的应用。 |
privateNetworkClientServer |
广播应用。这包括通过 Internet 接收无线电广播的应用。 |
internetClient |
网络隔离和网络边界
为了让 Windows 8.1 强制实现网络隔离,系统需要发现并确定网络边界。Windows 8.1 以动态方式执行此发现操作。系统会探测网络以发现本地计算机网络接口的地址,各接口所绑定的地址决定着用作 Internet 访问点的网关或 IP 地址的状态。 将发现以下信息:
- 家庭或工作网络所使用的本地地址和子网。
- Internet 网关和 Internet 代理。
一般情况下,在家庭或工作网络中发现的本地 IPv4 地址和子网包括以下专用 IPv4 地址范围:
- 10.0.0.0-10.255.255.255
- 172.16.0.0-172.31.255.255
- 192.168.0.0-192.168.255.255
一般情况下,在家庭或工作网络中发现的本地 IPv6 地址和子网包括以下 IPv6 地址范围:
- 与 IPv6 地址关联的本地 IPv6 子网。
- IPv6 本地链路地址 (fe80::/10)。
- 用于转换技术(例如,6to4 和 ISATAP)的 IPv6 隧道地址,不包括 Teredo 使用的 IPv6 地址范围 (2001::/32)。
当用户第一次将其计算机连接到网络时,如果其家中有无线 LAN (Wi-Fi) 网络,则将为他们提供选项以在网络上启用共享功能。Windows 使用此决策将网络分类为受信任或不受信任。
如果符合以下任意条件,则网络终结点被视为是家庭\工作网络的一部分:
- 按照用户的指示,它属于受信任网络的本地子网的一部分。例如,家庭用户通常将其家庭网络标记为“受信任的网络”。本地子网上的计算机将指定为“家庭/工作网络”的一部分。
- 计算机位于网络中,并已通过域控制器的身份验证。本地子网内的网络终结点被视为专用终结点。Intranet 地址空间内的网络终结点被视为专用终结点。
- 计算机配置为 DirectAccess,并且该网络终结点属于 Intranet 地址空间的一部分。
Intranet 地址空间由已配置的 Active Directory 站点和子网构成,并通过使用组策略专门为 Windows 网络隔离进行配置。加入域的计算机将针对此信息查询 Active Directory 和组策略。
未满足上述条件的所有其他网络终结点将被视为“Internet”****上的网络终结点。
有关网络隔离的管理员控件的详细信息,请参阅在网络上隔离 Windows 应用商店应用
网络隔离和强制实现
当应用尝试一个客户端发起的出站请求(例如,指向 www.contoso.com 的 HTTP web 请求),则系统将在其清单中执行应用的功能启用检查,并决定是允许还是阻止该指向特定主机(例如,www.contoso.com)的客户端发起的出站请求。 如果允许该客户端发起式出站请求,则也会允许来自对客户端发起式出站请求作出响应的服务器的响应。
当应用尝试侦听主动式入站请求时,系统将对应用清单中为应用设置的功能执行检查,决定是允许还是阻止来自远程 IP 地址的主动式入站请求。 应用必须启用 InterentClientServer 或 privateNetworkClientServer 功能才被允许侦听主动式入站请求。如果至少启用了其中一个功能,则应用被允许在一个或数个端口上侦听指定类型网络上的主动式入站请求。系统会检查每个主动式入站请求尝试,以确定是否允许来自特定远程源 IP 地址的主动式入站请求。Windows 会确定主动式入站请求是来自家庭\工作 IP 地址还是 Internet,并根据所启用的功能和特定远程地址允许或拒绝访问。
网络隔离可以与任何邻近组件实现完全集成。当启用了应用清单中的 proximity 功能时,无需再启用任何其他网络功能。用户仍必须同意发送或接受来自邻近设备的邀请,才能允许邻近设备与本地计算机之间进行通信。
网络隔离和环回
一直以来,IP 环回地址和环回接口被用于网络中不同应用程序之间的通信,也用于本地计算机上若干应用程序之间的进程间通信。
由于受网络隔离的限制,使用 IP 环回地址的网络通信通常无法用于进程间通信(两个不同的应用之间)。使用 IP 环回地址的网络通信允许在同一进程的应用内进行通信。
有关使开发人员出于调试目的而对两个不同应用之间 IP 环回地址的访问的详细信息,请参阅如何启用环回和调试网络隔离。
后台传输和 Toast 通知
Windows 8.1、Windows Phone 8.1 和 Windows Server 2012 R2 的 Windows.Networking.BackgroundTransfer 命名空间中的 BackgroundDownloader 和 BackgroundUploader 类支持用户用于在成功完成传输或无法完成传输时接收磁贴和 Tosat 通知的选项。
对于使用 Windows.Networking.BackgroundTransfer 通过 Toast 通知通信的应用,必须在应用的清单文件中声明它“支持 Toast”。此设置未与网络隔离设置一起位于“功能”****部分下。“支持 Toast”设置位于“应用程序”****选项卡的“通知”部分下。将“支持 Toast”****选项设置为“是”,以便应用可以检索 Toast 通知。
如果未在应用清单中启用“支持 Toast”,则 Windows.Networking.BackgroundTransfer 命名空间中的任何 Toast 设置都将被静默忽略,并且应用不会接收任何 Toast 通知。
注意 用户可以随时为应用手动禁用或启用 Toast 通知。
有关 Toast 通知的详细信息,请参阅发送 Toast 通知和如何选择接收 Toast 通知。
相关主题
其他资源
参考
Windows.Networking.BackgroundTransfer
示例