RFC 3920 RFC 3921 XEPs 2 XMPP 7
























































- Slides: 56
RFC 3920, RFC 3921 그리고 XEPs… 2. XMPP 프로토콜 분석 7
프로토콜 스펙 Core Extensions 규격이름 내용 => http: //xmpp. org/protocols RFC 3920 XMPP Core Architecture, XML Stream, Security, … RFC 3921 XMPP IM Session, Messaging, Presence, Roster, Blocking, XEP XMPP Extensions 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/) … 8
RFC 3920 – XMPP Core 아키텍쳐 JID XML 스트림 Single Server Multiple Servers Gateway Security 9
RFC 3920 – XMPP Core 아키텍쳐 JID XML 스트림 Single Server Multiple Servers Gateway Security username@domain/Resource Ex) jklee@xmpp. co. kr/tbotim peter@jabber. org/gaim … 10
RFC 3920 – XMPP Core 아키텍쳐 JID XML 스트림 Single Server Multiple Servers Gateway Security • XML Stream, Connection Oriented XML Document Client Server XML Document 11
RFC 3920 – 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'> <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> Client </stream: stream> Server 12
RFC 3920 – XMPP Core JID 아키텍쳐 <message XML 스트림 Single Server Multiple Servers Gateway Security from=“kim@xmpp. co. kr” to=“park@xmpp. co. kr” type=“chat”> <body> hello! </body> </message> <presence from=“kim@xmpp. co. kr” to=“xmpp. co. kr” type=“available”> <show>online</show> <status>I’m here </status> </presence> <iq from=“kim@xmpp. co. kr” to=“xmpp. co. kr” type=“get” <query xmlns=“jabber: iq: roster”/> </iq> 13
RFC 3920 – XMPP Core 아키텍쳐 JID XML 스트림 Single Server Multiple Servers Gateway Security • 폐쇄적 운영가능 • 로컬에서도 운영가능 Client XML XMPP Server Host. com XML XML Client 14
RFC 3920 – XMPP Core 아키텍쳐 JID XML 스트림 Client Single Server Multiple Servers Gateway Security Client XML XMPP Server XML XML XML Client XML XMPP Server XML XMPP App XML Internet • 공인 IP에서 운영 • 외부 XMPP 서버와의 연결을 통한 무한 확장 • 기술적으로 이메일을 대체 가능 XMPP Server XML Client 15
RFC 3920 – XMPP Core Xml 스트 림 아키텍쳐 JID Single Server Multiple Servers Gateway Security Client XML sms XML XMPP Server 010 -xxxx@sms. host. com Host. com XML XML Client 16
RFC 3920 – XMPP Core 아키텍쳐 Xml 스트 림 JID Single Server Multiple Servers Gateway Security SASL TLS Client Server • TLS (Transport Layer Security) – RFC 5246 (TLS ver 1. 2) • SASL (Simple Authentication Security Layer) – RFC 2222 17
RFC 3921 – XMPP IM Session Message Presence Roster 1) Se ss 2) Re ion establ sourc i e bin shment ding with “PC PC PDA Blocking Communication ” hment s i l b a t s PDA” ne “ o i h s t s i e w S 1) inding b e c r u 2)Reso Server 18
RFC 3921 – XMPP IM Session Message Presence Roster Blocking Communication Type Subject Body Thread Extensions <message from=jklee@xmpp. co. kr to=“kim@jabber. org” type=“chat” > <body> hello </body> </message> 19
RFC 3921 – XMPP IM Session Message Presence Roster Blocking Communication Presence notify broadcast user 2 user 1 Server Subscription Info • user 3 Subscription Management – Presence subscription • Subscribing (type=subscribe) • Canceling (type=unsubscribed) • Unsubscribing (type=unsubscribe) – Presence priority 20
RFC 3921 – XMPP IM Session Message Presence Roster Blocking Communication 1) Roster 요청 2) Roster 다운로드 Roster (add, update, delete) http: //usrportage. de/uploads/gaim-2. 0 beta 1. png Server Roster DB • Roster 정보는 개인화되어 있음 21
RFC 3921 – XMPP IM Session Message Presence Roster Blocking Communication List Management http: //usrportage. de/uploads/gaim-2. 0 beta 1. png Server-side privacy list • Privacy 정보는 개인화되어 있음 22
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 Catalog. Kyobook. com user http: //usrportage. de/uploads/gaim-2. 0 beta 1. png Kyobook. com 23
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 <iq type='get' from=‘user@xmpp. co. kr/tbotim' to=‘kyobobook. com' id=‘item_1'> <query xmlns='http: //jabber. org/protocol/disco#items'/> </iq> http: //usrportage. de/uploads/gaim-2. 0 beta 1. png user Kyobook. com 24
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 <iq type='result' from=‘kyobobook. com‘ to=' user@xmpp. co. kr/tbotim ' id='item_1'> <query xmlns='http: //jabber. org/protocol/disco#items'> Server <item jid='catalog. kyobobook. com' http: //usrportage. de/uploads/gaim-2. 0 beta 1. png name=‘교보문고 카탈로그 서비스'/> </query> </iq> user 25
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 <iq type='get' from=‘user@xmpp. co. kr/tbotim' to=‘catalog. kyobobook. com' id=‘item_2'> <query xmlns='http: //jabber. org/protocol/disco#items'/> </iq> http: //usrportage. de/uploads/gaim-2. 0 beta 1. png user Catalog. Kyobook. com 26
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 <iq type='result' from=‘catalog. kyobobook. com‘ to=' user@xmpp. co. kr/tbotim ' id='item_2'> <query xmlns='http: //jabber. org/protocol/disco#items'> <item jid=‘music. catalog. kyobobook. com' name=‘교보문고 음악 카탈로그 '/> http: //usrportage. de/uploads/gaim-2. 0 beta 1. png <item jid=‘book. catalog. kyobobook. com’ name=‘교보문고 신간서적 카탈로그’ /> … </query> </iq> user 27
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 <iq type='result' from=‘catalog. kyobobook. com‘ to=' user@xmpp. co. kr/tbotim ' id='item_2'> <query xmlns='http: //jabber. org/protocol/disco#items'> <item jid=‘catalog. kyobobook. com' node=‘music’ http: //usrportage. de/uploads/gaim-2. 0 beta 1. png name=‘교보문고 음악 카탈로그 '/> <item jid=‘book. catalog. kyobobook. com’ name=‘교보문고 신간서적 카탈로그’ /> … </query> </iq> * Node 개념의 추가 28
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 * 동일 네트워크인 경우 Server proxy http: //usrportage. de/uploads/gaim-2. 0 beta 1. png user 1 user 2 29
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 * 서로다른 네트워크인 경우 Server proxy http: //usrportage. de/uploads/gaim-2. 0 beta 1. png user 1 user 2 30
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 user 1 Xmpp. co. kr http: //usrportage. de/uploads/gaim-2. 0 beta 1. png conference room 1@conference. xmpp. co. kr 31
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 room 1@conference. xmpp. co. kr Harry Bill user 3 user 1 Jack Cindy http: //usrportage. de/uploads/gaim-2. 0 beta 1. png user 2 user 4 room 1@conference. xmpp. co. kr/Harry room 1@conference. xmpp. co. kr/Jack room 1@conference. xmpp. co. kr/Bill room 1@conference. xmpp. co. kr/Cindy 32
XEP(XMPP Extension Protocols) SVC Disco XEP-0030 Stream Initiation XEP-0095 Multiuser chat XEP-0045 Delayed delivery XEP-0203 * 상대방이 온라인이 아닐 때, user 2 Message user 1 http: //usrportage. de/uploads/gaim-2. 0 beta 1. png Server • 서버가 메시지를 저장하고, • 해당사용자가 온라인시 Push 33
공개 XMPP Server & Client 활용 3. XMPP 활용 34
XMPP 오픈소스 프로젝트 Type Name Homepage Language Server Openfire http: //www. igniterealtime. org Java e. Jabber. D http: //www. process-one. net er. Lang Jabber. D 2 http: //codex. xiaoka. com/wiki/jabberd 2: start C Psi http: //psi-im. org/ C Pidgin http: //pidgin. im/ C, C++ libpurple http: //pidgin. im/ C XIFF http: //www. igniterealtime. org/projects/xiff/ Action. Script Smack http: //www. igniterealtime. org/projects/smack/ind ex. jsp Java Client SDK http: //en. wikipedia. org/wiki/List_of_XMPP_library_software 35
Openfire • http: //www. igniterealtime. org/downloads/ 36
Openfire – Install 37
Openfire – Admin • http: //127. 0. 0. 1: 9090/setup/index. jsp 38
Openfire – Server Setting 39
Openfire – Database(standard) 40
Openfire – Database(standard) 41
Openfire –Database - Embedded) 42
Openfire – Profile 43
Openfire – Administrator Account 44
Openfire – Setup Complete 45
Openfire – Admin Login • http: //127. 0. 0. 1: 9090/login. jsp 46
Openfire – Adding a User 47
Openfire – User Summary 48
Psi – Install • http: //psi-im. org/ 49
Psi – Account Setup 50
Psi – Login 51
Psi – Subscribe 52
Psi – Subscribed 53
Gateway 개발 • http: //www. igniterealtime. org/projects/tin der/index. jsp 55
감사합니다. Contact: 이정규 책임연구원 Email: jklee@thinktek. co. kr JID: jklee@xmpp. co. kr
























































