SSDP協(xié)議基礎(chǔ)
SSDP協(xié)議,不知道大家是否聽(tīng)說(shuō)過(guò)呢?這個(gè)協(xié)議的使用多出現(xiàn)在端口當(dāng)中。下面我們就來(lái)了解一下這個(gè)協(xié)議的具體內(nèi)容吧。什么是SSDP協(xié)議呢?SSDP就是簡(jiǎn)單服務(wù)發(fā)現(xiàn)協(xié)議(SSDP,Simple Service Discovery Protocol)是一種應(yīng)用層協(xié)議,是構(gòu)成通用即插即用(UPnP)技術(shù)的核心協(xié)議之一。
簡(jiǎn)單服務(wù)發(fā)現(xiàn)協(xié)議提供了在局部網(wǎng)絡(luò)里面發(fā)現(xiàn)設(shè)備的機(jī)制。控制點(diǎn)(也就是接受服務(wù)的客戶端)可以通過(guò)使用簡(jiǎn)單服務(wù)發(fā)現(xiàn)協(xié)議,根據(jù)自己的需要查詢?cè)谧约核诘木植烤W(wǎng)絡(luò)里面提供特定服務(wù)的設(shè)備。設(shè)備(也就是提供服務(wù)的服務(wù)器端)也可以通過(guò)使用簡(jiǎn)單服務(wù)發(fā)現(xiàn)協(xié)議,向自己所在的局部網(wǎng)絡(luò)里面的控制點(diǎn)宣告它的存在。
實(shí)現(xiàn)
簡(jiǎn)單服務(wù)發(fā)現(xiàn)協(xié)議是在HTTPU和HTTPMU的基礎(chǔ)上實(shí)現(xiàn)的協(xié)議。
按照協(xié)議的規(guī)定,當(dāng)一個(gè)控制點(diǎn)(客戶端)接入網(wǎng)絡(luò)的時(shí)候,它可以向一個(gè)特定的多播地址的SSDP端口使用M-SEARCH方法發(fā)送“ssdp:discover”消息。當(dāng)設(shè)備監(jiān)聽(tīng)到這個(gè)保留的多播地址上由控制點(diǎn)發(fā)送的消息的時(shí)候,設(shè)備會(huì)分析控制點(diǎn)請(qǐng)求的服務(wù),如果自身提供了控制點(diǎn)請(qǐng)求的服務(wù),設(shè)備將通過(guò)單播的方式直接響應(yīng)控制點(diǎn)的請(qǐng)求。
類似的,當(dāng)一個(gè)設(shè)備接入網(wǎng)絡(luò)的時(shí)候,它應(yīng)當(dāng)向一個(gè)特定的多播地址的SSDP端口使用NOTIFY方法發(fā)送“ssdp:alive”消息。控制點(diǎn)根據(jù)自己的策略,處理監(jiān)聽(tīng)到的消息。考慮到設(shè)備可能在沒(méi)有通知的情況下停止服務(wù)或者從網(wǎng)絡(luò)上卸載,“ssdp:alive”消息必須在HTTP協(xié)議頭CACHE-CONTROL里面指定超時(shí)值,設(shè)備必須在約定的超時(shí)值到達(dá)以前重發(fā)“ssdp:alive”消息。如果控制點(diǎn)在指定的超時(shí)值內(nèi)沒(méi)有再次收到設(shè)備發(fā)送的“ssdp:alive”消息,控制點(diǎn)將認(rèn)為設(shè)備已經(jīng)失效。
當(dāng)一個(gè)設(shè)備計(jì)劃從網(wǎng)絡(luò)上卸載的時(shí)候,它也應(yīng)當(dāng)向一個(gè)特定的多播地址的SSDP協(xié)議端口使用NOTIFY方法發(fā)送“ssdp:byebye”消息。但是,即使沒(méi)有發(fā)送“ssdp:byebye”消息,控制點(diǎn)也會(huì)根據(jù)“ssdp:alive”消息指定的超時(shí)值,將超時(shí)并且沒(méi)有再次收到的“ssdp:alive”消息對(duì)應(yīng)的設(shè)備認(rèn)為是失效的設(shè)備。
在IPv4環(huán)境,當(dāng)需要使用多播方式傳送相關(guān)消息的時(shí)候,SSDP一般使用多播地址239.255.255.250和UDP端口號(hào)1900。
根據(jù)互聯(lián)網(wǎng)地址指派機(jī)構(gòu)的指派,SSDP字而已在IPv6環(huán)境下使用多播地址FF0X::C,這里的X根據(jù)scope的不同可以有不同的取值。