Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 29341-26-11 定义了 WANIPConnection v2 服务,这是互联网网关设备(IGD)架构中的核心 UPnP 组件。该标准标准化了基于 IP 的 WAN 连接管理,使局域网上的应用程序和设备能够通过住宅或企业网关与外部互联网交互。v2 规范扩展了原始 v1,增加了对 IPv6 双栈运行、改进的错误报告以及更丰富的连接状态元数据等关键增强功能。
该服务模型围绕单一概念 WAN IP 连接展开,该连接可处于几个明确定义的状态之一:Disconnected、Connecting、Connected 和 PendingDisconnect。每个状态转换由特定的动作控制,如 GetStatusInfo、GetConnectionTypeInfo 和连接请求周期。该服务公开反映实时链路参数的状态变量,包括外部 IP 地址、端口映射租期和 NAT 模式。
WANIPConnection v2 服务定义了一组丰富的动作,可分为连接管理、NAT 穿透和状态查询三组。连接管理组包括 RequestConnection 和 ForceTermination,使应用程序能够以编程方式控制 WAN 链路状态。NAT 穿透组在实际应用中最重要,提供 AddPortMapping、DeletePortMapping、GetSpecificPortMappingEntry 和 GetListOfPortMappings。
每个端口映射条目由 RemoteHost、ExternalPort 和 Protocol(TCP 或 UDP)的组合唯一标识。v2 规范引入了 LeaseDuration 参数,使点对点和实时通信应用能够创建临时映射。这是对 v1 的重大改进——在 v1 中,端口映射一旦创建便永久存在。该服务还公开了 PossiblePortMappingNumberOfEntries 变量,允许客户端在尝试批量操作之前查询网关的端口映射容量。
v2 的主要增强之一是显式建模 NAT 模式。NATEnabled 状态变量指示 WAN 连接上 NAT 是否激活。当禁用时,网关以纯路由模式运行,为 LAN 端设备分配公网 IP 地址——这种配置在 IPv6 部署中越来越常见。v2 服务还报告 ExternalIPAddress 和新增的 ExternalIPv6Address 变量,支持双栈网关架构。
| 动作 | 描述 | 关键输出参数 |
|---|---|---|
| GetStatusInfo | 获取当前连接状态和运行时间 | NewConnectionStatus, NewLastConnectionError, NewUptime |
| AddPortMapping | 在网关上创建端口转发规则 | NewRemoteHost, NewExternalPort, NewProtocol, NewInternalPort, NewLeaseDuration |
| DeletePortMapping | 删除指定端口映射 | NewRemoteHost, NewExternalPort, NewProtocol |
| GetSpecificPortMappingEntry | 获取特定映射详情 | NewInternalPort, NewInternalClient, NewLeaseDuration |
| GetListOfPortMappings | 枚举所有端口映射(分页) | NewPortMappingList, NewTotalMappings |
| ForceTermination | 断开 WAN IP 连接 | 无 |
| RequestConnection | 发起 WAN 连接建立 | 无 |
在实现 WANIPConnection v2 控制点(UPnP 客户端)时,有几个工程模式值得注意。首先,在尝试端口映射操作之前始终查询 GetStatusInfo——处于 Disconnected 状态的网关将拒绝映射请求并返回相应错误码。其次,为 GetListOfPortMappings 实现分页处理,因为网关可能强制限制每页大小(通常为 100 条),即使存在更多映射也是如此。
v2 的错误码处理更加精细。LastConnectionError 变量提供枚举错误码,涵盖 DNS 解析失败、PPP 协商错误、IP 地址冲突和认证问题。控制点应将此映射为用户友好的诊断信息,而不是显示原始错误码。此外,该服务以秒为单位公开 UpTime,可用于计算随时间变化的连接稳定性指标。