最近在看libp2p的源码,发现需要先储备一些网络方面的知识才能看得懂,如UPnP

什么是UPnP

UPnP全名是Universal Plug and Play,即通用即插即用。简单的来说,UPnP 最大的愿景就是希望任何设备只要一接上网络,所有在网络上的设备马上就能知道有新设备加入,这些设备彼此之间能互相沟通,更能直接使用或控制它,一切都不需要设定,完全的Plug and Play。

组成

  • 设备
  • 控制点

步骤

  1. 寻址(Addressing)

开始会给所有设备或者控制点分配一个分配一个IP。 这个过程是这样的,设备或控制点向 DHCP 客户端发送一个 DHCPDISCOVER 消息,DHCP 客户端负责分配向他们分配 IP,如果局域网内没有 DHCP 服务,UPnP 设备将按照 Auto-IP 的协议通过算法呢从 169.254.1.0 to 169.254.254.255 地址范围内获取一个未被使用的 IP 地址。 对于新设备首次与网络建立连接时也会有这个寻址过程。

  1. 发现(Discovery)

这步是 UPnP 真正工作的第一步。 当一个设备被加入到网络中时,UPnP 发现协议允许它向控制点介绍自己的功能,设备会向多次向固定的地址及端口(239.255.255.250:1900)发送消息,控制点会监控给地址及端口。当一个控制点被加入到网络时,UPnP 发现协议允许它搜寻这个网络内它感兴趣的设备。这个过程内彼此交换剪短的信息,如类型、全局唯一标识符、指向详细信息的链接及当前状态(可选)。

  1. 描述(Description)

控制点通过1.发现(Discovery)过程中设备提供的指向设备详细信息的链接,获取设备的详细信息(Device description)及其提供的服务的详细信息(Service description)。

  1. 控制(Control)

控制点通过描述过程对设备的了解,控制点可以发送控制信息控制设备,设备在执行完命令后会给与控制点一个反馈。

  1. 事件(Eventing)

控制点可以监听设备的状态,这样设备的状态或信息发生了变化,只要产生一个事件广播出去,控制点即可进行响应,类似一般的订阅者模式。

  1. 展现(Presentation)

控制点可以从设备获取一个 HTML 页面,用于控制设备或展现设备信息,是对上面3.控制(Control)和4.事件(Eventing)过程的一个补充(即时展现)。