因为最近做的项目内容是一个局域网内文件快传的功能,需要通过UPnP协议进行实现,因此需要对UPnP协议进行解读和理解。花了一些时间,对它进行解读。一开始以为UPnP是一个发现的协议,其实并不是,它包括了整个过程。个人的理解介绍如下:
快传功能在UPnP协议下的几个步骤
0.Addressing
即寻址。在UPnP协议中是最基础的步骤。通过DHCP服务器获取到本机的ip地址。
寻址步骤:
- 向DHCP服务器发送DHCPDISCOVER消息,收到回应则寻址结束
- 使用Auto-IP完成IP地址设置。在169.254/169.16范围查找空闲地址。选中后查询是否在使用,被占用则继续查找。应使用地址分辨协议(ARP)来测试是否被占用。一个ARP查询请求设置发送者的硬件地址为设备的硬件地址,发送者的IP地址为全0。设备应该侦听ARP查询响应,或者是否存在具有相同IP地址的ARP查询请求。如果发现,设备必须尝试新的地址。
- 使用Auto-IP设备必须定时检测DHCP服务器的存在,通过定时发送DHCPDISCOVER消息实现。如果接收到DHCP回应消息,则必须释放AutoIP分配的地址,取消所有广播消息,发送新的。
(PS:一个设备可以使用UPnP之外的更高层的协议,这些协议将为设备使用友好的名称。在这种情况下,将这些友好的主机名解析为IP地址就很必要了,DNS通常是用来实现此功能的。使用此功能的设备可能要包含一个DNS客户端,而且支持动态的DNS注册,通过注册将它自己的名字加入到地址分布图中。)