GTalk所遵循的协议---XMPP

前几天Google发布了一款名叫Google Talk的即时通讯软件,这款软件的买点卖点之一就是XMPP。那,什么是XMPP呢?
   可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯、表示和需求 - 响应服务中的 XML 数据元流式传输。XMPP 以 Jabber 协议为基础,而 Jabber 是即时通讯中常用的开放式协议。
   尽管 XMPP 没有完全溶合进任何特定的网络架构之中,但是通过客户机/服务器架构,它还是经常被采用,因为客户机需要使用 XMPP 经过 TCP 连接访问服务器,而服务器之间也是通过 TCP 连接进行通信的。服务器可起到 XMPP 通讯的智能提取层的作用。许多客户机直接通过 TCP 连接与服务器相连,并使用 XMPP 来充分使用服务器和任何相关服务所提供的功能。同时连接到服务器的可能有多种资源,它们代表各自已获授权的客户机。对于客户机和服务器之间的连接,推荐使用的端口号为 5222 。网关是一种有着特殊用途的服务器端服务,它的主要功能是在异构通讯系统协议之中解析 XMPP ,同时还要在 XMPP 之中解析返回的数据,如以下各各种服务的网关:电子邮件、国际互联网中继聊天(IRC)、SIMPLE、短信息服务(SMS)和现存的各种即时通讯服务,包括 AIM、ICQ、MSN Messenger 和 Yahoo! Instant Messenger 等。

[separator]


  两个基本概念 — XML 数据流和 XML 节使得较小结构化信息的有效负载可以在敏感于数据传输的实体间进行迅速的异步传输。一个 XML 数据流就像一种容器,可应用在任何两个网络实体间 XML 数据元的交换。XML 节是结构化信息的独立单元,通过 XML 数据流从一个实体发送到另一个实体。
  XMPP 中包含了一种用于防范数据流被窜改和偷听的办法。这种信道加密的办法使用了传输层安全协议(TLS),连同其扩展协议 STARTTLS 。这种扩展与其它协议的扩展是同一模式的,如 IMAP、POP3 和 ACAP 等协议。XMPP 中还包含一种对数据流进行验证的办法,并采用了简单验证和安全层协议(SASL)中 XMPP 的特定框架。

协议结构

  XML 数据流在所有 XML 节的传送会话过程中起到一种包络的作用。我们可以采用一种单纯的方式来表示这个过程:

|--------------------|
| <stream> |
|--------------------|
| <presence> |
| <show/> |
| </presence> |
|--------------------|
| <message to='foo'> |
| <body/> |
| </message> |
|--------------------|
| <iq to='bar'> |
| <query/> |
| </iq> |
|--------------------|
| ... |
|--------------------|
| </stream> |
|--------------------|


Stream attributes: 
| initiating to receiving | receiving to initiating
---------+---------------------------+-----------------------
to | hostname of receiver | silently ignored
from | silently ignored | hostname of receiver
id | silently ignored | session key
xml:lang | default language | default language
version | signals XMPP 1.0 support | signals XMPP 1.0 support


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jimlee070128/archive/2007/09/18/1789946.aspx

猜你喜欢

转载自maxwellens.iteye.com/blog/591535