美文网首页
路由器之UPnP协议

路由器之UPnP协议

作者: PoWerfulHeart | 来源:发表于2020-10-15 19:18 被阅读0次

前言

通用即插即用(英语:Universal Plug and Play,简称UPnP)是由“通用即插即用论坛”(UPnP™ Forum)推广的一套网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。UPnP通过定义和发布基于开放、因特网通讯网协议标准的UPnP设备控制协议来实现这一目标。
————百度百科

实例

目前市面上大部分路由器都支持UPnP协议,那么我们在开发关于路由器的项目时,都会去获取路由器的一些相关信息,这时候UPnP协议就派上用场了。

关于UPnP的原理解析和介绍,网络上的文章太多了,这里就不再赘述。
直接上干货

  • 1.使用udp多播向239.255.255.250:1900发送一条ssdp搜索报文
    M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN:"ssdp:discover"\r\nMX:5\r\nST: upnp:rootdevice\r\n
  • 2.监听239.255.255.250:1900,如果网络存在一个UPnP设备的话,设备必须发送响应信息

  • 3.解析响应消息,获得LOCATION的值,会得到一个xml的地址,即根设备(路由器)的描述信息地址

代码示例

node

    const socket = dgram.createSocket('udp4');

    socket.on('error', (err) => {
        socket.close();
    });

    socket.bind(1900, () => {
        socket.setMulticastTTL(128);
        socket.addMembership('239.255.255.250');
        socket.setMulticastLoopback(true);

        const msg = toByteArray('M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN:"ssdp:discover"\r\nMX:5\r\nST: upnp:rootdevice\r\n');

        socket.send(msg, 0, msg.length, 1900, '239.255.255.250', function (error, bytes) {
        });
    });

    socket.on('message', function(data, rinfo) {
        socket.close();

        var str = String.fromCharCode.apply(null, new Uint8Array(data));
        const ClearBr = (key) => { 
            key = key.replace(/<\/?.+?>/g,""); 
            key = key.replace(/[\r\n]/g, ""); 
            return key; 
        } 

        const xmlAddress = ClearBr(str).match(/LOCATION: (\S*).xml/)[1] + ".xml";

        fetch(xmlAddress).then(res => {
            return res.text();
        }).then(res => {
            console.log(res);
            const modelName = res.match(/<modelName>(\S*)<\/modelName>/);   //路由器型号
        });
    });

    function toByteArray (obj){
        var uint = new Uint8Array(obj.length);
        for (var i = 0, l = obj.length; i < l; i++){
            uint[i] = obj.charCodeAt(i);
        }
        return new Uint8Array(uint);
    }

相关文章

  • 路由器之UPnP协议

    前言 通用即插即用(英语:Universal Plug and Play,简称UPnP)是由“通用即插即用论坛”(...

  • UPnP协议利用

    1.UPnP介绍 UPnP为即插即用的缩写(Universal Plug and Play)是一套网络协议。适用于...

  • 理解UPnP协议

    简介 UPnP 是针对智能家电、 无线设备以及各种外观尺寸的个人电脑的普遍对等(peer-to-peer)网络连接...

  • UPnP协议学习(一)

    概述 UPnP是通用即插即用(Universal Plug and Play)的缩写,它主要用于实现设备的智能互联...

  • 投屏协议 DLNA ---UPnP

    投屏协议 DLNA ---UPnP 投屏的应用场景视频投屏 AirPlay(苹果私有的协议) 无线投屏DLNA(...

  • 关于SSDP

    SSDP(简单服务发现协议)是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(net...

  • freeswitch配置之nat穿越

    一、路由器去掉upnp和alg功能。 二、在fs上开启rport功能 三、设置rtp自动调整功能 四、设置sip和...

  • 【华为命令】路由器的网关(内部|外部)协议配置

    OSPF 协议配置 OSPF 基础概念 OSPF 开放最短路径优先协议,是一种内部网关协议,OSPF 通过路由器之...

  • 华为路由器分析

    华为路由器Huawei HG532漏洞复现过程 漏洞分析 这次出问题的点是upnp程序 是MIPS32位大端格式 ...

  • 初识Upnp😴

    1Upnp简介 ? 由通用即插即用论坛推广的一套网络协议。该协议的目标是使得家庭网络和公司网络中的各种设备...

网友评论

      本文标题:路由器之UPnP协议

      本文链接:https://www.haomeiwen.com/subject/savopktx.html