UPNP 學習筆記整理 一

2021-06-12 14:05:05 字數 2916 閱讀 2943

前言由於工作需要學習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...