본문 바로가기

Project 자료수집

UPnP 구성요소 동작 순서

"본 내용은 "http://blog.naver.com/kittenjun/18472153"" 에서 발췌한 것임을 밝힙니다.








<구성요소 동작 순서>

 

ㅁAddressing

-DHCP(Dynamic Host Configuration Protocol)를 사용하여 IP 주소 할당

-DHCP로 주소할당을 할 수 없으면 Auto-IP 수행

-Auto-IP 동작

-Pick an address in 169.254.XXX.XXX

-Check its availability using ARP

-If in use, try another address

-Periodically try a DHCP Server


ㅁDiscovery

-IETF Draft Simple Service Discovery Protocol

-주요 동작

ⓐMulticast 광고 - HTTPMU

ⓑUnicast 광고 - HTTPU

ⓒUDP


-디바이스가 광고 메시지 송신

ⓐ디바이스는 홈 네트워크에 접속되면, 일정한 시간 간격으로 디바이스와 디바이스가 제공하는 서비스들에 대한 정보를 광고

ⓑ미리 정해진 멀티캐스트 주소(239.255.255.250)와 포트번호(1900)로 메세지를 송신

ⓒ컨트롤 포인터도 항상 새로운 디바이스나 서비가 홈 네트워크상에 장착되었는 지를 감지하기 위해 이를 청취한다.


-광고 메시지 내용

''ⓐ이벤트 알림을 위한 'NOTIFY' 메소드

''''ⓑHTTP 헤더내 'NTS'필드의 값을 'ssdp:alive'로 하여 현재 디바이스가 작동하고 있음을 나타내는 기본 적인 정보를 광고

ⓒ광고 메시지의 수명

ⓓ보다 상세한 디바이스 정보를 포함하는 XML상세 문서에 대한 URL을 포함

ⓔ현재 디바이스의 운영체제 정보와 UPnP 프로토콜 버전 및 디바이스의 제품 버전 및 UUID


-Device multicasts 를 통한 새로운 Device 추가 및 갱신을 위한 메시지 내용

NOTIFY *HTTP/1.1

HOST: 239.255.255.250: 1900

CACHE-CONTROL: max-age = seconds until advertisement expires

LOCATION: URL for UPnP description for root device

NT:search target

NTS:ssdp:alive

USN:advertisement UUID


-UPnP컨트롤 포인터는 홈 네트워크에 연결됨과 동시에 홈 네트워크 상에서 자신이 관심을 가지는 디바이스와 서비스의 검색을 수행

ⓐ검색 메시지를 보낼 때에는 SSDP 프로토콜에서 정의한 멀티 캐스트 채널을 이용

ⓑ응답은 검색 메시지를 보낸 호스트로 직접 유니캐스트하여 메시지를 송신

ⓒ관심있는 디바이스나 서비스의 지시자(UUID)를 명시하여 검색할 수 있으며, 디바이스나 서비스의 종류(type)를 명시하여 서도 검색 가능

UPnP포럼에서는 이를 디바이스와 서비스종류를 정의하고, 지시자는 UPnP제조회사들에 의해 정의

''ⓔ검색 메시지에서는 SSDP에서 정의한 'M-SEARCH'메소드를 사용하며, MAN필드에

"""ssdp:dicover"를 기입


-Control point multicasts 가 Looking for device or service 하는 내용

M-SEARCH *HTTP/1.1

HOST: 239.255.255.250:1900

""MAN: "ssdp:discover"

MX:seconds to delay response

ST:search target


-Device unicasts 가 If ST matches an NT 경우의 내용

HTTP/1.1 200 OK

CACHE-CONTROL : max-age = seconds until advertisement expires

LOCATION: URL for UPnP description for root device

ST: search target

USN: advertisement UUID

 


ㅁ디바이스 기술 단계

일단 컨트롤 포인트가 서비스를 찾으면 TCP 상의 HTTP를 통해서 기술 문서를 요청한다. 이는 표준 HTTP GET 명령을 통해서 수행된다.

디바이스에 대한 UPnP 기술 문서는 XML로 표현되며, 모델명, 모델 번호, 시리얼 번호, 제조자명, 벤더 종속적인 웹사이트의 URL 등과 같은 벤더에 종속적인 정보와 제조자의 정보도 포함한다. 또한 기술 문서는 제어, 이벤팅, 프리젠테이션을 위한 URL뿐만 아니라 내장된 디바이스 또는 서비스의 리스트도 포함한다. 각 서비스에 대한 기술 문서는 그 서비스가 응답할 명령(또는 액션), 각 명령에 대한 매개변수 리스트를 포함한다. 또한 서비스에 대한 기술 문서는 변수 리스트를 포함하며 변수들은 런타임 때 서비스의 상태를 나타낸다.


ㅁDescription

-Description Documents expressed in XML

-Device description : Physical / Logical / UI properties

-Service description : Available actions / State Information

ㅁProtocal stack

------------------------

     UPnP vendor

------------------------

    UPnP Forum

------------------------

UPnP Device Architecture

------------------------

 HTTP

------------------------

 TCP

------------------------

 IP

------------------------


ㅁ 컨트롤 포인터가 디바이스 검색 응답에는 간략한 정보

-디바이스나 서비스의 ID나 그 메시지의 LifeTime등

-상세한 정보를 얻기 위해서는 메시지의 LOCATION필드의 URL에 해당하는 XML 상세 문서를 다운로드

ㅁ디바이스 상세 문서

-UPnP포럼에서 표준화한 XML문서 형식의 디바이스와 서비스에 대한 정보가 기술

-기본 디바이스(root device)에 대하여 모델 이름과 제품번호, 제조회사명, 관련 URL등과 서비스 상세문서의 URL 및 서비스 제어 URL과 이벤트 URL등의 정보가 XML표기법으로 기술

ㅁ서비스 상세 문서

-서비스 형식(Type)별로 문서 제공

-각 문서에는 서비스가 제공하는 명령(Action)들과 서비스의 상태 정보를 나타내는 변수들의 변수형과 범위, 기본값 등이 정의





ㅁ제어 단계

컨트롤 포인트가 디바이스의 기술 문서를 가져온 후, 컨트롤 포인트는 디바이스의 서비스에게 명령을 보낼 수 있다. 이를 위해서 컨트롤 포인트는 서비스의 제어 URL로 적합한 제어 메시지를 보낸다. 제어 메시지는 XML로 표현되며, SOAP 프로토콜을 사용한다. 함수 호출처럼 제어 메시지에 응답하기 위해서 서비스는 명령에 종속적인 값을 반환한다. 서비스의 런타임 상태를 나타내는 변수 값이 변화됨으로써 명령의 효과가 나타난다[1].


ㅁControl

-컨트롤 포인트는 디바이스에 대한 상세 문서를 전송 받아온 후, 디바이스의 서비스들에 대해 명령들을 보낼 수 있다.

==>컨트롤 포인터는 디바이스 상세 문서에 나타나 있는 서비스 제어 URL에 대하여 명령 요청 메시지를 보냄으로써, 디바이스의 제어를 행한다. 제어 메시지는 역시 XML로 표현되는 SOAP 프로토콜을 사용한다.

-제어 명령 요청의 수행 결과로 디바이스 상태 값이 변한다면, 서비스 상세 문서에서 정의한 것에 따라 결과를 응답 메시지 내에 인자로 넘겨 줄 수 잇다.

 

ㅁSimple Object Access Protocol

-XML format for information exchange

-Delivers data using HTTP over TCP/IP

-SOAP is a standard convention for remote procedure calls

 

ㅁProtocol stack

-------------------------

     UPnP vendor

-------------------------

    UPnP Forum

-------------------------

UPnP Device Architecture

-------------------------

       SOAP

-------------------------

HTTP

-------------------------

TCP

-------------------------

IP

-------------------------




 

ㅁ이벤팅 단계

서비스에 대한 UPnP 기술 문서는 서비스가 응답하는 명령의 리스트와 런타임 때 서비스의 상태를 나타내는 변수들의 리스트가 포함되어 있다. 서비스는 변수가 변했을 때 이 변수가 변했음을 알리며, 컨트롤 포인트는 이 정보를 받기 위해서 서비스에 등록할 수 있다. 서비스는 이벤트 메시지를 보냄으로써 갱신을 알린다. 이벤트 메시지는 하나 이상의 상태 변수의 이름과 그러한 변수들의 현재 값을 포함한다. 이벤트 메시지는 XML로 표현되며 GENA를 사용하여 구성된다


ㅁEventing

-이벤트는 디바이스에 존재하는 서비스들의 변화된 상태 값들을 컨트롤 포인트에게 알려 주는 동작

==>컨트롤 포인트는 관심을 가지는 디바이스의 서비스에 대해 이벤트 구독(Subcription)신청을 하고, 디바이스는 각 컨트롤 포인트마다 ID를 할당 한다.

==>등록된 구독 신청에 대해 디바이스는 이벤트 발생시 해당 컨트롤 포인터에게 상태 변수 값들을 이벤트로 공지


ㅁGeneral Event Notification Architecture

-GENA is based on XML delivered via HTTP on TCP/IP

-Eventing is a very simple push model


ㅁProtocol stack

--------------------------

UPnP vendor

--------------------------

UPnP Forum

--------------------------

UPnP Device Architecture

--------------------------

HTTP                    GENA

--------------------------

TCP

--------------------------

IP

--------------------------




 

ㅁ프리젠테이션 단계

디바이스가 프리젠테이션을 위한 URL을 가지고 있다면, 컨트롤 포인트는 이 URL로부터 페이지를 가져와서 브라우저에 로드시켜, 브라우저를 통해 사용자가 디바이스를 제어하거나 디바이스 상태를 볼 수 있게 한다. 프리젠테이션 페이지를 가져오는 프로토콜은 디바이스 기술 문서를 가져올 때와 마찬가지로 단순한 TCP 기반 HTTP이다

 

ㅁPresentation

''-프리젠데이션의 URL은 디바이스 상세 문서의 'Presentation URL'요소에 기술

==>컨트롤 포인트는 디바이스로부터 이 문서를 브라우저로 전송 받아, 장치의 상태 정보를 보고 받으며, 장치를 제어할 수 있도록 사용자에게 인터페이스를 제공한다..

==>프리젠데이션 문서의 작성을 UPnP 포럼에서는 디바이스나 서비스의 상세문서와 달리 전적으로 디바이스 제작 회사 측에 전담 시키고 있다

 

ㅁProtocol stack

----------------------------

UPnPvendor

----------------------------

UPnP Device Architecture

----------------------------

HTTP

----------------------------

TCP

----------------------------

IP

----------------------------

 


'Project 자료수집' 카테고리의 다른 글

RAP 개발을 위한 각종 링크  (0) 2013.08.20
TourAPI Sample Source  (2) 2013.08.20
GIT 사용법  (0) 2013.08.16
UPnP 관련 URL  (0) 2013.07.16
오픈소스 홈네트워크 프로그램 (UPnP)  (0) 2013.07.02