XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규...

56
XMPP Solution 개개 개 개개 2009.12.12 개개개개개 개개개개개 개개개 개개개개개

Transcript of XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규...

Page 1: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

XMPP Solution 개요 및 동향

2009.12.12㈜씽크테크 기술연구소

이정규 책임연구원

Page 2: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

2

목차

• XMPP 란 ?• XMPP 국내외 동향• XMPP 프로토콜 분석• XMPP 활용–공개 서버 / 클라이언트를 이용한 IM 서비스 구축

Page 3: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

3

1. XMPP 프로토콜 개요역사 , 아키텍쳐 , 프로토콜 ,

Page 4: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

4

XMPP/Jabber 란 ?

• eXtensible Message & Presence Pro-tocol– “XML 스트리밍 기술로 인터넷상의 두 지점간

Presence, Message 그리고 XML 로 표현가능한 구조적 정보를 실시간으로 전달하기 위한 국제 표준 .

XML

Page 5: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

5

XMPP History1998 1999- 2000 2002-2003 2004 2005 2009

•독점적인 IM 서비스에 대항 , 오픈소스 프로젝트인 Jabber 출범 (Jeremie Miller)

•Jabber.org 커뮤니티를 통해서 프로토콜 지속적 개선

• IETF 에 의해 표준의 형태를 갖추게 됨

•XMPP 표준 제정•(RFC3920, RFC3921)

•GoogleTalk 출시

Page 6: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

6

XMPP 프로토콜의특징특징 설명Open free, open, public 프로토콜 Standard IETF 표준Proven 수천개의 서버 , 수백만의 사용자 확보Decentral-ized

email 과 유사한 방식으로 확장

Secure SASL, TLS 등 규격 지원Extensible XML namespace 에 의해 자신만의 프로토콜을 코어위에 확장

Flexible IM 위에 네트워크 관리 , 콘텐츠 동기화 , 협업 도구 , 파일공유 , 게임 , 등 확장 가능

Diverse 수많은 회사 또는 오픈소스 프로젝트에서 다양한 응용서비스들을 출시하고 있음 .

Page 7: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

7

2. XMPP 프로토콜 분석 RFC3920, RFC3921 그리고 XEPs…

Page 8: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

8

프로토콜 스펙규격이름 내용 => http://xmpp.org/proto-

cols

Core RFC3920 XMPP Core Architecture, XML Stream, Se-curity, …

RFC3921 XMPP IM Session, Messaging, Presence, Roster, Blocking,

Exten-sions

XEP XMPP Exten-sions

XEP-0030: Service Discovery(http://xmpp.org/protocols/disco/)

XEP-0095: Stream Initiation(http://xmpp.org/protocols/si/)

XEP-0045: Multi-User chat(http://xmpp.org/protocols/muc/)

XEP-0203: Delayed Delivery(http://xmpp.org/protocols/urn:xmpp:delay/)

Page 9: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

9

RFC3920 – XMPP Core 아키텍쳐 JID XML

스트림Single Server

Multiple Servers

Gateway Security

Page 10: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

10

아키텍쳐 JID XML 스트림

Single Server

Multiple Servers

Gateway Security

RFC3920 – XMPP Core

username@domain/Resource

Ex) [email protected]/tbotim [email protected]/gaim …

Page 11: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

11

RFC3920 – XMPP Core

• XML Stream, Connection Oriented

아키텍쳐 JID XML스트림

Single Server

Multiple Servers

Gateway Security

Server

Client

XML Document

XML Document

Page 12: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

12

RFC3920 – XMPP Core아키텍쳐 JID XML

스트림Single Server

Multiple Servers

Gateway Security

<stream:stream to='example.com‘ xmlns='jabber:client‘ xmlns:stream='http://etherx.jabber.org/streams’ version='1.0'>

<message …..> …. </message> …………. <presence …> … </presence> …………. <iq … > … </iq>

</stream:stream>

<stream:stream from='example.com‘ id='someid‘ xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams‘ version='1.0'>

<message …..> …. </message> …………. <presence …> … </presence> …………. <iq … > … </iq>

</stream:stream> ServerClient

Page 13: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

13

RFC3920 – XMPP Core아키텍쳐 JID XML

스트림Single Server

Multiple Servers

Gateway Security

<message from=“[email protected]” to=“[email protected]” type=“chat”>

<body> hello! </body>

</message>

<presence from=“[email protected]” to=“xmpp.co.kr” type=“available”>

<show>online</show> <status>I’m here </status> </presence>

<iq from=“[email protected]” to=“xmpp.co.kr” type=“get” <query xmlns=“jabber:iq:roster”/>

</iq>

Page 14: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

14

RFC3920 – XMPP Core아키텍쳐 JID XML

스트림Single Server

Multiple Servers

Gateway Security

XML

Client

XMPPServerXMLClient

ClientClient Client

ClientClient

XMLXML XML

XML XML

Host.com

• 폐쇄적 운영가능• 로컬에서도 운영가능

Page 15: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

15

RFC3920 – XMPP Core아키텍쳐 JID XML

스트림Single Server

Multiple Servers

Gateway Security

XML

XML

XML XML

XML

Client

XMPP App

Client

XMPPServer

XMPPServer

XMPPServer

XMPPServer

Client

XML

XML

XML

Client

XML

Client

Client

Internet

XML

XML

XML

XML

Client

• 공인 IP 에서 운영• 외부 XMPP 서버와의 연결을 통한 무한 확장• 기술적으로 이메일을 대체 가능

Page 16: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

16

RFC3920 – XMPP Core아키텍쳐 Xml

스트림JID Single

ServerMultiple Servers

Gateway Security

XML

Client

XMPPServerXMLClient

ClientClient Client

ClientClient

XMLXML XML

XML XML

Host.com

[email protected]

Page 17: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

17

RFC3920 – XMPP Core

• TLS (Transport Layer Security)– RFC 5246 (TLS ver 1.2)

• SASL (Simple Authentication Security Layer)– RFC2222

아키텍쳐 Xml 스트림

JID Single Server

Multiple Servers

Gateway Security

Server

Client

TLS

SASL

Page 18: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

18

Session Message Presence Roster Blocking Communication

RFC3921 – XMPP IM

Server

PC

PDA

1) Session establishment

2) Resource binding with

“PC”

1) Session establishment

2)Resource binding with

“PDA”

Page 19: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

19

Session Message Presence Roster Blocking Communication

RFC3921 – XMPP IM

Subject

Type

Thread

Body

Extensions<message [email protected] to=“[email protected]” type=“chat” >

<body> hello </body>

</message>

Page 20: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

20

Session Message Presence Roster Blocking Communication

RFC3921 – XMPP IM

• Subscription Management– Presence subscription

• Subscribing (type=subscribe)• Canceling (type=unsubscribed)• Unsubscribing

(type=unsubscribe)

– Presence priority

Server

user1

user2Presence notifybroadcast

Subscrip-tionInfo

user3

Page 21: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

21

Session Message Presence Roster Blocking Communication

http://usrportage.de/uploads/gaim-2.0beta1.png

RFC3921 – XMPP IM

ServerRoster DB

1) Roster 요청

2) Roster 다운로드

Roster (add, update, delete)

• Roster 정보는 개인화되어 있음

Page 22: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

22

Session Message Presence Roster Blocking Communication

http://usrportage.de/uploads/gaim-2.0beta1.png

RFC3921 – XMPP IM

ServerServer-side pri-vacy list

List Management

• Privacy 정보는 개인화되어 있음

Page 23: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

23

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.pnguser Kyobookbook.com

Catalog.Kyobookbook.com

Page 24: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

24

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.png

<iq type='get' from=‘[email protected]/tbotim' to=‘kyobobook.com' id=‘item_1'> <query xmlns='http://jabber.org/protocol/disco#items'/></iq>

userKyobookbook.com

Page 25: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

25

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.png

<iq type='result' from=‘kyobobook.com‘ to=' [email protected]/tbo-tim ' id='item_1'> <query xmlns='http://jabber.org/protocol/disco#items'>

<item jid='catalog.kyobobook.com' name=‘ 교보문고 카탈로그 서비스 '/> </query></iq>

Server

user

Page 26: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

26

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.png

<iq type='get' from=‘[email protected]/tbotim' to=‘catalog.kyobobook.com' id=‘item_2'> <query xmlns='http://jabber.org/protocol/disco#items'/></iq>

user Catalog.Kyobookbook.com

Page 27: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

27

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.png

<iq type='result' from=‘catalog.kyobobook.com‘ to=' [email protected]/tbotim ' id='item_2'> <query xmlns='http://jabber.org/protocol/disco#items'>

<item jid=‘music.catalog.kyobobook.com' name=‘ 교보문고 음악 카탈로그 '/> <item jid=‘book.catalog.kyobobook.com’ name=‘ 교보문고 신간서적 카탈로그’ /> … </query></iq>

user

Page 28: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

28

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.png

<iq type='result' from=‘catalog.kyobobook.com‘ to=' [email protected]/tbotim ' id='item_2'> <query xmlns='http://jabber.org/protocol/disco#items'>

<item jid=‘catalog.kyobobook.com' node=‘music’ name=‘ 교보문고 음악 카탈로그 '/> <item jid=‘book.catalog.kyobobook.com’ name=‘ 교보문고 신간서적 카탈로그’ /> … </query></iq>

* Node 개념의 추가

Page 29: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

29

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.png

user2user1

* 동일 네트워크인 경우

proxyServer

Page 30: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

30

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.png

* 서로다른 네트워크인 경우

proxyServer

user2user1

Page 31: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

31

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.pngconference

Xmpp.co.kr

user1

[email protected]

Page 32: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

32

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.png

user1

[email protected]/[email protected]/[email protected]/[email protected]/Cindy

user2

user3

user4

Harry

Jack

Bill

Cindy

[email protected]

Page 33: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

33

XEP(XMPP Extension Protocols)SVC DiscoXEP-0030

Stream InitiationXEP-0095

Multiuser chatXEP-0045

Delayed deliveryXEP-0203

http://usrportage.de/uploads/gaim-2.0beta1.png

Server

user1

user2Message

* 상대방이 온라인이 아닐 때 ,

•서버가 메시지를 저장하고 ,•해당사용자가 온라인시 Push

Page 34: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

34

3. XMPP 활용공개 XMPP Server & Client 활용

Page 35: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

35

XMPP 오픈소스 프로젝트

Type Name Homepage Language

Server Openfire http://www.igniterealtime.org Java

eJabberD http://www.process-one.net erLang

JabberD2 http://codex.xiaoka.com/wiki/jabberd2:start C

Client Psi http://psi-im.org/ C

Pidgin http://pidgin.im/ C, C++

SDK libpurple http://pidgin.im/ C

XIFF http://www.igniterealtime.org/projects/xiff/ ActionScript

Smack http://www.igniterealtime.org/projects/smack/index.jsp

Java

http://en.wikipedia.org/wiki/List_of_XMPP_library_software

Page 36: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

36

Openfire

• http://www.igniterealtime.org/down-loads/

Page 37: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

37

Openfire – Install

Page 38: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

38

Openfire – Admin

• http://127.0.0.1:9090/setup/index.jsp

Page 39: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

39

Openfire – Server Setting

Page 40: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

40

Openfire – Database(standard)

Page 41: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

41

Openfire – Database(standard)

Page 42: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

42

Openfire –Database - Embedded)

Page 43: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

43

Openfire – Profile

Page 44: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

44

Openfire – Administrator Account

Page 45: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

45

Openfire – Setup Complete

Page 46: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

46

Openfire – Admin Login

• http://127.0.0.1:9090/login.jsp

Page 47: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

47

Openfire – Adding a User

Page 48: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

48

Openfire – User Summary

Page 49: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

49

Psi – Install

• http://psi-im.org/

Page 50: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

50

Psi – Account Setup

Page 51: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

51

Psi – Login

Page 52: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

52

Psi – Subscribe

Page 53: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

53

Psi – Subscribed

Page 54: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

54

4. 참고

Page 56: XMPP Solution 개요 및 동향 2009.12.12 ㈜씽크테크 기술연구소 이정규 책임연구원.

56

감사합니다 .

Contact: 이정규 책임연구원Email: [email protected]: [email protected]