-
[MacOS,iOS:Apple] Bonjour ! 네트워크내 장치간 자동 설정, 관리는 내게 맡겨!리뷰/어플 2014. 8. 29. 08:00
필자가 Apple 장비를 여럿 사용하게된 가장 대표적인 이유를 얘기하라고 한다면,
"편해서"
라고 얘기하고 싶습니다. 이에 몇몇 분들은 오히려 '폐쇄적인' 정책때문에 불편하다라고 얘기할 수 있습니다. 네, 개인적인 취향(preference)이 달라서라면 정답이 없는 질문입니다. 하지만, 최소한 다수의 Apple장비(뿐만아니라 서비스를 위한 표준-IETF RFC, IEEE, ITU-을 따르는 장비)들이 네트워킹을 해서 무언가를 주고받고자 할때 사용자 입장에서 매우 편리함을 느낍니다. 사용자가 해야 하는 (복잡하고 어려운)일들을 Bonjour가 대신해주기 때문이죠.
[Bonjour 서비스 로고]
Bonjour 란?
Bonjour는 IETF(Internet Engineering Task Force)의 ZEROCONF Working Group에서 네트워킹에 필요한 설정을 자동화하기 위해 제정한 표준문서를 Apple에서 구현한 것으로 Mac OS, iOS 에 기본으로 탑재되어 있습니다.(Windows platform에서도 설치하고 사용할 수 있습니다)
그들이 해결하고자 했던 문제는
동일 네트워크 사용하는 가정, 회사, 또는 학교 등에서 사용자가 네트워크에 자신의 장비를 연결하거나 네트워크를 이용하는 다른 장비들-프린터, Access Point, File Server, or Intra Web Server 등)을 사용하기 위해 필요한 기본 설정 정보들, 예를 들어 각 장비의 IP 주소와 Port 번호, DNS Server 주소, 서브넷 등,을 개별적으로 설정할 필요 없이(Zero Configuration) 자동으로 사용할 수 있는 환경을 제공하는 것입니다. 쉽게 말해 Bonjour가 지향하는 서비스의 목표는 허가된 사용자가 네트워크 설정에 대한 전문적인 지식없이, 설치전문가없이도 네트워크에 원활히 접속해서 사용할 수 있게 할 수 있도록 하는 것입니다.
필자가 규모가 큰 회사를 다니면서 부서 자리 배치가 바뀐다거나 잠시 파견을 간다거나 컴퓨터(Windows PC)를 재설치 한다는 등 다양한 이유로 네트워크와 공용프린터와 개발 및 파일 서버를 매번 설정하고 잘 동작해야하는지 확인하는 번거로움이 얼마나 짜증나는 일인지 잘 압니다. 특히 나이가 있으신 선배님들은 아래 사람들에게 의지 할 수 밖에 없고, 지원팀에서 배정된 담당자는 몸이 하나라 수십여명의 질의를 다 해결해주기엔 역부족일때가 많아서 직접 해결하는 일이 다반사 였습니다. 그래서 인가, Bonjour가 더 편하게 느껴졌을 지도 모르겠습니다.
그렇다면 과연 어떻게 이러한 편리함을 제공할 수 있는 걸까요?
Bonjour의 동작 원리
기술적인 내용보다는 한 예를 이용해 빗대어 설명해보겠습니다.
H고등학교 교장선생님이 순찰 중에 3학년 2반에서 발길을 멈추셨습니다. 왜냐하면 교실 청소가 되어 있지 않아 매우 지저분해 보였기 때문이죠. 그 반의 청소부장에게 학생들을 도모하여 청소를 하게 하려고 합니다. 하지만 교장선생님은 3학년 2반 청소부장이 누구인지 모르기 때문에 바로 적절한 조치를 취할 수 없습니다. 보통의 경우 이러한 학급의 정보를 총괄하는 담임선생님이지만, 담임선생님은 다른반을 수업중이십니다. 그럼 교장선생님은 어떻게 하실까요? 너무나도 당연히 큰소리로 말씀하십니다. "이반 청소 담당자가 누구지?" 그럼 그반에 있는 누군가가 (운이 좋으면 청소 담당자 자신이) "A요" 라고 응답을 합니다. 그럼 교장 선생님은 "A가 누구지?" 하고 청소부장을 찾으시겠죠. 운이 좋게 A가 교실에 있으면 A가 응답할 것이고, 교장선생님은 A에게 처음 하고자 했던 일을 말씀하시며 교장선생님의 3학년 2반에서의 용무는 마무리가 됩니다.
예시에서 교장선생님은 '3학년 2반' 네트워크에 처음 접속한 새로운 노드이고
교장선생님의 머리에서 동작하는 '미화유지' 어플리케이션이 이 네트워크에서 '청소'서비스(service) 제공자를 찾으려 했던 것입니다. 이에 큰소리로(multicasting으로) 서비스의 담당자를 찾으셨고(discovery), 한 학생에게서 담당자의 세부 이름(pointer record)을 알게 되셨습니다. 여기서 이 학생이 청소부장의 이름을 알고 있는건 청소부장이 자신의 존재에 대해 사전에 미리 알렸기(publishing) 때문이죠. 그리고 교장선생님의 질문에 한 학생만 대답하는건 같은 대답을 하려던 다른 학생들도 이 학생의 대답을 들었기 때문에 추가로 답변하는 걸 포기 했기 때문이죠.
실제로 Mac이 새로운 네트워크에 접속했을 때 Finder는 Bonjour를 이용하여 공용 서버나, Time Capsule의 존재 유무를 질의(query)합니다. 마찬가지로, iTunes 도 Share Library가 있는지 질의하고 응답이 있다면 사용자가 원하던 안원하던 존재여부를 표시합니다. 접근에 필요한 세부 정보는 실제 사용자가 요구했을 때 재질의를 통해 확인(resolution, service record 획득)하게 됩니다.
이렇게 보면 Bonjour의 원리가 매우 간단해 보입니다.^^;
한편으로 이러한 Publication, Discovery, Resolution 의 구조는 네트워크에 매우 많은 Service가 존재할 땐 비 효율적이 될 수 있습니다. (상대적인 개념입니다. 이러한 경로를 중앙에서 관리하는 것과 비교했을 때 비효율적일 수 있다는 말입니다.) 하지만, 일반 가정과 같은 소규모 네트워크에서는 사용자가 느끼는 편의성이 훨씬 크다는게 설계자의 뜻이라고 생각합니다.
사용자 편의성이 최우선인 똑똑이, Bonjour
Bonjour는 사용자가 직접 사용하는 Software 가 아니라, Local Network를 이용하여 서비스하는 Application들을 위한 Framework의 일종이라고 볼 수 있습니다. 사용자에게 직접 드러나지 않도록 한건 '뒤에서 알아서 해놓을께'라고 말하는 것 같네요 실제 예를 보면 iTunes가 Music Share를 할때, Finder가 같은 네트워크망에 Mac이나 Airport내 Disk의 존재 유무와 접근을 허락할 때(Back to My Mac)나 iChat이 동일 네트워크에 접속해 있는 친구리스트를 자동으로 생성해줄 때까지 사용자가 해야 할 일은 아무것도 없습니다.
필자가 Bonjour를 기반으로 가장 유용하게 사용하고 있는 기능은 바로 Wake On Demand입니다. Bonjour Sleep Proxy에 정의되어 있는 이녀석은 일반적인 네트워크 장비가 Magic Packet을 전송하여 Remote에 있는 장비를 깨우는것과 같은 기능을 하지만, 사용자에게 그런 수고를 요구하지도 않고 자동으로 깨워주며, 추가인 기능을 더 많습니다. 이에 대한 자세한 포스팅은 다음으로 미뤄야겠네요.^^
추신. Windows platform 에서도 Bonjour설치 후 사용가능합니다!