작성자: Yonghwa Jee ( jeeterm@empal.com ). Copyright by Telcom Co., Ltd. ( http://www.talknow.co.kr )
작성일: 2010.9.3
IM ( Instant Messaging) 표준화 동향과 XMPP
============================================
1. 개요
--------
* H.323 : AT&T 등의 TelCo( Telecommunication Company: 통신회사) 들이 모여서 Internet 상에서 PC나 인터넷폰끼리
음성통화(일명: Voice over Internet Protocol 줄여서 VoIP )하기 위해 표준화한 통신프로토콜 .
* SIP : H.323 은 쓸데없이 복잡하므로 IBM,MS 등의 컴퓨터관련 회사들이 주축이 되서 만든 VoIP 프로토콜
위 두 표준안 이후
SIP 표준안을 IM을 포함시키는 표준안으로 확장시켰는데 이름하여 SIMPLE, the Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions 이다.
즉, IM 관련 대표적인 두 프로토콜 중 하나인 SIMPLE 은 VoIP 표준인 SIP에서 확대 발전되어 탄생하였고 그 주동자는 IBM,MS 진영이다.
IM의 나머지 대표적인 프로토콜은 XMPP 로서 이 표준안의 시초는
Jeremie Miller 라는 좀 똘똘한 친구가 1998년 jabber테크놀로지라는 회사에서 개발을 시작하여 1999년 1월4일
jabberd ( http://en.wikipedia.org/wiki/Jabberd14 ) 라는 첫 메신저 서버 버전을
Release 하면서 시작되었다. 이 jabber 를 HP, Apple, Google, Cisco 진영에서 적극 지원해서 XMPP 라는 IM 표준안( http://xmpp.org ) 을 만들어 냈다.
참고로 jabber테크놀로지라는 회사는 ( 구: www.jabber.com ) Cisco 회사에서 M&A로 합병하였습니다.
2. XMPP의 특징(Extensible Messaging and Presence Protocol )
-----------------------------------------------------------
XMPP 는 jabber 라는 IM의 프로토콜로부터 시작하여 확장되었지만 네트웍 관련한 훌륭한 표준 Multi 플랫폼 프레임워크로써
IM뿐만 아니라 온라임게임은 물론 거의 모든 네트웍 관련 프로그램에 사용할 수 있다( http://www.ibm.com/developerworks/kr/library/x-xmppintro/).
XMPP 의 가장 큰 특징은 Extensible Markup Language (XML) 언어로 서버와 Client간에 통신한다는 것이다.
XML 언어가 무엇인가?
html 로 대표되는 www 홈페이지언어는 편리하지만 www를 제외한 다른 여러 다양한 응용에는 부족하고 한계가 있었다.
그래서 좀 의식있는 사람들이 모여서 머리를 굴려 만든 언어가 XML 인데
XML을 한마디로 표현한다면 Tag(태그)언어라 할수 있다. 즉, 모든 정보를 < > 이 태그로 표시하는 언어이다.
html 도 태그 <> 로 표시하는 언어의 일종이므로 XML언어의 일종이라고 할 수 있다.
즉, xml 언어는 html을 포함하는 확장성이 아주 좋은 언어인 것이다.
3. 시스템(플랫폼)별 추천할만한 XMPP 의 프레임워크는 ( 오픈 source 위주로..) ??
-----------------------------------------------------------------------------
3.1 서버쪽 http://xmpp.org/xmpp-software/servers/
---------
3.1.1 Linux 와 C 기반
위에서 언급했듯이 원조인 jabberd14 가 있다.
3.1.2 Java 기반
jive 소프트웨어 회사( http://www.jivesoftware.com/ )에서 open source 로 공개한
openfire ( http://www.igniterealtime.org/projects/openfire/index.jsp )가 있다.
3.2 Clinet 쪽 http://xmpp.org/xmpp-software/clients/
------------
3.2.1 PC 기반
PC용으로는 OS에 제약을 덜받는 Multiplatform 용 XMPP Client로는
jive 소프트웨어 회사( http://www.jivesoftware.com/ )에서 open source 로 공개한
spark ( http://www.igniterealtime.org/projects/spark/index.jsp ) 가 있다.
3.2.2 Android 기반
jive 소프트웨어 회사( http://www.jivesoftware.com/ )에서 open source 로 공개한 spark 에 사용된
XMPP framework 을 따로 Library 화 한것이 smack API ( http://www.igniterealtime.org/projects/smack/index.jsp ) 이다.
이 smack 을 이용하여 안드로이드 XMPP 메신저를 만든것이 yaxim ( http://github.com/pfleidi/yaxim) 이다.
3.2.3 Apple Iphone/IPad 기반
공개된 괜챦은 Apple 용 xmpp Framework은 http://code.google.com/p/xmppframework/ 이 있다.
이것은 네트웍부분은 CFNetwork Framework ( http://developer.apple.com/mac/library/documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html )
를 사용하고 XML 엔진은 kissxml ( http://code.google.com/p/kissxml/) 을 사용한 것 같다.
이 xmppframework 를 이용하여 XMPP 메신저를 만들어 상용으로 AppleStore 에 등록한 회사가 있다.
crosstalk라는 제품이다(아이폰용 상용 jabber client : http://www.portablek.com/home/mobile-apps/crosstalk : xmppframework 를 이용한 상용제품).
------------------ 끝 -----------------------------------------