xmpp笔记2(客户端到服务器的例子)--xml

xmpp(

客户端到服务器的例子

)

1 步:客户端初始流给服务器: <stream:stream

xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='example.com'
version='1.0'>

步 2:服务器以发送给客户端一个流标记作为响应: <stream:stream

xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='c2s_123'
from='example.com'
version='1.0'>

步 3:服务器发送 STARTTLS 扩展给客户端,并带有认证机制与任何其它流特征: <stream:features>

<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'> <required/>

</starttls>
<mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>

<mechanism>DIGEST-MD5</mechanism>

<mechanism>PLAIN</mechanism> </mechanisms>

</stream:features>
步 4:客户端发送 STARTTLS 命令给服务器:

<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/> 步 5:服务器通知客户端它被允许处理

<proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
步 5(替代):服务器通知客户端 TLS 协商失败,并关闭流与 TCP 连接:

<failure xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>

</stream:stream>
步 6:客户端与服务器试图协商通过现存的 TCP 连接 完成 TLS 协商。 步 7:如果 TLS 协商成功,客户端初始化一个新流给服务器:

<stream:stream xmlns='jabber:client'

xmlns:stream='http://etherx.jabber.org/streams' to='example.com'
version='1.0'>

步 7(代替 ):如果 TLS 协商不成功,服务器关闭 TCP 连接。
步 8:服务器靠发送带有任何可利用流特征的流头给客户端作为响应。

<stream:stream xmlns='jabber:client'

xmlns:stream='http://etherx.jabber.org/streams' from='example.com'
id='c2s_234'
version='1.0'>

<stream:features>
<mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>

<mechanism>DIGEST-MD5</mechanism> <mechanism>PLAIN</mechanism>

<mechanism>EXTERNAL</mechanism> </mechanisms>

</stream:features>
步 9:客户端继续 SASL 协商(6)

  

【微分享】:障碍与失败,是通往成功最稳靠的踏脚石,肯研究、利用它们,便能从失败中培养出成功。

posted @   super1250  阅读(286)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示