1.想要Implement UPnP的Protocol,就要去找UPnP-DeviceArchitecture-v1.0.pdf,這個檔案。
他有6個大項:
ID | Item | Descritption |
---|---|---|
0 | Addressing | 就是取得IP啦,沒有IP無法幹活阿。 |
1 | Discovery | 就是如何搜尋網路上的Device,此功能僅限Control Point使用,Device並無法互相找到。 |
2 | Description | Device被找到後,就要跟Cotrol Point敘述他的能力,他會給Control Point一份以XML格式的文件,來敘述他的能力。 |
3 | Control | 這裡所講的就是Control Point如何控制Device,簡單來說,Control Poing跟Device間的溝通,是透過傳遞一種SOAP格式的封包,其實是SOAP的Header包裹XML的內容,這份XML的內容就是Control Point要Device做的事情。 |
4 | Eventing | 這段講的是Control Point如何註冊Device的某項Service,註冊完後,這個Service有什麼狀態改變,就會透過Eventing protocol通知Control point,譬如說你要去戲院訂票,戲院票賣完了就要通知你,Control point跟Device間也是會有很多的訊息互換的。 |
5 | Presentation | Presentation指的是Device會提供一個以HTML base的Interface來讓使用者控制或是得知其狀態。 |
2.接下來就必須介紹一下UPNP的Protocol Stack了,你會發現還蠻簡單的,從下往上是:
1 | IP | IP Protocol |
2 | UDP/TCP | UDP/TCP Protocol |
3 | HTTP(muticast, uicast) | HTTP封包格式,以muticast或unicast傳送,muticast傳送方式使用於SSDP Protocol,GENA或是SOAP則使用unicast傳送。 |
4 | SSDP,GENA,SOAP | SSDP是搜尋網路上UPnP Device的Protocol,GENA是用來Subscribe跟做Eventing的Protocol,SOAP則是用來傳送Action的Protocol |
3.接下來,我以一個時間軸的流程圖,來說明整個UPnP從Search到可以使用的流程:
Step 1. Control Point發送SSDP封包,搜尋網路上的Device,Device接到搜尋封包的時候,必須回應SSDP封包,這個回應的封包裡面,有該Device的Description的URL。
Step 2.Control Point根據Description的URL,去跟Device要一份資料下來,根據這份Description,Control Point可以知道該Device擁有的Service跟其Service所提供的功能(Action)。
Step 3.Control Point針對他所想要使用的Service進行註冊的動作(Subscibe),Device必須回覆註冊成功的訊息。
Step 4.Control Point註冊結束後,便可以開始使用該Device的功能了,這個例子以UPnP燈為例,可以執行開燈關燈的動作。
Step 5.Device有了Control Point的註冊資訊後,必須以Eventing Protocol的機制回復他目前的狀態值。
0 意見:
張貼留言