前言由於工作需要學習upnp協議,特意找了很多資料,網上看了很多牛人blog.自己也通過整理筆記,加深自己記憶印象.
本人習慣:先看整體流程,再看實現細節和術語,否則開始沒有框架的感性認識,容易迷失在術語和細節從而浮躁打擊信心. 看了框架後, 一定要看官方文件,那裡的細節知識才是最準確的.因為其他人的文章 會有點睛之筆,也有誤導的陷阱,更多是重複.
我的流水賬就是後兩者,-_-!
一 術語
二 流程
三 基本元件
四 control piont
五 定址
六 發現
七ssdp協議訊息
一 術語
uuid
universally unique identifier 分布式系統中所以元素,有唯一的辨識,不需要**控制端注意辨識的制定. ******xx-***x-***x-***************x(8-4-4-16)分別是當前日期和時間,時鐘序列,全集唯一iee機器識別號(網絡卡mac)
udn
unique device name,基於uuid,不同時間對乙個裝置是唯一值
uri可用資源標誌符universal resource identifier. 組成: 訪問資源的命名機制,存放資源主機名,資源本身名稱,由路徑表示. html 4.0規範
urluri的子集
urn
url的更新形式. 提供了一種機制,用於查詢和檢索特定命名空間的**檔案.urn可以引用多個url
upnp需要ip層資料收發, httpmu和httpu是http變種,使用udp
ssdp: ****** service discovery protocol.
soap:
****** object access protocol,定義如何使用xml與http來執行遠端程式呼叫remote procedure call.包括控制點傳送命令訊息給裝置,和裝置傳送響應訊息給控制端
gena: generic evnet notification architecture, 控制點想要監聽裝置的某個服務狀態變數的狀況,控制點如何傳送訂閱訊息,並如何接受通知訊息.
二 流程
工作流程
addressing->discovery->description->(control,eventing,presentation)
addressing: dhcp 獲取ip, dns把主機名解析成ip位址
分四步: 發現,描述,控制,事件
發現:通過239.255.255.250:1900 udp多播 httpu(http通過udp)
其他裝置必須回應此訊息.每個配置檔案,它實現傳送一條訊息,定期將的裝置或程式 傳送一條訊息,宣布他的服務
描述每個配置檔案通過xml提供 本身描述
控制使用soap(http上使用xml來描述遠端過程呼叫伺服器和呼叫結果)
事件程式可以訂閱狀態變化(狀態變數)
,新狀態被傳送到所有訂閱的裝置和程式中
* sdk api 一次只能申請註冊乙個cp或乙個裝置
cpdevice
ssdp發現請求 search
ssdp存在宣告 notify
描述訂閱/退訂/續訂
notify 事件通知(gena)
soap 動作
三 基本元件
service
最小控制單元,服務描述是裝置不同狀態下的活動和裝置狀態
device
裝置描述:(upnp裝置架構使用major.minor主副版本來描述--發現和描述中使用)
包括: 1.根裝置型別,特定廠商,製造商資訊,如模組民稱,編號,序列號,..
2.裝置所支援服務資訊
基本資訊
裝置基本資訊: devicetype,friendlyname,udn
裝置服務: servicetype,serviceid,scpdurl(服務描寫文件獲取位址)controlurl,eventsuburl
四control piont
可以發現其他並控制其他裝置的控制裝置,裝置和控制點可以合併.
五 定址
addressing
1. 基於ip定址,
a.如果有dhcp伺服器,即處於網路管理狀態,必須用它分配的ip位址
b.沒有dhcp,無網路管理,利用auto-ip獲取,從一組本地鏈結ip選擇
1): 決定是否使用auto-ip,傳送dhcpdiscover請求ip,超時接收到dhcpoffer
2): 從169.254/16範圍選擇乙個位址,此範圍256個位址要保留?
3): 測試位址,使用arp位址解析協議,若有發現arp資料報,就要換新位址
4): 定期檢查動態位址可用性,每5分鐘.一旦dhcp指定位址到位,就釋放自動配置位址,或保持一段時間
5): 裝置名和dns互動,裝置dns名稱對其ip對映可以按照rfc2136 手動/被動輸入dns資料庫, 支援動態dns更新的裝置可以講dns記錄入dns中,
6): 計算機按照rtc1034和1035吧dns查詢提交至預先配置的dns伺服器,並從包含目標裝置ip位址的dns伺服器收到乙個響應. 計算機能靜態採用dns伺服器列表進行預先配置,或通過dhcp採用dns伺服器列表進行配置,或在分配位址後通過dhcpinform進行配置
六 發現
discovery
通過廣播多播,單播. 標準的多播位址,宣告,搜尋,撤銷都用ssdp定義
1.宣告 傳送關於裝置(服務)的專門資訊,以及關於內含裝置資訊.裝置仍可以用舊重新傳送,不可用應宣告撤銷,否則過期
1.1 標準協議.最高層,特定廠商資訊,下來是 協議棧,upnp論壇對廠商內容擴充,以上都存在upnp特定協議. 通過http 多播進行傳送,
見:ssdp協議訊息
UPnP的相關資料 整理
upnp universal plag and play,通用即插即用 urn uniform resource name,統一資源名稱,用於定位服務,與位址無關 url universal resource location,統一資源定位符,一般是乙個鏈結形式,如 uri uniform reso...
OPENGL學習筆記整理(一)
正式接觸opengl也已經超過一年了,自我感覺已經入門了,在菜鳥中也是乙隻老鳥了。或者也可以自大地說opengl太簡單了,就乙個狀態機而已。然而,這個狀態機,我又知多少呢。撇開平台的關係,opengl整個程式涉及了那些函式呢。有點忘了,趕緊整理了一下。首先,我們先不是物件導向程式設計,還是面向過程的...
shell 學習筆記整理(一)
shell指令碼地功能 使用者和核心連線的特殊程式。程式語言 編譯型和指令碼語言 script shell就是指令碼語言 shell指令碼的型別 1.非互動式指令碼 2.互動式指令碼 shell程式設計的基礎 1.文字編輯器 vi vim 當然,shell是純文字,可以使用任何文字編輯器 不要用wo...