upnp 端口映射

本文介绍了UPNP端口映射的实现步骤,包括发送M-SEARCH组播包,接收并处理响应,获取网关信息,解析XML数据,进行端口映射等。通过UPNP端口映射,可以使外部网络连接到内网设备,适用于内网穿透和转发场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介
处于内网的机器,因为没有一个公有的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】
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值