簡單服務發現協議
此條目需要更新。 (2018年7月18日) |
網際網路協定套組 |
---|
應用層 |
傳輸層 |
網路層 |
連結層 |
SSDP的OSI模型 | ||||
---|---|---|---|---|
應用層 | 簡單服務發現協議 | |||
HTTPU | HTTPMU | |||
傳輸層 | UDP | |||
網絡層 | IP (IPv4, IPv6) | |||
數據鏈路層 | 以太網 | Token Ring |
FDDI | …… |
簡單服務發現協議(SSDP,Simple Service Discovery Protocol)是一種應用層協議,是構成通用即插即用(UPnP)技術的核心協議之一。[1]
簡單服務發現協議提供了在局部網絡裡面發現設備的機制。控制點(也就是接受服務的客戶端)可以通過使用簡單服務發現協議,根據自己的需要查詢在自己所在的局部網絡裡面提供特定服務的設備。設備(也就是提供服務的服務器端)也可以通過使用簡單服務發現協議,向自己所在的局部網絡裡面的控制點宣告它的存在。[2]
實現
簡單服務發現協議是在HTTPU和HTTPMU的基礎上實現的協議。[2]
按照協議的規定,當一個控制點(客戶端)接入網絡的時候,它可以向一個特定的多播地址的SSDP端口使用M-SEARCH方法發送「ssdp:discover」消息。當設備監聽到這個保留的多播地址上由控制點發送的消息的時候,設備會分析控制點請求的服務,如果自身提供了控制點請求的服務,設備將通過單播的方式直接響應控制點的請求。[3]
類似的,當一個設備接入網絡的時候,它應當向一個特定的多播地址的SSDP端口使用NOTIFY方法發送「ssdp:alive」消息。控制點根據自己的策略,處理監聽到的消息。考慮到設備可能在沒有通知的情況下停止服務或者從網絡上卸載,「ssdp:alive」消息必須在HTTP協議頭CACHE-CONTROL裡面指定超時值,設備必須在約定的超時值到達以前重發「ssdp:alive」消息。如果控制點在指定的超時值內沒有再次收到設備發送的「ssdp:alive」消息,控制點將認為設備已經失效。[3]
當一個設備計劃從網絡上卸載的時候,它也應當向一個特定的多播地址的SSDP端口使用NOTIFY方法發送「ssdp:byebye」消息。但是,即使沒有發送「ssdp:byebye」消息,控制點也會根據「ssdp:alive」消息指定的超時值,將超時並且沒有再次收到的「ssdp:alive」消息對應的設備認為是失效的設備。[3]
在IPv4環境,當需要使用多播方式傳送相關消息的時候,SSDP一般使用多播地址239.255.255.250和UDP端口號1900。
根據互聯網地址指派機構的指派,SSDP在IPv6環境下使用多播地址FF0X::C,這裡的X根據scope的不同可以有不同的取值。[4]
參考資料
- ^ 曾輝、費雲、唐亮:《通用即插即用服務自動發現技術》,http://www.zte.com.cn/main/include/showemagazinearticle.jsp?articleId=977&catalogId=12165[永久失效連結]
- ^ 2.0 2.1 微軟公司:《Windows XP中的通用即插即用》,http://www.microsoft.com/china/windowsxp/pro/techinfo/planning/upnp/protocol.mspx (頁面存檔備份,存於網際網路檔案館)
- ^ 3.0 3.1 3.2 於辰濤:《UPnP協議編程實踐(二)》,http://www.ibm.com/developerworks/cn/linux/other/UPnP/part2/index.html (頁面存檔備份,存於網際網路檔案館)
- ^ IANA:《INTERNET PROTOCOL VERSION 6 MULTICAST ADDRESSES》,http://www.iana.org/assignments/ipv6-multicast-addresses/ (頁面存檔備份,存於網際網路檔案館)