SSDP協議的設計初衷是使用HTTP協議進行設備的發現,是UPnP協議的組成部分。
從網絡層次模型來看,SSDP協議構建在HTTPU和HTTPMU之上。HTTPU是以UDP實現的HTTP協議,HTTPMU是廣播的HTTPU。
SSDP協議包括三種消息:
- SSDP 發現請求(ssdp::discover),使用HTTPMU發送,收到該消息的客戶端需要回HTTP OK(HTTPU),響應需要包含:
- 設備URL,客戶端訪問該URL拉取設備信息,將設備加入其設備列表;
- 心跳間隔,單位秒,該字段表明設備發送心跳的間隔,若時間間隔內沒有收到心跳,客戶端認為設備離線。
- SSDP心跳(ssdp::alive),使用HTTPMU發送,收到該請求的客戶端更新其設備列表。不需要回響應。
- SSDP離線(ssdp::byebye),使用HTTPMU發送,收到該請求的客戶端將設備從其設備列表刪除。不需要回響應。
SSDP協議中,發現請求和心跳都可用於發現設備,一個是主動發現,另一個是被動發現。這樣設計的理由是可以在最短的時間發現新設備。
在當前的SSDP版本中,HTTPMU約定廣播地址是239.255.255.250,端口1900,這是一個保留地址,用於管理。同樣的,客戶端要收到廣播消息需要綁定該地址。由於同一端口只能綁定TCP或UDP,因此同樣是HTTP協議,HTTPMU不能使用80端口。
參考:
- SSDP協議文檔
- GENA協議文檔
- Administratively Scoped IP Multicast文檔(HTTPMU廣播地址)