XMPP的总体架构和Jabber ID

通常XMPP的架构用C/S来实现,但是也并不是强制的,Client和Server,Server和Server之间通过TCP连接来通信。

架构的简单示意图如下:

C1-----S1----S2----C3
          |
  C2------+---G1===FN1====FC1

* C1, C2, C3 = XMPP Clients
    * S1, S2 = XMPP Servers
    * G1 = 转换XMPP和其他消息网络的网关
    * FN1 = 其他消息网络
    * FC1 = 其他消息网络上的Clients

Client和Server之间通信的推荐Port号是5222
Server和Server之间通信的推荐Port号是5269

XMPP网络上的每个实体都有一个ID号,这里叫做JID(Jabber Identifier),用来唯一地表示自己的身份。

JID由node identifier,domain identifier和resource identifier组成,只有domain identifier是必须存在的,其他都可选。

举几个例子:
[email protected] client
gmail.com server或gateway
[email protected]/wangxiao client的一个session,表示同一个账号可以多处登陆

node,domain和resource的长度不能超过1023bytes,总长度(算上@,/)不能超过3071bytes。

时间: 2024-12-30 03:36:47

XMPP的总体架构和Jabber ID的相关文章

Jabber/XMPP协议与架构

一.概述 由Jeremie Miller于1998年开始这个项目.Jabber是一个开放源码形式组织产生的网络实时通信协议,第一个公开版本于2000年5月发行.Jabber已经由IETF XMPP协议(RFC3290)标准化.2001年成立的Jabber软件基金会于2007年更名为XMPP标准基金会. XMPP原本是为即时通讯而量身定制,但由于XML Stanza本身是XML元素,在基于XML灵活发展的特性下,使得XMPP也可以适用其它方面,已经得到了IETF的批准.XMPP与IMPP.PRIM

Openvswitch原理与代码分析(1):总体架构

一.Opevswitch总体架构 Openvswitch的架构网上有如下的图表示: 每个模块都有不同的功能 ovs-vswitchd 为主要模块,实现交换机的守护进程daemon 在Openvswitch所在的服务器进行ps aux可以看到以下的进程 root 1008 0.1 0.8 242948 31712 ? S<Ll Aug06 32:17 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err

Kubernetes基础篇:主要特性、基本概念与总体架构

Kubernetes基础篇:主要特性.基本概念与总体架构 本文试图将Kubernetes的基础相关知识描述清楚,让一个从来没有Kubernetes实践的开发人员,能够非常容易地理解Kubernetes是什么,能够做哪些事情,以及使用它能带来的好处是什么. Kubernetes是什么 Kubernetes是一个开源的容器编排引擎,它支持自动化部署.大规模可伸缩.应用容器化管理.我们在完成一个应用程序的开发时,需要冗余部署该应用的多个实例,同时需要支持对应用的请求进行负载均衡,在Kubernetes

深入解析Windows操作系统之总体架构

(一)需求和设计目标 Windows NT设计小组在项目开始之初选择了下面的设计目标: (1)扩展性:编写的系统代码必须能够随着市场需求的变化而自如增长和改变. (2)可移植性:系统必须能运行在多种硬件体系架构上,必须能根据市场的需要,相对容易地迁移到新的体系架构上. (3)可靠性和健壮性:系统应该能够保护自己,不会因内部的故障和外部的篡改而不能工作.应用程序应该无法伤害操作系统或其他应用程序. (4)兼容性:虽然Windows NT应该扩展已有的技术,但是它的用户界面和API应该与老版本的Wi

python源码学习(一)——python的总体架构

python源码学习(一)——python的总体架构 学习环境: 系统:ubuntu 12.04 STLpython版本:2.7既然要学习python的源码,首先我们要在电脑上安装python并且下载python的源码,ubuntu 12.04 STL自带的python版本为2.7.3,这就可以了,接下来下载源码,下载python2.7.7的源代码,下载结束后解压文件,我们会看到如下文件结构:,接下来介绍一下,demo文件夹里放的是一些例子:Doc文件夹里放的是文档,Grammer是语法分析器,

Android MediaScanner:(一)MediaScanner总体架构

Android MediaScanner:(一)MediaScanner总体架构 分类: Android android.multimedia2012-05-19 18:29 5050人阅读 评论(5) 收藏 举报 androidservice数据库工作interfaceinsert 田海立@csdn 2012-05-19 本文是笔者的分析归纳,并用UML图(Class Diagram/Sequence Diagram)来呈现.虽然来源于对Android源码的分析,但文中不会占用大量篇幅罗列源码

jquery 总体架构

版本:1.7.1 总体架构: 1.执行jQuery(selector, context)方法,在方法内部实例化函数jQuery.fn.init,得到一个jquery对象. 2.函数jQuery.fn.init属于jQuery原型上的方法. 3.函数jQuery.fn.init的原型指向函数jQuery的原型. 4.因此,生成的jquery对象继承了函数jQuery原型上的属性和方法. 5.函数jQuery有自己的静态方法,直接使用 jQuery.方法名 来调用. 6.此外,可通过jQuery.e

Jquery总体架构

第一章  总体架构 1.设计理念 Jquery的理念就是“写更少的代码,做更多的事”,而且做到代码的高度兼容性. 2.总体架构 大致可以分为三个部分:构造模块,底层支持模块和功能模块. 3.使用自调用匿名函数 这里先分析一下匿名函数: 匿名函数的作用是创建一块封闭区域,外面不能够访问里面的变量和方法,有两种比较常见的写法: 写法一:(function(){ ... }()) 写法二:(function(){ ... })() 除了这两种写法之外还有很多写法,可以参考js自调用匿名函的N种写法 J

jQuery源码分析-01总体架构

1. 总体架构 1.1自调用匿名函数 self-invoking anonymous function 打开jQuery源码,首先你会看到这样的代码结构: (function( window, undefined ) { // jquery code })(window); 1.这是一个自调用匿名函数.在第一个括号内,创建一个匿名函数:第二个括号,立即执行 2.为什么要创建这样一个“自调用匿名函数”呢? 通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命