UPnP의 작동 방법

31433 
Created at 2007-05-27 18:48:09 
302   0   0   0  

UPnP를 통하여 장치는 완전히 자동으로 네트워크에 동적으로 합류하고, IP주소를 확보하며, 기능을 전달하고, 다른 장치의 존재 및 기능을 확인할 수 있으므로 진정한 제로 구성(zero configuration) 네트워크를 구현합니다. 장치들은 지속적으로 다른 장치들과 직접적으로 통신하여 피어-투-피어 네트워킹 기능을 보다 강화합니다.

UPnP 기능을 가진 네트워크로부터 혜택을 받을 수 있는 장치들은 매우 많으며, 예를 들면 지능형 제품, 무선 장치 및 모든 형태의 PC 제품 등이 있습니다.

UPnP의 적용 범위는 홈 자동화, 인쇄 및 이미징, 오디오/비디오 오락, 부엌 용품, 자동차 네트워크 등 기존 분야 및 신규 분야 모두에 적용이 가능하므로 실로 대단히 광범위합니다.

UPnP는 표준 TCP/IP 및 인터넷 프로토콜을 사용하므로 기존 네트워크에 매끄러운 통합이 가능합니다. 이러한 표준 프로토콜을 사용함으로써 UPnP는 다양한 경험과 지식을 활용할 수 있고 기본적으로 상호 운용성을 보장합니다.

UPnP는 개방형 분산 네트워크 구조를 가지고 있고 사용하는 프로토콜에 의하여 정의되기 때문에 특정 운영체제나 프로그래밍 언어 또는 물리적 매체(인터넷 등)에 의존하지 않고 독립성을 유지합니다. UPnP는 어플리케이션이 사용할 API를 지정하지 않으므로 운영체제 공급자들은 자체 고객들의 필요에 맞는 API를 개발할 수 있습니다.

누가 UPnP를 정의하는가?

"범용 플러그 앤 플레이 포럼"은 Microsoft가 공헌한 공통 장치 구조(Common Device Architecture)에 따라 'UPnP 장치 및 서비스 설명서' (원래 장치 제어 프로토콜 또는 DCPs라고 불렀음)를 정의합니다. 범용 플러그 앤 플레이 포럼은 UPnP 장치 및 서비스 사양을 작성하는데 있어서 선도적 역할을 하려는 회사 및 개인들이 속한 그룹을 말합니다. 1999년 10월 18일에 설립된 이 포럼은 업계에 속하는 340개 이상의 주요 공급업체들의 연합입니다.

이 포럼의 목적은 쉽게 연결할 수 있는 장치를 개발하고 가정 및 기업 환경에서 네트워크 구현 절차를 단순화시키는 것입니다. 그리고 이 포럼은 개방형 인터넷 기반 통신 표준을 기반으로 구현된 UPnP 장치 및 서비스 설명서를 정의하여 발행함으로써 그 목적을 달성하고 있습니다.

이 포럼의 웹 사이트 http://www.upnp.org/ 는 포럼이 개발하여 표준화한 스키마에 대한 중앙 저장소입니다. 또한 이 사이트는 장치 구조에 관한 문서, 장치와 서비스 설명에 필요한 템플릿, 장치 및 서비스 설명서 작성 지침 등을 포함하고 있습니다. UPnP.org 도 또한 이 포럼의 활동 및 진행 상황에 관한 정보를 제공합니다.

UPnP의 책임

UPnP는 제어 포인트와 장치 사이의 통신을 지원합니다. 네트워크 매체와 TCP/IP 프로토콜 및 HTTP는 기본적 네트워크 연결성 및 주소 지정 기능을 제공합니다. 이러한 개방형 표준 인터넷 기반 프로토콜을 토대로 하여 UPnP는 검색, 설명, 제어, 이벤트 및 프리젠테이션을 처리하기 위하여 일련의 HTTP 서버들을 정의합니다.

이 섹션에서는 문서의 앞 부분에서 정의한 프로토콜들이 이와 같은 필요성을 충족시키기 위하여 어떻게 활용되는 가에 대하여 설명합니다.

UPnP 프로토콜 스택

앞에서는 UPnP를 구현하기 위하여 사용하는 프로토콜을 설명하였습니다. 이제부터는 이러한 프로토콜을 보다 잘 이해할 수 있도록 다이어그램을 통해 살펴보도록 하겠습니다.

UPnP의 작동 방법

그림 1: UPnP 프로토콜 스택

"UPnP 장치 구조"는 모든 장치/서비스에 대한 장치 설명서 및 서비스 설명서를 작성하는데 필요한 스키마나 템플릿을 정의합니다.

따라서 개별적인 작업 위원회는 다양한 장치 및 서비스 형태를 표준화하고 각 장치나 서비스 형태에 대한 템플릿을 만듭니다.

마지막으로 공급업체들이 이 템플릿에 고유한 장치 정보 (장치 이름, 모델 번호, 제조업체 명, 서비스 설명서에 대한 URL)를 추가합니다.

그리고 나서 이 데이터를 "UPnP 장치 구조" 문서 ( 예: XML 장치 설명 템플릿)에 정의된 UPnP용 프로토콜에 포함시키게 됩니다.

필요한 UPnP 정보는 메시지가 SSDP, GENA, SOAP를 사용하여 포맷되기에 앞서 먼저 그 전에 모든 메시지에 삽입된 후 HTTP, HTTPU 또는 HTTPMU를 사용하여 전달됩니다.

UPnP 네트워킹 단계

주소 지정

UPnP 네트워킹의 기반은 TCP/IP 프로토콜이며 이 프로토콜의 핵심은 주소지정(addressing)입니다. 각 장치는 DHCP (동적 호스트 구성 프로토콜) 클라이언트를 가지고 있어야 하며, 장치가 맨 처음 네트워크에 연결되면 DHCP 서버를 검색해야 합니다. 만약 DHCP 서버가 있으면 해당 장치는 반드시 할당된 IP 주소를 사용해야 합니다. 만약 사용 가능한 DHCP 서버가 없는 경우에는 장치는 주소를 확보하기 위하여 '자동 IP' (Auto IP)를 사용해야 합니다.

간단히 말하면, 자동 IP는 보관된 사설 주소 세트 중에서 장치가 IP 주소를 지능적으로 선택하는 방법, 그리고 관리 네트워크와 비관리 네트워크 (managed and unmanaged networks) 사이에서 쉽게 이동할 수 있도록 하는 방법을 정의한 것을 말합니다.

편리한 장치 이름을 사용하는 UPnP 외에도 상위 계층 프로토콜을 구현할 수도 있습니다. 이 경우에는 호스트(장비) 이름을 IP 주소로 해석하는 것이 반드시 필요합니다. 일반적으로 DNS(도메인 이름 서비스)가 이 작업에 활용됩니다. 이러한 기능이 필요한 장치에는 DNS 클라이언트가 포함될 수 있으며, 자신의 이름-주소 매핑을 위하여 동적 DNS 등록 기능을 가지고 있을 수 있습니다.

검 색 (Discovery)

일단 장치가 네트워크에 연결되고 적절한 주소가 지정되면 검색 작업이 진행될 수 있습니다. 검색 작업은 앞서 설명한 것처럼 SSDP가 처리합니다. 장치가 네트워크에 추가되면 SSDP는 이 장치가 제공하는 서비스를 네트워크 상에 있는 제어 포인트에 알리도록 합니다.

이 두 가지 경우에 있어서 기본적인 교환 정보는 장치 또는 장치가 제공하는 서비스와 관련된 주요 정보(예: 형태, 식별자, XML 장치 설명서에 대한 포인터 등)를 포함하는 검색 메시지입니다.

설 명 (Description)

UPnP 네트워킹의 다음 단계는 설명입니다. 제어 포인트가 장치를 검색하기는 했지만, 제어 포인트는 여전히 장치에 대하여 알고 있는 정보가 아주 적습니다. 이 제어 포인트가 장치 및 장치의 기능에 대한 정보를 자세하게 파악하여 상호작용을 하려면, 제어 포인트는 검색 메시지와 해당되는 장치가 제공하는 URL로부터 장치 설명 내용을 확인해야 합니다.

장치들은 다른 논리적 장치 및 서비스를 포함하고 있을 수 있습니다. 장치에 대한 UPnP 설명은 XML로 표현되어 있으며, 공급 업체 고유의 제조 정보(모델명, 일련번호, 제조업체 이름, 제조업체 URL등)를 포함하고 있습니다. 이 설명은 또한 제어, 이벤트 및 프리젠테이션을 위한 URL 뿐만 아니라 많은 내장된 장치 및 서비스에 관한 목록도 포함하고 있습니다.

제 어 (Control)

제어 포인트는 장치 설명을 확보한 후에 장치 제어를 위한 필수적 작업을 수행합니다. 서비스를 보다 잘 파악하기 위하여 제어 포인트는 각 서비스의 구체적인 UPnP 설명서를 확보해야 합니다. 서비스에 대한 설명서도 XML로 작성되고 명령, 동작 및 각 동작에 대한 서비스 응답, 매개 변수, 독립 변수에 관한 목록을 포함하고 있습니다. 그리고 서비스 설명서는 또한 다양한 변수 목록을 포함하며, 이러한 변수들이 런타임에서의 서비스 상태를 정의하며, 이들 변수들은 데이터 형태, 범위, 이벤트 특성 등을 설명합니다.

장치를 제어하기 위하여 제어 포인트는 장치의 서비스에 동작 요청을 보냅니다. 그러기 위해서 제어 포인트는 적절한 제어 메시지를 해당 서비스에 대한 제어 URL(장치 설명서에 있음)로 보냅니다. 제어 메시지도 SOAP를 사용하여 XML로 표현됩니다.

해당 서비스는 이 제어 메시지에 대한 응답으로서 특정 동작 값이나 장애 코드를 제공합니다.

이벤트 작업 (Eventing)

서비스에 대한 UPnP 설명서는 서비스가 응답하는 동작 목록 및 런타임에서 서비스의 상태를 모델화하는 변수들의 목록을 포함하고 있습니다. 서비스는 이러한 변수들이 변경되면 업데이트 항목을 발행하고 제어 포인트는 이 정보를 수신하기 위하여 등록할 수도 있습니다.

서비스는 이벤트 메시지를 송신하는 방식으로 업데이트 항목을 발행합니다. 이벤트 메시지는 한 개 이상의 상태 변수 이름 및 이들 변수들의 현재 값을 포함하고 있습니다. 이 메시지도 XML로 표현되고 GENA를 통하여 포맷됩니다.

초기 이벤트 메시지는 제어 포인트가 처음에 등록할 때 송신됩니다. 이 이벤트 메시지는 모든 이벤트 변수의 이름 및 값을 포함하고 있고 가입자들은 이를 활용하여 보유하고 있는 해당 서비스 상태 모델을 초기화합니다.

다수의 제어 포인트를 지원하기 위하여 전체 등록자들에게 모든 이벤트 메시지가 송신되며, 등록자들은 모든 이벤트화된 변수에 대한 이벤트 메시지를 수신하고, 이벤트 메시지들은 상태 변수의 변경 이유에 관계없이 송신됩니다. (이것은 동작 요청 또는 상태 변경에 대한 응답임)

프리젠테이션 (Presentation)

만약 장치가 프리젠테이션용 URL을 가지고 있다면, 제어 포인트는 이 URL을 통하여 페이지를 검색할 수 있고 이 페이지를 브라우저에 로드할 수 있으며, 페이지의 특성에 따라서 사용자들은 장치를 제어하거나 장치 상태를 조회할 수 있습니다. 이 기능들을 수행할 수 있는 수준은 프리젠테이션 페이지 및 장치의 특정 기능에 달려있습니다.

요 약:

  • 인터넷과 마찬가지로 UPnP는 유선 프로토콜에 기반 하므로 (API를 기반으로 하지 않음) 다양한 매체 및 플랫폼에서 범용으로 수용할 수 있습니다.
  • UPnP는 기존 표준을 기반으로 하므로 손쉬운 상호 운용이 가능합니다.
  • UPnP는 업계의 전폭적인 지원을 받고 있으므로 성공을 보장합니다.
  • 표준을 기반으로 하기는 하지만 UPnP는 현재 및 미래 네트워크 장비의 필요성을 충족시킬 수 있는 유연성을 가지고 있습니다.


Tags: UPnP addressing description discovery 윈도우즈 Share on Facebook Share on X

◀ PREVIOUS
DLNA, UPnP 개요
▶ NEXT
UPnP 네트워크의 구성요소
  Comments 0
Login for comment
SIMILAR POSTS

UPnP 구현 시나리오 (created at 2007-05-27)

DLNA, UPnP 개요 (created at 2007-05-27)

원격 부팅(Wake on-LAN : WOL) (created at 2007-05-27)

UPnP 네트워크의 구성요소 (created at 2007-05-27)

UPnP 프로토콜 개요 (created at 2007-05-27)

UPnP 네트워크의 예 (created at 2007-05-27)

유즈 케이스(Use Case)를 활용한 UML 표기법 입문 (created at 2007-05-26)

UTF-8로 인코딩된 문자열을 EUC-KR로 바꾸는 방법 (created at 2007-05-29)

백줄 글보다 낫다「다이어그램 작성 프로그램」 (created at 2007-05-26)

UML은 무엇을 위해 있는 것일까? (created at 2007-05-26)

타임아웃 시간줄이기 (created at 2007-05-18)

XP 윈도우 창 속도 높이기 (created at 2007-05-18)

Windows XP에서 윈도우 창이 뜨는 속도를 높이는 방법 (created at 2007-05-18)

Windows XP Shutdown(윈도우종료) 빠르게 하기 (created at 2007-05-18)

내컴퓨터의 <공유문서>를 보이지 않게 하려면? (created at 2007-05-18)

자신의 Windows XP 정품 인증 확인 방법 (created at 2007-05-18)

프로그램 목록에서 지워지지 않는 목록 지우기 (created at 2007-05-18)

PC가 점점 느려지고 있다면 바탕화면에 있는 단축 아이콘이 점유하는 메모리 용량을 되찾아라 (created at 2007-05-18)

폴더 창 실행 속도 끌어올리기 (created at 2007-05-18)

윈도의 묵묵부답! '무응답 시간' 단축하기 (created at 2007-05-18)

리아(RIA)가 온다...리아를 주목하라... (created at 2007-05-16)

초창기 윈도우즈 (created at 2007-05-16)

WindowsXP 부팅시 부팅 로고 안나오게 하는 방법 (created at 2007-05-14)

노턴 고스트 2005 (9.0) 설치 및 사용방법 (created at 2007-05-13)

특정 폴더의 특정 파일만 파일명으로 지우기 (created at 2007-05-07)

ShellExecuteEx를 이용한 커맨드라인 기반 어플리케이션 실행 (created at 2007-05-07)

웹페이지 속도 빠르게 하는 방법 10가지 (created at 2007-06-21)

온톨로지(ontology)란 무엇인가? (created at 2007-07-11)

OWL(One World Language)은 무엇인가? (created at 2007-07-11)

OWL(One World Language)의 다른 종류 (created at 2007-07-11)

OTHER POSTS IN THE SAME CATEGORY

MFC에서 디스크 포멧(Disk Format)하기 (created at 2007-07-20)

소켓을 생성하여 CSocket에 Attach하는 방법 (created at 2007-07-19)

소켓 프로그래밍 기본 흐름 - Socket Programming Basic Flow (created at 2007-07-16)

Java로 구현하는 간단한 Client & Server 프로그램 (created at 2007-07-16)

OWL(One World Language)의 다른 종류 (created at 2007-07-11)

OWL(One World Language)은 무엇인가? (created at 2007-07-11)

온톨로지(ontology)란 무엇인가? (created at 2007-07-11)

시간 알아내는 함수 gmtime (created at 2007-06-27)

웹페이지 속도 빠르게 하는 방법 10가지 (created at 2007-06-21)

글자 깜빡이게 하기 (created at 2007-06-05)

PHP에서 URL Open시 에러가 날때 (created at 2007-06-05)

UTF-8로 인코딩된 문자열을 EUC-KR로 바꾸는 방법 (created at 2007-05-29)

UPnP 네트워크의 예 (created at 2007-05-27)

UPnP 프로토콜 개요 (created at 2007-05-27)

UPnP 네트워크의 구성요소 (created at 2007-05-27)

DLNA, UPnP 개요 (created at 2007-05-27)

원격 부팅(Wake on-LAN : WOL) (created at 2007-05-27)

유즈 케이스(Use Case)를 활용한 UML 표기법 입문 (created at 2007-05-26)

백줄 글보다 낫다「다이어그램 작성 프로그램」 (created at 2007-05-26)

UML은 무엇을 위해 있는 것일까? (created at 2007-05-26)

타임아웃 시간줄이기 (created at 2007-05-18)

XP 윈도우 창 속도 높이기 (created at 2007-05-18)

Windows XP에서 윈도우 창이 뜨는 속도를 높이는 방법 (created at 2007-05-18)

Windows XP Shutdown(윈도우종료) 빠르게 하기 (created at 2007-05-18)

내컴퓨터의 <공유문서>를 보이지 않게 하려면? (created at 2007-05-18)

자신의 Windows XP 정품 인증 확인 방법 (created at 2007-05-18)

프로그램 목록에서 지워지지 않는 목록 지우기 (created at 2007-05-18)

PC가 점점 느려지고 있다면 바탕화면에 있는 단축 아이콘이 점유하는 메모리 용량을 되찾아라 (created at 2007-05-18)

폴더 창 실행 속도 끌어올리기 (created at 2007-05-18)

윈도의 묵묵부답! '무응답 시간' 단축하기 (created at 2007-05-18)

UPDATES

글루코사민 vs. 콘드로이친: 무엇이 더 나은 관절 건강 보조제일까? (created at 2024-04-22)

광주 5·18 민주화운동 알린 테리 앤더슨 前 AP 기자 (created at 2024-04-22)

햄과 소세지가 우리 몸에 일으키는 부작용 (updated at 2024-04-22)

콘드로이친의 염증 감소효과 (updated at 2024-04-22)

코사민 DS - 글루코사민+콘드로이친 복합물이 함유된 퇴행성 관절 건강보조제 (updated at 2024-04-22)

삼겹살 먹을때 환상조합 (created at 2024-04-22)

일본 여중생의 특이한 취향 (created at 2024-04-22)

우리가 먹는 약물이 바꿔버린 생태계 (created at 2024-04-21)

일본에서 그린 상상속의 사무직과 현실속의 사무직 (updated at 2024-04-21)

북한 미대생들이 그린 북한 최고존엄 김정은 (created at 2024-04-21)

입사 후 1년도 되지 않은 회사에서 구조조정에 의한 퇴직 불응에 따른 해고 처리시 대응 가능한 방법 (updated at 2024-04-20)

한고은님의 옛날 사진 (updated at 2024-04-20)

소녀대 - Bye Bye Girl (updated at 2024-04-13)

대한민국 날씨 근황 (created at 2024-04-13)

성일종 인재육성 강조하며 이토 히로부미 언급 - 인재 키운 선례? (updated at 2024-04-13)

일제강점기가 더 살기 좋았을지도 모른다는 조수연 국민의힘 후보 - 친일파? (updated at 2024-04-13)

Marshall Ha님의 샤오미 SU7 시승기 - 테슬라의 일론 머스크님이 긴장할만한 느낌 (updated at 2024-04-09)

윙크하는 귀염둥이 반려견들 (created at 2024-04-08)

달콤 살벌한 고백 (created at 2024-04-08)

북한 최정예 공수부대 훈련 모습 (updated at 2024-04-02)

맛있었던 친구 어머니의 주먹밥이 먹고 싶어요 (created at 2024-04-02)

자리 마음에 안든다고 6급 공무원 패는 농협 조합장 (created at 2024-03-26)

85세 딸 짜장면 사주는 102세 어머니 (created at 2024-03-26)

1990년대 감각파 도둑 (created at 2024-03-26)

치매에 걸린 69살의 브루스 윌리스가 전부인 데미무어를 보고 한 말 (updated at 2024-03-22)

경제는 대통령이 살리는 것이 아닙니다 라던 윤석열대통령 - 상황 안좋아지자 여러 전략을 펼쳤지만, 부작용 속출했던 2024년의 봄 (updated at 2024-03-13)

극빈의 생활을 하고 배운것이 없는 사람은 자유가 뭔지도 모를 뿐 아니라 왜 개인에게 필요한지에 대한 필요성을 못느낀다는 윤석열 대통령 (updated at 2024-03-08)

조선일보를 안본다는 사람들이 말하는 그 이유 - 천황폐하, 전두환 각하, 김일성 장군 만세? (created at 2024-03-07)

광폭타이어를 장착하면 성능이 좋아질거라는 착각 (updated at 2024-03-03)

면허시험장에서 면허갱신하면 하루만에 끝나나? (updated at 2024-03-03)