1. 客户端(C) 和服务器端(S) 通过TCP连接5222端口进行全双工通信.
2. XMPP 信息均包含在 XML streams中.一个XMPP会话, 开始于
3. 出于安全目的考虑, 开始 4. SASL协商完成后, 一个新的 stream 将会被迅速打开, 它将会更加安全和保密. 第一步: 打开 stream Client: 客户端发送打开 stream 的片段到服务器, 请求一个新的 session. [html] view plaincopy 1. 这里 “example.com” 是客户端试图连接的服务器的域名. Server: Server 返回 XML stream, 以 [html] view plaincopy 1. 2. 5. 第二步: 加密和认证. 2.1 如果服务器需要 TLS 交涉. Client: 客户端发送 STARTTLS 到服务器. [html] view plaincopy 1. Server: 服务器返回消息显示 TLS 已被允许: [html] view plaincopy 1. 或者 TLS失败了: [html] view plaincopy 1. 在失败的情况下, 服务器会关闭 TCP 连接. Client: 如果 TLS 已被服务器正确处理, 客户端发送请求一个新的 session: [html] view plaincopy 1. Server: 服务器响应一个 XML stream, 指示是否需要 SASL 交涉. [html] view plaincopy 1. 3. 2.2 SASL 交涉 Client 客户端需要选择一个服务器上有效的认证方式来携带SASL交涉数据, 上面的情况, “DIGEST-MD5“, “PLAIN” 和 “EXTERNAL” 是一些可选项. “PLAIN” 认证模式是三者之中最简单的了. 它是这样工作的: Client: 客户端按照自己选择的认证模式发送一个将用户名和密码以base编码的 stream. 用户名和密码按这种格式组织: [html] view plaincopy 1. “\\0UserName\\0Password”. 例如我想以用户名为“mbed@ceit.org”登录, 密码是“mirror”. 那么, 在进行base编码之前, 用户名和密码按照上面的格式组织为一个新的字符串,“\\0mbed\\0mirror”, 再进行base编码, 得到字符串“AG1iZWQAbWlycm9y”. 然后, 客户端发送下列 stream 到服务器. [html] view plaincopy 1. ycm9y Server: 如果服务器接受了认证信息, 服务器会发回带 “success” 标签的 stream. [html] view plaincopy 1. 或者: Server: 如果密码和用户名不匹配, 或者上面的base编码有错误, 服务器发回错误信息的 stream. [html] view plaincopy 1. “DIGEST-MD5” 认证模式的具体方法可以在这里找到: http://www.ietf.org/rfc/rfc2831.txt. 第三步: 资源绑定(可选) Client: 客户端要求服务器绑定一个资源(可以理解为客户端的类型, 比如电脑, 手机, Web应用等): [html] view plaincopy 1. 2. 或者 Client: 客户端自己绑定一个资源: [html] view plaincopy 1. 2. Server: 服务器发回另外一个 [html] view plaincopy 1. 2. 第四步: 请求一个新的session 在 SASL 交涉完成之后或者可选资源绑定之后, 客户端必须建立一个 session 来开始即时消息发送和接收. Client: 客户端向服务器发送请求: [html] view plaincopy 1. 2. Server: 服务器发回一个 创建成功的消息类似于: [html] view plaincopy 1. 如果服务器未能创建 session, 服务器将会回复一个如下消息或者其他类型的错误消息. [html] view plaincopy 1. 2. 4. 第五步: 客户端和服务器交换 XMPP 片段 如果以上步骤均成功完成, 那么客户端就可以发送 XMPP 片段到服务器和接收 XML stream了. 客户端可以发送 第六步: 关闭 stream 最后, 如果客户端想要结束聊天和关闭 XMPP session, 客户端需要发送一个关闭 stream的片段到服务器. [html] view plaincopy 1. 然后, 服务器将会改变客户端的 presence 状态为 “Offline” , 并且关闭和客户端的 TCP 连接. 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务