RFC 3920 RFC 3921 XEPs 2 XMPP 7

  • Slides: 56
Download presentation

RFC 3920, RFC 3921 그리고 XEPs… 2. XMPP 프로토콜 분석 7

RFC 3920, RFC 3921 그리고 XEPs… 2. XMPP 프로토콜 분석 7

프로토콜 스펙 Core Extensions 규격이름 내용 => http: //xmpp. org/protocols RFC 3920 XMPP Core

프로토콜 스펙 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

RFC 3920 – XMPP Core 아키텍쳐 JID XML 스트림 Single Server Multiple Servers Gateway Security 9

RFC 3920 – XMPP Core 아키텍쳐 JID XML 스트림 Single Server Multiple Servers Gateway

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

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

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

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

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

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

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

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

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

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

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 요청

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:

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(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(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(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(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(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(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(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(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(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(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(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 Server & Client 활용 3. XMPP 활용 34

XMPP 오픈소스 프로젝트 Type Name Homepage Language Server Openfire http: //www. igniterealtime. org Java

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 • http: //www. igniterealtime. org/downloads/ 36

Openfire – Install 37

Openfire – Install 37

Openfire – Admin • http: //127. 0. 0. 1: 9090/setup/index. jsp 38

Openfire – Admin • http: //127. 0. 0. 1: 9090/setup/index. jsp 38

Openfire – Server Setting 39

Openfire – Server Setting 39

Openfire – Database(standard) 40

Openfire – Database(standard) 40

Openfire – Database(standard) 41

Openfire – Database(standard) 41

Openfire –Database - Embedded) 42

Openfire –Database - Embedded) 42

Openfire – Profile 43

Openfire – Profile 43

Openfire – Administrator Account 44

Openfire – Administrator Account 44

Openfire – Setup Complete 45

Openfire – Setup Complete 45

Openfire – Admin Login • http: //127. 0. 0. 1: 9090/login. jsp 46

Openfire – Admin Login • http: //127. 0. 0. 1: 9090/login. jsp 46

Openfire – Adding a User 47

Openfire – Adding a User 47

Openfire – User Summary 48

Openfire – User Summary 48

Psi – Install • http: //psi-im. org/ 49

Psi – Install • http: //psi-im. org/ 49

Psi – Account Setup 50

Psi – Account Setup 50

Psi – Login 51

Psi – Login 51

Psi – Subscribe 52

Psi – Subscribe 52

Psi – Subscribed 53

Psi – Subscribed 53

Gateway 개발 • http: //www. igniterealtime. org/projects/tin der/index. jsp 55

Gateway 개발 • http: //www. igniterealtime. org/projects/tin der/index. jsp 55

감사합니다. Contact: 이정규 책임연구원 Email: jklee@thinktek. co. kr JID: jklee@xmpp. co. kr

감사합니다. Contact: 이정규 책임연구원 Email: jklee@thinktek. co. kr JID: jklee@xmpp. co. kr