SSDP协议分析

时间:2024-03-03 07:55:54

SSDP协议的设计初衷是使用HTTP协议进行设备的发现,是UPnP协议的组成部分。

从网络层次模型来看,SSDP协议构建在HTTPU和HTTPMU之上。HTTPU是以UDP实现的HTTP协议,HTTPMU是广播的HTTPU。

SSDP协议包括三种消息:

  1. SSDP 发现请求(ssdp::discover),使用HTTPMU发送,收到该消息的客户端需要回HTTP OK(HTTPU),响应需要包含:
    • 设备URL,客户端访问该URL拉取设备信息,将设备加入其设备列表;
    • 心跳间隔,单位秒,该字段表明设备发送心跳的间隔,若时间间隔内没有收到心跳,客户端认为设备离线。
  2. SSDP心跳(ssdp::alive),使用HTTPMU发送,收到该请求的客户端更新其设备列表。不需要回响应。
  3. SSDP离线(ssdp::byebye),使用HTTPMU发送,收到该请求的客户端将设备从其设备列表删除。不需要回响应。

SSDP协议中,发现请求和心跳都可用于发现设备,一个是主动发现,另一个是被动发现。这样设计的理由是可以在最短的时间发现新设备。

在当前的SSDP版本中,HTTPMU约定广播地址是239.255.255.250,端口1900,这是一个保留地址,用于管理。同样的,客户端要收到广播消息需要绑定该地址。由于同一端口只能绑定TCP或UDP,因此同样是HTTP协议,HTTPMU不能使用80端口。

参考: