XMPP是一个标准,定义了很多的规范(起源于Jabber),不同的产品都基于这些标准实现

xmpp.org

http://xmpp.org/about-xmpp/technology-overview/

XMPP is the Extensible Messaging and Presence Protocol, a set of open technologies for instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data.

  • Core — information about the core XMPP technologies for XML streaming
  • BOSH — an HTTP binding for XMPP (and other) traffic
  • Jingle — SIP-compatible multimedia signalling for voice, video, file transfer, and other applications
  • Multi-User Chat — flexible, multi-party communication
  • PubSub — alerts and notifications for data syndication, rich presence, and more

BOSH is “Bidirectional-streams Over Synchronous HTTP”, a technology for two-way communication over the Hypertext Transfer Protocol (HTTP). BOSH emulates many of the transport primitives that are familiar from the Transmission Control Protocol (TCP). For applications that require both “push” and “pull” communications, BOSH is significantly more bandwidth-efficient and responsive than most other bidirectional HTTP-based transport protocols and the techniques known as AJAX.

The XMPP Network组成

Any XMPP network is composed of a number of actors. These actors can be categorized as servers,

clients, components, and server plug-ins.

XMPP servers, or more accurately, XMPP entities speaking the server-to-server protocol or the server end of the client-to-server protocol, are the circulatory system of any XMPP network.

The majority of XMPP entities are clients, which connect to XMPP servers via the client-to-server protocol.

server components. These components augment the behavior of the server by adding some new

service. These components have their own identity and address within the server, but run externally and communicate over a component protocol. component protocol XEP-0114

Many XMPP servers can also be extended via plug-ins. These plug-ins are usually written in the same programming language as the server itself and run inside the server’s processes. Their purpose overlaps to a large degree with external components, but plug-ins may also access internal server data structures and change core server behavior.

关键名词 JID

JIDs (short for jabber identifiers) elizabeth@longbourn.lit

FQDN

Domain fully qualified domain name (FQDN) jabber.org

User JabberID stpeter@jabber.org

Stanzas

Stanzas Work is accomplished in XMPP by the sending and receiving of XMPP stanzas over an XMPP stream.

3 stanzas in the main XMPP vocabulary: <message>, <presence>, and <iq>

Resources

When you connect your client to an XMPP server, you choose (or the server assigns to you) a resource identifier for that particular connection. This resource is used for routing traffic to that connection instead of any other connections you might have open at the moment. The resource is added to the end of your account address, such as stpeter@jabber.org/roundabout or remko@el-tramo.be/home.

The resource is often the name of your computer, your location, or the client software you are using

XMPP URI scheme that can be used to identify JabberIDs as URIs, such as xmpp:jabber.org or xmpp:stpeter@jabber.org [RFC 5122].

Info/Query (or IQ)

life cycle

Every XMPP session has a life cycle consisting of several phases: connection, stream set up, authentication, the session body, and disconnection.

XMPP优缺点

Advantages of XMPP

XMPP has the following advantages over HTTP, each of which are explored in detail:

? Enables pushing data, not just pulling

? Firewall friendly

? Strong authentication and security

? Provides many out-of-the-box tools for solving a wide range of problems

Disadvantages of XMPP

Every protocol is a bag of both features and problems. In many cases XMPP is not the best tool for

the job or suffers from some limitation. XMPP’s drawbacks include:

? Stateful protocol

? Community and deployments are not as broad as HTTP

? More overhead than HTTP for simple chores

? Specialized implementations still needed

转载于:https://blog.51cto.com/mythinker/737577

XMPP的简介和基本概念相关推荐

  1. GIS基础简介:基本概念、互联网坐标系、WebGIS实操

    GIS基础简介:基本概念.互联网坐标系.WebGIS实操 01 | GIS基础知识-GIS概念 1.GIS是什么: 1)随着时代的发展我们几乎每天都能够与GIS接触.比如手机上的百度地图或者高德地图, ...

  2. RocketMQ_01 RocketMQ入门简介及核心概念

    RocketMQ_01 RocketMQ入门简介及核心概念 伟大的事物不是一时冲动做起来的,而是由一系列小事共同造就的 一.RocketMQ简介 RocketMQ是一款分布式.列队模型的消息中间件,由 ...

  3. XMPP协议简介[转载]

    1. 简介 XMPP来源于Jabber开源社区,基于XML,提供准实时的传递消息.在线状态和请求/响应服务.XMPP使用客户/服务模式,服务器之间能够相互连接,建立在面向连接的协议上,通常是TCP. ...

  4. Dubbo简介与基本概念

    场景 分布式系统的发展演变以及RPC简介: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103555049 Dubbo简介 Ap ...

  5. RabbitMQ(一):简介和基本概念

    一.简介 RabbitMQ是一个消息代理,可以将其视为邮局,它接受和转发消息. RabbitMQ和邮局之间的主要区别在于它不处理纸张,而是接受.存储.转发二进制blob数据 - 消息. 二.队列 队列 ...

  6. RocketMQ简介及核心概念说明

    1.1.RocketMQ简介 Apache RocketMQ是一个采用Java语言开发的分布式的消息系统,由阿里巴巴团队开发,与2016年底贡献给 Apache,成为了Apache的一个顶级项目. 在 ...

  7. BLE MESH组网(一)简介和基本概念

    BLE MESH组网(一) BLE MESH简介 BLE MESH来源 BLE MESH用处 BLE MESH的通讯方式 管理洪水 市场内蓝牙设备支持 安全性 BLE MESH协议栈模型 BLE ME ...

  8. Mybatis简介及其核心概念

    千寻铁锁沉江底,一片降幡出石头.--刘禹锡<西塞山怀古> Mybatis简介 Mybatis是什么? MyBatis(3.x以前的版本叫ibatis)是一款一流的支持自定义SQL.存储过程 ...

  9. jira是干什么_JIRA简介及基本概念

    第一章 JIRA简介 1.1 什么是JIRA JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产 ...

最新文章

  1. python包介绍:GeoPandas(初识)
  2. Deepin v20系统关机或重启的时候提示unattended upgrades shutdown的解决办法
  3. Android开发之旅:应用程序基础及组件
  4. RPC框架的可靠性设计
  5. 没有垃圾回收的JVM
  6. centos关闭防火墙
  7. Linux——Linux下安装tree
  8. python清理垃圾_用Python自动清理系统垃圾,再也不用360安全卫士了
  9. mexopenCV的配置学习过程
  10. Linux程序设计 清空标准输入缓冲区
  11. matlab mosek安装
  12. 【JavaScript】JS中的自定义对象
  13. 当8081端口被占用了怎么办?
  14. [转]【C/C++】STL详解
  15. redis实现setnx,setex连用实现分布式锁
  16. 各大高校视频教程评定
  17. clk_mux及对应的约束
  18. 计算机三级网络技术知识点大全(七)
  19. 任志强:松房贷等政策出台后 房价将U型缓慢回升
  20. ALtera DE2开发板学习03

热门文章

  1. Windows下使用taskkill 命令批量结束进程
  2. es管理器免root_OPPO手机免ROOT更换系统字体教程-适合大部分OPPO机型
  3. ubuntu mysql ftp_ubuntu上搭建vsftpd且通过mysql来管理FTP账号
  4. html5设计app数据js库,12个流行的HTML5 JS图形绘制库
  5. 深圳市龙岗职业技术学校录取分数线计算机,深圳市龙岗区第二职业技术学校2021年招生录取分数线...
  6. java的数据连接_java中连接各种数据的方法
  7. python 表名代码编码格式_14行代码示例讲解:教你解决python上传图片限制格式问题...
  8. Python标准库中的io
  9. python dbf 修改_在Python中将数据写入dbf时出错
  10. 【数据分析】Python-NumPy模块的使用