archive-org.com » ORG » J » JABBERCN.ORG

Total: 303

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • XEP-0085 - Jabber/XMPP中文翻译计划
    lit pda to francisco shakespeare lit elsinore type chat composing xmlns http jabber org protocol chatstates message 例子6 用户返回带有 active 通知的文本消息 message from bernardo shakespeare lit pda to francisco shakespeare lit elsinore type chat body Long live the king body active xmlns http jabber org protocol chatstates message 以此类推 会话细节 接下来的会话中说明了聊天状态通知的更多细节 在例子中也使用了threads 例子7 用户发送初始文本消息 message from romeo shakespeare lit orchard to juliet capulet com type chat thread act2scene2chat1 thread body I take thee at thy word Call me but love and I ll be new baptized Henceforth I never will be Romeo body active xmlns http jabber org protocol chatstates message 在此 Juliet的客户端知道Romeo的客户端支持聊天状态通知 那么她就回复一个带有状态通知的初始文本消息 例子 8 联系人客户端回复带有 actiev 状态的文本消息 message from juliet capulet com balcony to romeo shakespeare lit orchard type chat thread act2scene2chat1 thread body What man art thou that thus bescreen d in night So stumblest on my counsel body active xmlns http jabber org protocol chatstates message 那么会话继续 过了一会 Juliet问了Romeo一个问题 激活了Romeo的客户端 Romeo开始输入针对Juliet真诚的问题的回复 那么他的Jabber客户端通知Juliet 他正在输入 例子 9 用户的客户端发送单独的 composing 通知 message from romeo montague net orchard to juliet capulet com balcony type chat thread act2scene2chat1 thread composing xmlns http jabber org protocol chatstates message Romeo意识到他的回答太草率了 然后暂停并选择正确的语句 过了一会儿 可以配置的 他的Jabber客户端判断出了延迟并发送 paused 状态 例子10 用户客户端发送单独的 paused 通知 message from romeo montague net orchard to juliet capulet com balcony type chat thread act2scene2chat1 thread paused xmlns http jabber org protocol chatstates message Romeo又开始输入 他的Jabber客户端发送 composing 通知给Juliet客户端 例子11 用户客户端发送单独的 composing 通知 message from romeo montague net orchard to juliet capulet com balcony type chat thread act2scene2chat1 thread composing xmlns http jabber org protocol chatstates message Romeo最后发送了回复 例子12 用户回复 message from romeo montague net orchard to juliet capulet com balcony type chat thread act2scene2chat1 thread body Neither fair saint if either thee dislike body active xmlns http jabber org protocol chatstates message 对话像潮水一样一次一次 直到Juliet被她的护士叫去 例子13 联系人发送文本消息 message from juliet capulet com balcony to romeo shakespeare lit orchard type chat thread act2scene2chat1 thread body I hear some noise within dear love adieu Anon good nurse Sweet Montague be true Stay but a little I will come again body active xmlns http jabber org protocol chatstates message 我们假定Juliet最小化了聊天窗口 那么她的客户端生成 inactive 通知 例子14 联系人客户端发送单独的 inactive 通知 message from juliet capulet com balcony to romeo shakespeare lit orchard type chat thread act2scene2chat1 thread inactive xmlns http jabber org protocol chatstates message 当她回来并还原窗口 她的客户端生成一个 active 通知 例子15 联系人客户端发送单独的 active 通知 message from juliet capulet com balcony to romeo shakespeare lit orchard type chat thread act2scene2chat1 thread active xmlns http jabber org protocol chatstates message 对话继续 但是Juliet被那么爱唠叨的护士又叫去了 例子16 联系人客户端发送文本消息 message from juliet capulet com balcony to romeo shakespeare lit orchard type chat thread act2scene2chat1 thread body A thousand times good night body active xmlns http jabber org protocol chatstates message 我们假设Juliet关闭了聊天窗口 那么她的客户端生成 gone 通知 例子17 联系人发送单独的 gone 状态 message from juliet capulet com balcony to romeo shakespeare lit orchard type chat thread act2scene2chat1 thread gone xmlns http jabber org protocol chatstates message Romeo的客户端现在认为这个聊天线索结束了 当他发送一条新消息时 生成一个新的thread ID 例子18 用户的客户端用新的thread ID发送文本消息 message from romeo shakespeare lit orchard to juliet capulet com balcony type chat thread act2scene2chat2 thread body A thousand times

    Original URL path: http://wiki.jabbercn.org/XEP-0085 (2016-04-25)
    Open archived version from archive


  • XEP-0096 - Jabber/XMPP中文翻译计划
    www xmpp org registrar querytypes html 就如下描述的 文件传输的注册类型是 sendfile 和 recvfile 注意 sendfile 意味着另一个实体将发送一个文件给控制着IRI URI的XMPP实体 recvfile 意味着另一个实体将会从控制着IRI URI的XMPP实体那里接收文件 发送文件 为了允许另一个实体发送文件 IRI URI就遵循如下 例子9 发送文件 IRI URI xmpp romeo montague net orchard sendfile 具体的应用程序应该 SHOULD 提供一个界面 允许用户提供关于要发送的文件的信息 比如 为了选择一个文件 浏览 用户计算机的文件系统 结果 应用程序应该 SHOULD 发送一个发布流初始化请求的信息给在IRI URI封装的XMPP地址 例子 10 发送文件 结果节点 message from juliet capulet com balcony to romeo montague net sipub xmlns http jabber org protocol si pub id publish 0123 mime type text plain profile http jabber org protocol si profile file transfer file xmlns http jabber org protocol si profile file transfer name missive txt size 1024 date 2005 11 29T11 21Z sipub message 以下提交注册 sendfile 类型 querytype name sendfile name proto http jabber org protocol si profile file transfer proto desc enables initiation of an inbound file transfer to XMPP entity desc doc XEP 0096 doc querytype 接收文件 允许另一个实体接收文件 IRI URI如下 例子11 接收文件 IRI URI xmpp romeo montague net orchard recvfile sid pub234 mime type text 2Fplain name reply txt size 2048 该IRI URI等同于以下XML节点 例子12 接收文件 等同的节点 message from romeo montague net to juliet capulet com balcony sipub xmlns http jabber org protocol si pub id pub234 mime type text plain profile http jabber org protocol si profile file transfer file xmlns http jabber org protocol si profile file transfer name reply txt size 2048 sipub message 根据XEP 0137 应用程序应该 SHOULD 通过发送如下表单初始化文件传输 例子13 接收文件 结果节点 iq from juliet capulet com balcony to romeo montague net orchard start xmlns http jabber org protocol si pub id pub234 iq 注意 开始流的请求要发送给在XMPP IRI URI中定义的实体的全JID 因此 IRI URI应该 SHOULD 包含全JID 如果没有如此 接收者必须 MUST 通过出席信息或者服务发现来查找全JID 如果接收者不能查找到发送者的全JID 比如 在最后一次出现时 通过发送订阅出席请求并从发送者的资源接收到出席信息 那么它应该 SHOULD 取消文件传输 以下的提交注册了 recvfile 查询类型 querytype name recvfile name proto http jabber org protocol si profile file transfer proto desc enables initiation of an outbound file transfer from XMPP entity desc doc XEP 0096 doc keys key name mime type name desc the MIME type of the file being offered desc key key name name name desc the name of the file being offered desc key key name sid name desc the session ID associated with the file being offered desc key key name size name desc the size in bytes of the file being offered desc key keys querytype XML Schema xml version 1 0 encoding UTF 8 xs schema xmlns xs http www w3 org 2001 XMLSchema targetNamespace http jabber org protocol si profile file transfer xmlns http jabber org protocol si profile file transfer elementFormDefault qualified xs annotation xs documentation The protocol documented by this schema is defined in XEP 0096 http www xmpp org extensions xep 0096 html xs documentation xs annotation xs element name file xs complexType xs sequence minOccurs 0 xs element name desc type xs string xs element ref range xs sequence xs attribute name date type xs dateTime use optional xs attribute name hash type xs string use optional xs attribute name name type xs string use required xs attribute name size type xs integer use required xs complexType xs element xs element name range

    Original URL path: http://wiki.jabbercn.org/XEP-0096 (2016-04-25)
    Open archived version from archive

  • XEP-0114 - Jabber/XMPP中文翻译计划
    use optional xs extension xs simpleContent xs complexType xs element xs element name thread type xs NMTOKEN xs element name presence xs complexType xs sequence xs choice minOccurs 0 maxOccurs unbounded xs element ref show xs element ref status xs element ref priority xs choice xs any namespace other minOccurs 0 maxOccurs unbounded xs element ref error minOccurs 0 xs sequence xs attribute name from type xs string use required xs attribute name id type xs NMTOKEN use optional xs attribute name to type xs string use required xs attribute name type use optional xs simpleType xs restriction base xs NCName xs enumeration value subscribe xs enumeration value subscribed xs enumeration value unsubscribe xs enumeration value unsubscribed xs enumeration value unavailable xs enumeration value probe xs enumeration value error xs restriction xs simpleType xs attribute xs attribute ref xml lang use optional xs complexType xs element xs element name show xs simpleType xs restriction base xs NCName xs enumeration value away xs enumeration value chat xs enumeration value dnd xs enumeration value xa xs restriction xs simpleType xs element xs element name status xs complexType xs simpleContent xs extension base xs string xs attribute ref xml lang use optional xs extension xs simpleContent xs complexType xs element xs element name priority type xs byte xs element name iq xs complexType xs sequence xs any namespace other minOccurs 0 maxOccurs 1 xs element ref error minOccurs 0 maxOccurs 1 xs sequence xs attribute name from type xs string use required xs attribute name id type xs NMTOKEN use required xs attribute name to type xs string use required xs attribute name type use required xs simpleType xs restriction base xs NCName xs enumeration value get xs enumeration value set xs enumeration value result xs enumeration value error xs restriction xs simpleType xs attribute xs attribute ref xml lang use optional xs complexType xs element xs element name error xs complexType xs sequence xmlns err urn ietf params xml ns xmpp streams xs group ref err stanzaErrorGroup xs element ref err text minOccurs 0 maxOccurs 1 xs sequence xs attribute name code type xs byte use optional xs attribute name type use required xs simpleType xs restriction base xs NCName xs enumeration value cancel xs enumeration value continue xs enumeration value modify xs enumeration value auth xs enumeration value wait xs restriction xs simpleType xs attribute xs complexType xs element xs schema jabber component connect xml version 1 0 encoding UTF 8 xs schema xmlns xs http www w3 org 2001 XMLSchema xmlns xml http www w3 org XML 1998 namespace targetNamespace jabber component connect xmlns jabber component connect elementFormDefault qualified xs annotation xs documentation The protocol documented by this schema is defined in XEP 0114 http xmpp org extensions xep 0114 html xs documentation xs annotation xs import namespace urn ietf params xml ns xmpp streams schemaLocation http xmpp org schemas streamerror xsd xs import namespace http www w3 org XML 1998 namespace schemaLocation http www w3 org 2001 03 xml

    Original URL path: http://wiki.jabbercn.org/XEP-0114 (2016-04-25)
    Open archived version from archive

  • XEP-0115 - Jabber/XMPP中文翻译计划
    Psi 0 11 http jabber org protocol caps http jabber org protocol disco info http jabber org protocol disco items http jabber org protocol muc urn xmpp dataforms softwareinfo 根据var对字段排序并且添加值 ip version ipv4 ipv6 os Mac os version 10 5 1 software Psi software version 0 11 S client pc el Ψ 0 11 client pc en Psi 0 11 http jabber org protocol caps http jabber org protocol disco info http jabber org protocol disco items http jabber org protocol muc urn xmpp dataforms softwareinfo ip version ipv4 ipv6 os Mac os version 10 5 1 software Psi software version 0 11 ver q07IKJEyjvHSyhy CH0CxmKi8w 处理方法 当实体收到根据本文档定义的生成方法生成的认证字符串中的 ver 属性值时 他必须 MUST 根据如下方法处理 ver 1 验证 c 元素包含的hash属性 如果没有包含 忽略 ver 或者将其视作遗留格式生成的 如果支持的话 2 如果 hash 属性的值不匹配应用程序的支持的功能 那么按如下步骤处理 发送服务发现请求给生成该哈希的实体 从生成该哈希的实体接收服务发现信息 不要按上面提到的进行验证或者在全局范围内缓存验证字符串 相反的 应用程序应该 SHOULD 仅将发现的标识 特性和生成实体的JabberID关联 3 如果 hash 值与应用程序的支持的哈希函数匹配 那么根据如下步骤验证该认证字符串 发送服务发现请求给生成字符串的实体 从生成字符串的实体那接收服务发现信息 如果响应中在同一个category type lang name中包含了超过一个服务发现标识 那么考虑该完整的响应的格式是不正确的 如果响应格式是正确的 根据服务发现信息和Generation Method重新构建本地的哈希值 如果收到的值和重新构建的哈希值匹配 那么对于和其交流的所有的JabberID的应用程序必须 MUST 视其已被验证并且应该 SHOULD 全局缓存 如果收到的值和重新构建的哈希值不匹配 那么应用程序必须 MUST 将结果是为验证失败的并且不能 MUST NOT 全局缓存该验证字符串 然而 它应该 SHOULD 检查生成和发送该值的实体的服务发现标识和支持的特性 用例 声明能力 生成字符串的实体每次发送出席信息时 该出席信息包含了一个实体标识符 node 属性 和identity和feature标识符 ver 属性 所以服务器会记录最后一次出席信息以应答探测 客户端应该 SHOULD 在其发送的每个出席通知中包含实体能力 例子1 带有能力的出席信息 presence c xmlns http jabber org protocol caps hash sha 1 node http code google com p exodus ver QgayPKawpkPSDYmwT WM94uAlu0 presence 如果在生成实体的出席信息会话期间 支持的特性改变了 例如 用户安装了一个插件的更新版本 应用程序必须 MUST 重新计算认证字符串并且应该 SHOULD 发送新的出席信息广播 例子2 重新计算ver属性出席信息 presence c xmlns http jabber org protocol caps hash sha 1 node http code google com p exodus ver 66 0NaeaBKkwk85efJTGmU47vXI presence 发现服务 应用程序 请求的实体 可以通过发送disco info请求 参考XEP 0030 给生成能力信息的实体 生成的实体 来了解实体支持的特征 例子3 Disco info请求 iq from juliet capulet lit balcony id disco1 to romeo montague lit orchard type get query xmlns http jabber org protocol disco info node http code google com p exodus QgayPKawpkPSDYmwT WM94uAlu0 iq disco info请求是由请求实体发送到生成实体 to 属性的值必须 MUST 是生成实体的精确JID 对于客户端是全JID localpart domain tld resource 注意 生成实体不应该 SHOULD NOT 在disco items响应中的实体列表中包 caps node 换言之 是一种虚拟的能力节点 不是一个为了服务发现目的的实体有关的确实的节点 disco的 node 属性必须 MUST 包含了向后兼容的特性 node 属性的值应该 SHOULD 是将实体提供的 node 属性的值 比如 http code google com p exodus 和 字符和生成实体提供的 ver 属性的值 比如 QgayPKawpkPSDYmwT WM94uAlu0 连接后生成的 生成实体返回它所支持的所有能力 例子4 Disco info响应 iq from romeo montague lit orchard id disco1 to juliet capulet lit balcony type result query xmlns http jabber org protocol disco info node http code google com p exodus QgayPKawpkPSDYmwT WM94uAlu0 identity category client type pc feature var http jabber org protocol disco info feature var http jabber org protocol disco items feature var http jabber org protocol muc query iq 注意 如果生成字串的实体结合了不同xml lang的标识符在它的认证字符串中 它必须 MUST 返回所有标识符 即使请求中指定了xml lang 流特性 服务器可能 MAY 在流特性中包含实体能力 所以连接客户端和对等点服务器的时候不需要在每次连接时发送服务发现请求 例子5 包含了能力的流特性 stream features c xmlns http jabber org protocol caps hash sha 1 node http jabberd org ver ItBTI0XLDFvVxZ72NQElAzKS9sU stream features 当一个已连接的客户端或者对等服务器发送一个服务发现信息请求以确定那个通过流特性来发布能力的服务器的实体能力时 请求实体必须 MUST 发送disco info请求给流响应的 from 属性的提供的服务器JID from 属性在 RFC 3920 推荐 在rfc3920bis中被要求 为了允许这样功能 发布支持实体能力的服务器必须 MUST 根据rfc3920bis 在初始流响应中提供一个 from 地址 确定是否支持 如果一个实体支持实体能力协议 它必须 MUST 在服务发现请求中返回一个 http jabber org protocol caps 的特性来反映该事实 例子6 服务发现请求 iq from romeo montague lit orchard id disco2 to juliet capulet lit balcony type get query xmlns http jabber org protocol disco info iq 例子7 服务发现响应 iq from juliet capulet lit balcony id disco2 to romeo montague lit orchard type result query xmlns http jabber org protocol disco info feature var http jabber org protocol caps query iq 如果服务器支持Caps Optimization功能 它还必须 MUST 在服务发现请求中返回 http jabber org protocol caps optimize 特性 例子8 服务发现请求 iq from juliet capulet lit balcony id disco3 to capulet lit type get query xmlns http jabber org protocol disco info iq 例子9 服务发现响应 iq from capulet lit id disco3 to juliet capulet lit balcony type result query xmlns http jabber org protocol disco info feature var http jabber org protocol caps optimize query iq 实现注意 哈希算法支持 应用程序应该 SHOULD 维护它支持的哈希算法列表 必须 MUST 包含文本档强制实现的技术中的算法或者算法列表 缓存 对于一个能处理实体能力的应用程序 在单次出席信息会话中缓存认证字符串和发现的identity features之间的关联关系是被推荐的 RECOMMENDED 这可以在一次会话中省去不必要的服务发现请求 对于一个应用程序 在跨越多个出席会话中缓存关联是被推荐的 RECOMMENDED 因为可以在会话开始时避免不必要的服务发现请求 直接出席信息 如果2个实体交换消息 但是没有正常的交换出席出席消息 即 出席消息的订阅 实体可能 MAY 选择直接发送出席消息给对方 出席消息应该 SHOULD 标注同样的实体能力的信息就如广播的出席消息一样 除非收到对方的实体能力的消息 否则应用程序必须 MUST 假设对方不支持实体能力 能力优化 管理已连接的客户端的出席会话的服务器可能 MAY 优化出席通知 去除冗余的能力标注 因此 出席通知的接收者不能 MUST NOT 期望在每个收到的出席通知中收到标注 如果服务器优化了实体能力 它必须 MUST 确保订阅了出席信息的双方收到的第一条出席信息中包含标注 比如 带有 ver 属性的更新出席信息发送给所有订阅者 如果一个已连接的客户端确定它的客户端支持能力优化 它可能 MAY 选择只在第一次出席消息中发送能力信息 同样在能力变化时也会发送 安全事项 强制实现的技术 SHA 1哈希算法是强制实现的 所有协议的实现都必须 MUST 支持SHA 1 具体的实现可能 MAY 支持其他算法 任何其他的算法都应该 SHOULD 在IANA Hash Function Textual Names Registry 中注册 在未来 XMPP理事会可能出于谨慎考虑 如果SHA 1被确认为容易受到原像攻击 会修改强制实现的哈希算法 原像攻击 就如 RFC 4270 描述的 使用如MD5或者SHA 1算法输出的协议容易受到碰撞攻击或者原像攻击或者同时受到2种攻击 因为只是在实体能力中使用哈希输出 本协议将不会受到碰撞攻击 即使使用的算法容易受到碰撞攻击 然而 如果使用的哈希函数受到了原像攻击 那么协议就可能受到原像攻击 理论上 原像攻击将会采用以下其中的一种方式 对于已知的 ver 属性的值V 那么攻击者就能找到一个输入消息 比如哈希值X而不是V 这就是第一次原像攻击 对于已知的输入消息S 攻击者就能够找到S 而不是V 这就是 第二次原像攻击 在实践中 原像攻击为了能在实体能力协议中起到作用 会采用以下方法 被使用的哈希算法以后不仅是理论上 在实际中也是容易遭到第一次或者第二次原像攻击 比如 对现在来说MD5或者SHA 1算法还不容易遭到攻击 但是以后可能会容易遭到攻击 攻击者可能找到匹配V或者S的哈希值的输入消息X或者S 该值可能不是根据实体能力计算出的哈希值 该值相对较短并且容易破解 这也暗示了现存的函数不太容易受到原像攻击除了相对较长的输入消息 255顺序块 输入讯息 X 或 S 将需要符合S的结构 如认证字符串中定义的 包括服务发现标识的排序 以及服务发现特性标识的排序 由 分隔的字符以及使用 i octet 集合的排序规则 输入的信息X 或 S 将需要让它们看起来象不支持一个理想的特性 例如 点对点加密 即使其他实体和它的hash 同样是V 但是实际上是支持这个特性的 也就是说 攻击者需要返回一组吻合X或S 的服务发现标识和特性 并且用这个似是而非的冬冬通过XMPP联系实体 或看起来它支持某个特性 即使其他和它的hash同为V的实体实际上不支持 攻击者将需要宣传这个哈希V 在其他一些拥有真正的输入讯息S的实体广播包含有关实体能力数据的出席信息并提供真正的服务发现应答之前 因此 攻击者可能需要颠覆特定软件的开发过程或颠覆名字空间的XMPP注册项的发行过程 或两者 在可预见的将来 攻击者可满足所有前述条件 似乎极不可能 不过 XMPP理事会会继续监察强制实现的哈希函数的密码的状态 以及那个函数可能的任何漏洞 以及可能会导致对实体能力协议的实际威胁 如果并且当它能现实的 或甚至可能的 开展有效的原像攻击实体能力协议 XMPP理事会将考虑更新此规格把强制实现的哈希算法改成一个更安全的技术 能力毒药 坚持以本文的 认证字符串 章节所定义的方法来生成和处理 ver 属性 有助于防范恶意或不当实施实体所导致的实体能力信息毒药 如果 ver 属性的值是一个这里所定义的认证字符串 即 如果 ver 属性不是根据遗留格式生成的 列入 hash 属性是必需的 明确知道 ver 属性的值是一个认证字符串 使得接收者避免无效或中毒的哈希的杂散通知 信息暴露 利用实体的能力 攻击者可能更容易发起针对某些特定应用的攻击 因为攻击者就可以更容易确定客户端的类型以及其能力 不过 由于大多数客户端回应服务发现和软件版本的请求都不需要进行访问控制检查 所以并没有增加新的威胁 实体想限制访问能力信息 应使用基于服务器的隐私规则 28 以确定适当的通信阻断 例如 一个实体可能会选择只允许从 受信任 的实体发送的IQ请求 如那些与他们互相订阅了了出席信息的实体 不过 请注意 这样的限制可能不兼容直接的出席信息 IANA事项 本文和 IANA 没有交互 XMPP注册事项 协议命名空间 The XMPP Registrar 30 includes http jabber org protocol caps in its registry of protocol namespaces see http www xmpp org registrar namespaces html 服务发现特性 The XMPP Registrar shall include http jabber org protocol caps optimize in its registry of service discovery features see http www xmpp org registrar disco features html XML Schema xml version 1 0 encoding UTF 8 xs schema xmlns xs http www w3 org 2001 XMLSchema targetNamespace http jabber org protocol caps xmlns http jabber org protocol caps elementFormDefault qualified xs annotation xs documentation The protocol documented by this schema is defined in XEP 0115 http www xmpp org extensions xep 0115 html xs documentation xs annotation xs element name c xs complexType xs simpleContent xs extension base empty xs attribute name ext type xs NMTOKENS use optional xs attribute name hash type xs NMTOKEN use required xs attribute name node type xs string use required xs attribute name ver type xs string use required xs extension xs simpleContent xs complexType xs element xs simpleType name empty xs restriction base xs string xs enumeration value xs restriction xs simpleType xs schema 遗留格式 在本协议的1 4版之前 ver 属性的生成方法是不同的 ext 属性的使用更广泛 hash 属性则没有 为了保护历史

    Original URL path: http://wiki.jabbercn.org/XEP-0115 (2016-04-25)
    Open archived version from archive

  • XEP-0124 - Jabber/XMPP中文翻译计划
    xml charset utf 8 Content Length 185 body xmlns http jabber org protocol httpbind xmlns json http json org message from contact example com to user example com xmlns jabber client body Good morning to you body message message from friend example com to user example com xmlns jabber client body Not much how about with you body message json json precision zip Latitude 37 7668 Longitude 122 3959 Address City SAN FRANCISCO State CA Zip 94107 Country US precision zip Latitude 37 371991 Longitude 122 026020 Address City SUNNYVALE State CA Zip 94085 Country US json json body 客户端可以通过发送空的 body 元素来轮询连接管理器的输入节 示例7 请求XML载荷 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 88 body rid 1249243563 sid SomeSID xmlns http jabber org protocol httpbind 连接管理器必须以和它从客户端接收载荷同样的方法等待并回应 确认 请求确认 当应答一个保持的请求时 如果连接管理器发现它已经接收了另一个更高 rid 属性的请求 通常此时它正在保持第一个请求 那么它可以向客户端确认已收到 当连接管理器也接收了所有更低的 rid 属性的请求时 它可以设置任何应答的 ack 属性高于它已经接收到的最高的 rid 属性 示例8 应答请求的确认 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 64 body ack 1249243564 xmlns http jabber org protocol httpbind 如果连接管理器在一个会话过程中将要包含 ack 属性 那么它必须在它的会话创建应答中包含一个 ack 属性 并且在会话过程中始终设置应答的 ack 属性 唯一的例外是 在它的会话创建应答之后 如果这个值和任何要应答的请求的 rid 值相同 连接管理器不应该包含一个 ack 属性在应答之中 如果连接管理器被允许同一时间保持多个请求 那么从连接管理器收到低于预期的 ack 值 或意外的缺少 ack 属性 可以给客户端一个可能发生网络失败的早期预警 例如 如果客户端认为连接管理在它应答的时候应该已经接收到了另一个请求 应答确认 客户端可以同样通过把任何请求的 ack 属性值设为它已经接收到的的应答的最高 rid 值 此时它也已经接收了所有拥有更低 rid 值的应答 来通知连接管理器它已经收到了应答 如果客户端在一个会话中要在请求中包含 ack 属性 那么它必须在它的会话创建请求中包含一个 ack 属性 值为 1 并且在会话中始终设置请求的 ack 属性 唯一的例外是 在它的会话创建请求之后 如果客户端已经接收到所有在它之前的请求的应答 那么客户端不应该包含一个 ack 属性到任何请求 示例9 请求应答确认 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 88 body rid 1249243566 sid SomeSID ack 1249243564 xmlns http jabber org protocol httpbind 在接收到一个 ack 值低于最后一个已应答请求的 rid 值的请求时 连接管理器可以通过立即发送它的下一个应答而不是等到它有需要发送给客户端的载荷的时候才发送应答 例如 假如从它应答的时候到现在已经过了一段时间 以此告知客户端这种情况 在这种情况下它应该包含一个 report 属性并把值设为高于它从客户端接收到的 ack 属性 而 time 属性则设为它发送 report 相关应答的时间 以毫秒计数 示例10 应答报告 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 64 body report 1249243565 time 852 xmlns http jabber org protocol httpbind 在收到一个拥有 report 和 time 属性的应答之后 如果客户端仍未收到 report 属性指定的请求id相关的应答 那么它可以选择重发这个丢失的应答相关的请求 见 断开的连接 闲置 从连接管理器接收到一个应答之后 如果没有客户端请求继续被连接管理器保持 并且如果会话不是一个轮询会话 客户端应该一有可能就制造一个新的请求 在任何情况下 如果没有请求被hold住 客户端必须在最大闲置时间过期之前制造一个新的请求 这个时间段 以秒计数 是在会话创建应答中的 inactivity 属性定义的 如果连接管理器已经应答了一个会话中它所接收到的所有请求并且从最后一次应答到当前的时间超过最大闲置时间段 那么它应该假定客户端已经失去连接并且不通知客户端就终止这个会话 如果接下来客户端再制造另一个请求 那么连接管理器应该像这个会话不存在一样来应答 如果连接管理器在会话创建应答里没有指定一个最大闲置时间 那么它应该允许客户端选择它的闲置时间 如果会话不是轮询会话那么连接管理器应该指定一个相对短的闲置时间来确保尽可能快的发现断链 建议的时间应该比连接管理器和客户端在困难的网络条件下一次顺利的网络往返的秒数多一点 因为可以期待客户端立刻制造一个新请求 见上文 如果客户端遇到意外的临时状况 在此期间它将不能在最大闲置时间之内发送请求到连接管理器 例如 当运行时环境从一个web页面变成另一个页面 并且如果连接管理器在它的会话创建应答中包含了 maxpause 属性 那么客户端可以通过在一个请求中包含 pause 属性来请求临时增加最大闲置时间的 注意 如果连接管理器没有在会话开始的时候定义一个 maxpause 属性那么客户端不能在会话期间发送 pause 属性 示例11 请求会话暂停 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 98 body rid 1249243564 sid SomeSID pause 60 xmlns http jabber org protocol httpbind 接收到一个会话暂停请求之后 如果请求的时间段不超过最大允许时间 那么连接管理器应该立刻应答所有未决的请求 包括暂停请求 并临时增加最大限制时间到请求的时间 注意 对暂停请求的应答不能包含任何载荷 注意 如果客户端简单地希望连接管理器返回所有它保持住的请求 那么它可以把 pause 属性值设为连接管理器的会话请求应答中的 inactivity 属性值 如果客户端认为它有无限期断线的危险 那么它甚至可以通过指定一个小于 inactivity 值的 pause 值来请求临时减少闲置时间 这样使得连接管理器能快速发现接下来的断链 连接管理器应该在从客户端接到下一个请求之前 假定连接管理器尚未终止该会话 把闲置时间设回正常 过度活跃 客户端不应该制造超过连接管理器的会话创建应答中的 requests 属性定义数量的并发请求 无论如何 如果客户端暂停或终止一个会话 它可以制造一个额外的请求 如果在任何时间段客户端发送系列的新请求 也就是说请求的rid属性是增长的 而不是重复的请求 超过了 requests 属性指定的数量 并且如果连接管理器尚未应答这些请求中的任何一个 并且如果最后一次请求既不包含一个 pause 属性也不包含一个值为 terminate 的 type 属性 那么连接管理器应该认为客户端正在制造过多的并发请求 并且发一个 policy violation 终止绑定错误给客户端来终止该HTTP会话 注意 这个行为同时适用于普通和轮询会话 示例12 过多并发请求应答 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body type terminate condition policy violation xmlns http jabber org protocol httpbind 注意 如果连接管理器在会话创建应答中没有指定一个 requests 属性 那么它必须允许客户端按它选择的数量来发送并发请求 如果在任何时间段客户端发送系列新请求等于 requests 属性指定的数量 并且如果连接管理器尚未应答这些请求中的任何一个 并且如果最后一次请求既不包含一个 pause 属性也不包含一个值为 terminate 的 type 属性 并且最后两个请求到达的时间差小于创建会话应答中的 polling 属性定义的值 那么连接管理器应该认为客户端正在制造超过它允许的频率的请求并且发一个 policy violation 终止绑定错误给客户端来终止该HTTP会话 注意 这个行为对于轮询会话略有不同 示例13 过于频繁的请求应答 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body type terminate condition policy violation xmlns http jabber org protocol httpbind 注意 如果连接管理器在会话创建应答中未定义 polling 属性 那么它必须允许客户端按它选择的频率来发送请求 轮询会话 对一个受约束的客户端来说不一定总是能使用HTTP流水线或在同一时间和连接管理器打开多个HTTP连接 在这种情况下客户端应该在它的会话创建请求中把 wait 和 或 hold 属性值设为 0 来通知连接管理器 并且然后在会话中始终有规律地 轮询 连接管理器来获得它可能从服务器收到的载荷 注意 即使客户端不请求一个轮询会话 连接管理器可以通过设置它的 会话创建应答 的 requests 属性 它指定客户端能制造的并发请求的数量 为 1 来要求一个客户端使用轮询 无论如何这是不推荐的 如果一个会话将使用轮询 连接管理器应在它的会话创建应答中指定一个高于普通值的 inactivity 属性 见 闲置 这个增加值应该大于它指定的 polling 属性值 如果客户端在一个低于会话创建应答中 polling 属性 允许的最短轮询间隔 指定的秒数的时间段内发送两个连续的空的新请求 也就是说请求的rid属性是增加的 而不是重复的请求 并且如果连接管理器应答的第一个请求不包含载荷 那么在收到第二个请求之后连接管理器应该终止HTTP会话并返回一个 policy violation 终止绑定错误给客户端 示例14 过于频繁的轮询应答 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body type terminate condition policy violation xmlns http jabber org protocol httpbind 注意 如果连接管理器在会话创建应答中未指定 polling 属性 那么它必须允许客户端按它选择的频率来轮询 终止HTTP会话 任何时候 客户端可以发送一个 type 属性为 terminate 的 body 元素来正常地终止会话 终止请求可以包含一个或多个载荷 连接管理器必须转发给服务器以确保正常的注销登录 示例15 来自客户端的会话终止 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 153 body rid 1249243565 sid SomeSID type terminate xmlns http jabber org protocol httpbind presence type unavailable xmlns jabber client body 连接管理器应该用一个包含空的 body 元素的HTTP 200 OK来应答这个请求 示例16 连接管理器确认终止 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 72 body type terminate xmlns http jabber org protocol httpbind 在接收到该应答后 客户端必须认为该HTTP会话已经被终止 请求IDs 生成 客户端必须生成一个大的 随机的 正整数用于初始的 rid 见 安全事项 并且随后的每个请求的rid做加一的处理 客户端必须小心选择一个初始的 rid 在整个会话中它的值不能够加到超过 9007199254740991 21 在实践中 一个会话可能被迫变得非常长 或涉及到非常多的包交换 以至于超过定义的限制 顺序的消息转发 当一个客户端制造了并发请求 连接管理器可能没能按顺序接收到它们 连接管理器必须按照 rid 属性指定的顺序来转发载荷到服务器并应答客户端的这些请求 客户端必须按照请求的顺序来处理从连接管理器接收到的应答 连接管理器应该期望 rid 属性值在一个大于前一个请求的数值窗内 这个数值窗等于连接管理器允许的最大并发请求数量 如果它接收到的请求的 rid 大于这个数值窗 那么连接管理器必须以一个错误来终止会话 示例17 意外的rid错误 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body type terminate condition item not found xmlns http jabber org protocol httpbind 断开的连接 不可靠的网络通讯或客户端约束可能造成断开的连接 连接管理器应该记住 rid 以及相应的那些客户端的非暂停请求 见 XEP 0124 闲置 闲置 和非HTTP或绑定错误的请求的HTTP应答 保持在缓冲之中的对于非暂停请求的应答的数量应该和连接管理器允许的并发请求数量相同 或者 如果使用了确认机制 则和还未确认的应答数量相同 如果网络连接中断或在客户端接收到连接管理器对于某个请求的应答之前关闭了 那么客户端刻一重新发送一个原请求的精确副本 任何时候连接管理器发现收到的请求的 rid已经接收过 它应该返回一个包含缓冲区的原有XML应答的 HTTP 200 OK 应答给客户端 也就是说 一个封装了了拥有适当属性以及可选的包含一个或多个XML载荷的 body 如果原有的应答不可用 例如 它已经不在缓冲区了 那么连接管理器必须返回一个 item not found 终止绑定错误 示例18 应答不在缓冲区错误 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body type terminate condition item not found xmlns http jabber org protocol httpbind 注意 无论这个 rid 是过大还是过小 错误都是一样的 这使得攻击者更难搜索到可接受的值 保护不安全的会话 适用性 如果客户端和连接管理器之间的会话不安全 可以使用这里描述的可选的密钥序列机制 只有所有客户端请求都是通过 SSL 或 TLS HTTP连接并且连接管理器生成了一个不可预知的会话ID 该会话才应该被认为是安全的 如果会话是安全的 则不需要使用这个密钥序列机制 即使会话不安全 本文前述章节定义的意外会话和请求IDs已经通过把连接绑定到一对持久TCP IP连接的方法来提供了一个类似级别的保护 并且因此提供了防止 盲 绑定的足够保护 无论如何 在某些环境下 以下定义的密钥序列机制帮助抵御了更多确定的和有知识的攻击者 重要的是要认识到以下定义的密钥序列机制只帮助我们保护抵御一个能在一个序列的不安全会话中看到所有请求或应答但不能修改那些请求的内容 在这种情况下 这个机制阻止攻击者插入HTTP请求到会话 例如 终止请求或应答 的攻击者 无论如何 当攻击者能修改不安全的请求或应答的内容时 密钥序列机制不提供任何保护 简述 每个会话的HTTP请求可以通过一系列不同的socket连接来散播 这将使得一个未经授权的收到该会话ID和会话请求ID的用户能够使用他们自己的socket连接来插入 body 请求元素到会话中并接收相应的应答 以下的密钥序列机制通过允许连接管理器探查第三方插入的 body 请求元素来抵御这类攻击 生成密钥序列 在请求一个新的会话之前 客户端必须选择一个不可预知的计数器 n 和一个不可预知的值 seed 然后客户端通过把这个 seed 做一次加密哈希运算并从160位转换成一个十六进制字符串 K 1 它运算 n 次然后得到发起密钥 K n 这个哈希算法必须是 SHA 1 定义于 RFC 3174 22 示例19 创建密钥序列 K 1 hex SHA 1 seed K 2 hex SHA 1 K 1 K n hex SHA 1 K n 1 使用密钥 客户端必须把该会话中第一个请求的 newkey 属性值设为 K n 示例20 携带发起密钥的会话请求 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 104 body content text xml charset utf 8 hold 1 rid 1573741820 to example com wait 60 xml lang en newkey ca393b51b682f61f98e7877d61146407f3d0a770 xmlns http jabber org protocol httpbind 客户端必须把所有接下来的请求的 key 属性值设为按生成顺序的下一个密钥 每个请求发送的值从 K n 1 向 K 1 衰减 示例21 携带密钥的请求 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 88 body rid 1573741821 sid SomeSID key bfb06a6f113cd6fd3838ab9d300fdb4fe3da2f7d xmlns http jabber org protocol httpbind 连接管理器可以通过运算密钥的 SHA 1 哈希并把它和前一个请求的 newkey 属性 或者如果没有 newkey 属性则为 key 属性 进行比较来证实密钥 如果这个值不匹配 或者如果接收到一个不带 key 属性的请求 以及接收到的是前一个请求所设的 newkey 或 key 属性 那么连接管理器必须不处理该元素 必须终止该会话 并且必须返回一个 item not found 终止绑定错误 示例22 非法的密钥序列错误 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body type terminate condition item not found xmlns http jabber org protocol httpbind 切换到另一个密钥序列 生成密钥序列的时候 客户端应该选择一个高的 n 值 无论如何 如果会话太长以至于客户端在序列 K 1 中达到最后的密钥 那么客户端必须切换到一个新的密钥序列 客户端必须 选择新的 seed 和 n 值 使用上文定义的机制生成一个新的密钥序列 把该请求的 key 属性设为旧的序列的下一个值 也就是说 K 1 最后的值 把该请求的 newkey 属性设为新的序列的值 K n 示例23 新密钥序列 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 188 body rid 1573741822 sid SomeSID key 6f825e81f4532b2c5fa2d12457d8a1f22e8f838e newkey 113f58a37245ec9637266cf2fb6e48bfeaf7964e xmlns http jabber org protocol httpbind message to contact example com xmlns jabber client body I said Hi body message body 多重流 简介 本章描述的可选特性允许在一个HTTP会话中包含多重XML流 这个特性实质上用于那些不允许HTTP流水线的运行时环境中 此时一个客户端能和每个连接管理器打开的并发HTTP请求的数量是受限的 如果他们在同一时间使用不止一个帐号连接 那么运行于这类环境下的客户端需要多重流会话 这个特性对于任何通过HTTP建立了并联流的客户端来说也降低了网络流量 查询 如果一个连接管理器支持多重流特性 它必须在它的会话创建应答中包含一个 stream 属性 如果一个客户端不接受这个 stream 属性 那么它必须假定连接管理器不支持该特性 23 这个 stream 属性标识该会话打开的第一个流 每个 stream 属性的值必须是一个无意义的不可预知的名字 并且在连接管理器应用的上下文中是唯一的 示例24 携带流名字 stream name 的会话创建应答 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 128 body wait 60 inactivity 30 polling 5 requests 2 hold 1 accept deflate gzip stream firstStreamName maxpause 120 sid SomeSID charsets ISO 8859 1 ISO 2022 JP ver 1 6 from example com xmlns http jabber org protocol httpbind 添加流到会话 如果连接管理器在它的会话创建应答中包含了一个 stream 属性 那么客户端可以在任何时间发送一个空的带有 to 属性的 body 元素来请求它打开另一个流 请求必须包含合法的 sid 和 rid 24 属性 并且也应该包含一个 xml lang 属性 请求可以包含 route from 和 secure 属性 见 会话创建请求 但是它不应该包含 ver content hold 或 wait 属性 因为并没有创建一个新的会话 示例25 请求另一个流 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 104 body sid SomeSID rid 1573741820 to example com route xmpp example com 9999 xml lang en xmlns http jabber org protocol httpbind 如果连接管理器没有在会话的开始表示它支持多重流 那么它必须忽略额外的属性并且和对待普通的用于载荷的空请求一样对待该请求 见 发送和接收XM载荷 25 否则它必须打开一个新的流到指定的服务器 见 会话创建应答 生成一个新的流名字 并以此名字应答客户端 应答也可以包含 from 和 secure 属性 但是它不应该包含 sid requests polling hold inactivity maxpause accept charsets ver 或 wait 属性 示例26 添加流应答 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 128 body stream secondStreamName from example com xmlns http jabber org protocol httpbind 注意 如果应答既不包含 from 也不包含 secure 属性 那么它们可以留待接下来的应答中被发送 见 会话创建应答 在那种情况下 stream 属性也是必须指定的 传送载荷 如果在一个会话中不止打开一个流 那么被连接管理器发送的所有非空的 body 元素必须包含 stream 属性 它定义所有的载荷属于哪个流 客户端应该包含一个 stream 属性用于同样的目的 如果客户端希望连接管理器广播这些载荷给所有打开的流 它可以忽略 stream 属性 注意 一个 body 元素在不同的流中必须不能包含不同的载荷 如果一个流名字不符合该会话打开的流之一 那么接收到的连接管理器应该返回一个 item not found 终止绑定错误 或者接收到的客户端应该终止这个会话 无论如何 如果接收到的实体只是关闭这个流 并且发送者可能在它发送这个载荷的时候没有留意 那么它可以简单安静地忽略该 body 元素包含的任何载荷 注意 不包含 from 或 secure 属性的空的 body 元素不应该包含 stream 属性 因为任何流都没有东西正在传送 如果这样的一个 body 元素包含了一个 stream 属性 那么接收到的实体应该忽略该属性 示例27 客户端以一个流名字发送载荷 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 188 body rid 1249243562 sid SomeSID stream secondStreamName xmlns http jabber org protocol httpbind message to contact example com xmlns jabber client body I said hello body message body 注意 该应答的 stream 属性值可以和响应请求的不同 26 示例28 连接管理器应答一个不同的流名字 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 185 body stream firstStreamName xmlns http jabber org protocol httpbind message from contact example com to user example com xmlns jabber client body Hi yourself body message body 如果连接管理器没有指定流名字 那么客户端必须假定载荷是和第一个流相关的 即使第一个流已经关闭了 如果客户端没有指定一个流名字 那么连接管理器必须广播载荷给所有打开的流 27 示例29 客户端请求一个载荷被广播 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 188 body rid 1249243562 sid SomeSID xmlns http jabber org protocol httpbind presence xmlns jabber client show away show presence body 关闭流 如果在一个会话中打开了不止一个流 客户端可以在任何时间使用上文 终止HTTP会话 描述的程序关闭一个流 小心地在 stream 属性指定该流的名字 如果客户端关闭了最后一个流 连接管理器必须终止该会话 如果客户端没有指定一个流名字那么连接管理器必须关闭所有打开的流 发送该终止请求的任何载荷到所有流 并终止该会话 示例30 客户端关闭一个流 POST webclient HTTP 1 1 Host httpcm example com Accept Encoding gzip deflate Content Type text xml charset utf 8 Content Length 153 body rid 1249243564 sid SomeSID stream secondStreamName type terminate xmlns http jabber org protocol httpbind presence type unavailable xmlns jabber client body 错误条件 如果在一个会话中不止打开了一个流 连接管理器可以在致命绑定错误中包含一个 stream 属性 见 终止绑定条件 如果指定了 stream 属性 那么该流必须被双方实体关闭但是会话不应该被终止 示例31 致命流错误 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body type terminate condition remote connection failed stream secondStreamName xmlns http jabber org protocol httpbind 注意 如果连接管理器在致命流错误中不包含 stream 属性 那么会话的所有的打开的流都必须被双方实体关闭并且会话必须被终止 错误和状态代码 在HTTP应答中有四种类型的错误和状态报告 表1 错误条件类型 错误条件 描述 HTTP条件 已过时 连接管理器应答从传统客户端来的非法请求一个HTTP错误 这用于绑定语法错误 可能的攻击 等等 注意受约束的客户端不能区分不同的HTTP错误 终止绑定条件 这些错误条件可以被受约束的客户端读取 他们用于连接管理器问题 抽象流错误 连接管理器和服务器之间的通讯问题 以及非法客户端请求 绑定语法错误 可能的攻击 等等 可恢复的绑定条件 这些报告连接管理器和客户端之间的通讯问题 它们不终止会话 客户端通过重新发送前面所有的未收到应答的 body 封装器来从这些错误恢复 被传输的协议的条件 和 body 封装器中的XML载荷有关的错误 通常定义于被传输的协议的文档中 它们不终止会话 完整的描述在下面 HTTP条件 注意 除了200所有HTTP代码已经被终止绑定条件取代 以使客户端能确定错误的来源是连接管理器应用还是HTTP媒介 传统的客户端 或连接管理器 在它的会话创建请求 或应答 中是不包含 ver 属性的 传统客户端 或连接管理器 将根据下表来解释 或应答 HTTP错误码 非传统连接管理器应该不发送HTTP错误码 除非它们连接的是一个传统客户端 在接收到一个HTTP错误 400 403 404 之后 一个传统客户端或任何连接到传统连接管理器的客户端必须认为该会话为空的和无用的 null and void 一个连接到非传统连接管理器的非传统客户端可以认为该会话仍活跃 表2 HTTP错误和状态码 代码 名称 被 取代 目的 200 OK 应答给合法的客户端请求 400 Bad Request bad request 通知客户端一个HTTP头的格式或绑定的元素是不可接受的 例如 语法错误 403 Forbidden policy violation 通知客户端它违反了会话规则 轮询太频繁 请求太频繁 太多并发请求 404 Not Found item not found 通知客户端 1 sid 不合法 2 stream 不合法 3 rid 大于期望的窗口上限 4 连接管理器不能重发应答 5 key 顺序不合法 注意 没有其他定义在早期版本BOSH里的HTTP错误和状态码 例如 Internal Server Error 终止绑定条件 在任何发送到客户端的应答里 连接管理器可以通过把 body 元素的 type 属性值设为 terminate 来返回一个致命错误 这些绑定错误标识该HTTP会话被终止了 除非定义了一个 stream 属性 见 多重流错误条件 注意 尽管这些条件中的一部分类似定义于 RFC 6120 的XMPP流错误条件 它们不会被XMPP流错误混淆 在这里BOSH是用于传输XMPP 在连接管理器和XMPP服务器之间经历的任何致命XMPP流错误条件只会被用下面描述的 remote stream error 条件来报告 示例32 远程连接失败错误 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body type terminate condition remote connection failed xmlns http jabber org protocol httpbind condition 属性的值定义如下 表3 终止绑定错误条件 条件 目的 bad request T一个HTTP头或从客户端收到的绑定元素的格式不可接受 例如 语法错误 host gone 连接管理器的 to 属性指定的目标域或 route 属性指定的目标主机或端口不再提供服务 host unknown 连接管理器的 to 属性指定的目标域或 route 属性指定的目标主机或端口是未知的 improper addressing 发起元素缺少 to 或 route 属性 或属性没有值 但是连接管理器需要它 internal server error 连接管理器经历了一个内部错误导致它无法为请求提供服务 item not found 1 sid 不合法 2 stream 不合法 3 rid 大于期望窗口的上限 4 连接管理器不能重发应答 5 key 序列非法 other request 和这个请求请求想同的另一个请求导致该会话终止 policy violation 客户端违反了会话规则 轮询太频繁 请求太频繁 发送了过多的并发请求 remote connection failed 连接管理器无法连接 或无法安全地连接 或已经丢失了它的连接 到服务器 remote stream error 封装了一个正在传输的协议的错误 see other uri 连接管理器不执行这个URI 例如 连接管理器只接受客户端以类似 https URI 而不是类似 the http URI 的请求以SSL或TLS连接 客户端可以尝试 POSTing 到 uri 子元素内含的那个 URI system shutdown 连接管理器正在关闭 所有激活的HTTP会话正在被终止 不能创建新的会话 undefined condition 这个错误不是在这里定义的那些错误之一 连接管理器应该在这个 body 封装器的内容里包含 应用特有的 信息 如果客户端在它的会话创建请求中未包含一个 ver 属性 那么连接管理器应该发送一个已过时的HTTP错误而不是这个终止绑定错误条件 如果连接管理器在它的会话创建应答中未包含 ver 属性 那么客户端应该预期它会发送一个已过时的HTTP错误条件而不是这个终止会话绑定条件 以下是一个 see other uri 条件的例子 示例33 参见另一个URI错误 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body condition see other uri type terminate xmlns http jabber org protocol httpbind uri https secure jabber org xmppcm uri body 以下是一个包含 remote stream error 条件的例子 示例34 远程错误 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body condition remote stream error type terminate xmlns http jabber org protocol httpbind xmlns stream http etherx jabber org streams message from contact example com to user example com xmlns jabber client body I said Hi body message stream error xml not well formed xmlns urn ietf params xml ns xmpp streams text xmlns urn ietf params xml ns xmpp streams xml lang en Some special application diagnostic information text escape your data xmlns application ns stream error body 自然的 客户端同样可以报告绑定错误给连接管理器 尽管这是这是不太可能的 可恢复的绑定条件 在任何连接管理器发送给客户端的应答中 它可以通过设置 body 元素的 type 属性为 error 来返回一个可恢复的错误 这些错误不表示HTTP会话被终止 如果客户端决定从这个错误回复 那么它必须重复那个发生错误的HTTP请求 以及所有前面没有收到应答的HTTP请求 这些请求的内容必须和原始请求的 body 元素相同 这使连接管理器在前一个请求因为通讯失败而丢失之后能恢复一个会话 示例35 可恢复的错误 HTTP 1 1 200 OK Content Type text xml charset utf 8 Content Length 68 body type error xmlns http jabber org protocol httpbind XML载荷条件 应用级的错误条件描述请参看正在被传输并通过连接管理器路由到客户端的那个协议的文档 它们对连接管理器来说是透明的 所以超过了这里定义的传输绑定的范围 实现备注 HTTP流水线 即使客户端请求HTTP流水线并且连接管理器支持它 也不保证流水线能成功 因为它可能不被中间代理支持 客户端能做到最好的是通过设置 hold 属性的值为 1 来请求使用HTTP流水线 如果HTTP流水线没生效 因为服务器返回 HTTP 1 0 或 connection close 那么客户端应该降格为使用多重连接 安全事项 在客户端和BOSH服务之间连接 客户端和BOSH服务之间的所有通讯应该发生在加密的HTTP连接之上 客户端和连接管理器之间的加密应该发生在传输层或HTTP层 而不是应用层 这个协商应该遵循定义于 SSL 28 的 HTTP SSL 协议 当然也可以遵循定义于 RFC 2818 29 的 HTTP TLS 协议或定义于 RFC 2817 30 的基于HTTP协议的TLS 如果用来发送发起会话请求的HTTP连接是加密的 那么该会话中使用的所有其他HTTP连接也必须是加密的 此外 如果当建立用来发送发起会话请求的加密连接的时候交换了验证证书 那么客户端 和 或 连接管理器应该确保在该会话接下来的所有连接中使用同一个验证证书 一旦这样一个 安全会话 被建立 如果连接管理器拒绝简历一个加密连接或提供了不同的证书 那么客户端应该关闭连接并终止会话而不发送任何更多的请求 如果客户端通过一个未加密的连接或使用了一个不同的证书发送了属于某个 安全会话 一部分的封装元素 那么连接管理器应该简单地关闭该连接 连接管理应该不终止该会话 因为那将使拒绝服务攻击更容易 BOSH和应用之间的连接 一个BOSH服务应该使用适当的技术例如安全套接字层 SSL 传输层安全 TLS 以及StartTLS 如果后台程序支持的话 等等来加密它到后台应用的连接 另外 BOSH 服务在以下情形中可以被认为安全 1 如果它运行在和后台应用同一个物理机上 或 2 如果它运行在和后台应用同一个私有网络上并且管理员确信未知的个人或程序不能访问私有网络 如果数据隐私是必需的 客户端应该使用一个应用级别的点对点加密技术来加密它的消息 因为客户端没办法确信BOSH服务加密了它到该应用的连接 这些方法超出了本协议的范围 不可预测的SID和RID 会话标识符 SID 和发起请求标识符 RID 是安全的关键所以都必须是不可预测的和不重复的 见 RFC 1750 31 的关于为了安全目的对SIDs和发起RIDs的随机性的建议 使用SHA 1 最近的研究显示 在选定的情况下 使用SHA 1哈希算法来产生哈希值是最有可能的 见 RFC 4270 32 无论如何 在BOSh中使用SHA 1看起来会最小化该文献描述的可能的攻击 另外 目前的评估表明 在经常发现的攻击中 它将耗费政府级实体的运算能力一年才可能出现问题 IANA事项 TCP端口5280 传统上用于BOSH客户端和BOSH连接管理器的通讯 已经注册到 互联网编号分配机构 IANA 33 在它的 IANA端口号码注册表 34 的端口注册表里 关键词为 xmpp bosh 尽管这个端口的使用是可选的 定义这个端口有助于标准化 这样BOSH客户端可以通过BOSH联系任何一个给定的XMPP服务而不需要 查找替代的XMPP连接方法 35 描述的 DNS TXT 记录或更多先进的方法例如 U NAPTR XMPP注册事项 协议命名空间 在它的协议命名空间注册项中包含了 http jabber org protocol httpbind 的XMPP注册项 XML Schema xml version 1 0 encoding UTF 8 xs schema xmlns xs http www w3 org 2001 XMLSchema xmlns stream http etherx jabber org streams targetNamespace http jabber org protocol httpbind xmlns http jabber org protocol httpbind elementFormDefault qualified xs annotation xs documentation The protocol documented by this schema is defined in XEP 0124 http www xmpp org extensions xep 0124 html xs documentation xs annotation xs import namespace http www w3 org XML 1998 namespace schemaLocation http www w3 org 2001 03 xml xsd xs element name body xs complexType xs choice xs element name uri minOccurs 0 maxOccurs 1 type xs string xs any namespace other minOccurs 0 maxOccurs unbounded processContents lax xs choice xs attribute name accept type xs string use optional xs attribute name ack type xs positiveInteger use optional xs attribute name authid type xs string use optional xs attribute name charsets type xs NMTOKENS use optional xs attribute name condition use optional xs simpleType xs restriction base xs NCName xs enumeration value bad request xs enumeration value host gone xs enumeration value host unknown xs enumeration value improper addressing xs enumeration value internal server error xs enumeration value item not found xs enumeration value other request xs enumeration value policy violation xs enumeration value remote connection failed xs enumeration value remote stream error xs enumeration value see other uri xs enumeration value system shutdown xs enumeration value undefined condition xs restriction xs simpleType xs attribute xs attribute name content type xs string use optional xs attribute name from type xs string use optional xs attribute name hold type xs unsignedByte use optional xs attribute name inactivity type xs unsignedShort use optional xs attribute name key type xs string use optional xs attribute name maxpause type xs unsignedShort use optional xs attribute name newkey type xs string use optional xs attribute name pause type xs unsignedShort use optional xs attribute name polling type xs unsignedShort use optional xs attribute name report type xs positiveInteger use optional xs attribute name requests type xs unsignedByte use optional xs attribute name rid type xs positiveInteger use optional xs attribute name route type xs string use optional xs attribute name sid type xs string use optional xs attribute name stream type xs string use optional xs attribute name time type xs unsignedShort use optional xs attribute name to type xs string use optional xs attribute name type use optional xs simpleType xs restriction base xs NCName xs enumeration value error xs enumeration value terminate xs restriction xs simpleType xs attribute xs attribute name ver type xs string use optional xs attribute name wait type xs unsignedShort use optional xs attribute ref xml lang use optional xs anyAttribute namespace other processContents lax xs complexType xs element xs schema 致谢 感谢 Mike Cumings Tomas Karasek Tobias Markmann Chris Seymour Safa Sofuoğlu Stefan Strigler Matthew Wild Kevin Winters 以及 Christopher Zorn 的反馈 附录 附录A 文档信息 系列 XEP 序号 0124 发布者 XMPP标准基金会 状态 草案 类型 标准跟踪 版本 1 10 最后更新时间 2010 07 02 批准机构 XMPP理事会 依赖标准 RFC 1945 RFC 2616 RFC 3174 替代标准 无 被替代标准 无 缩略名 bosh Schema http www xmpp org schemas httpbind xsd 原文控制 HTML 本文的其它格式 XML PDF Appendix B Author Information Ian Paterson Email ian paterson clientside co uk JabberID ian zoofy com Dave Smith Email dizzyd jabber org JabberID dizzyd jabber org Peter Saint Andre Email stpeter jabber org JabberID stpeter jabber org URI https stpeter im Jack Moffitt Email jack chesspark com JabberID jack chesspark com 附录C 法律通告 版权 XMPP扩展协议的版权 1999 2011 归XMPP标准化基金会 XSF 所有 权限 特此授权 费用全免 对任何获得本协议副本的人 对使用本协议没有限制 包括不限制在软件程序中实现本协议 不限制在网络服务中布署本协议 不限制拷贝 修改 合并 发行 翻译 分发 转授 或销售本协议的副本 被允许使用本协议做了以上工作的人士 应接受前述的版权声明和本许可通知并且必须包含在所有的副本或实质性部分的规格中 除非单独的许可 被重新分发的修改工作 不得含有关于作者 标题 编号 或出版者的规格的误导性资料 并不得宣称修改工作是由本文的作者 作者所属的任何组织或项目 或XMPP标准基金会签注 免责声明 特别注意 本协议是提供的 原样 的基础 没有担保或任何形式的条件 明示或暗示 包括 但不限于任何担保或关于名称 非侵权性 适销性或适合作某一特定目的的条件 责任限制 在任何情况下以及没有任何法律规定时 不论是侵权行为 包括疏忽 合同或其它方面 除非根据适用法律的要求 如蓄意和有严重疏忽行为 或以书面形式同意 XMPP标准基金会或任何作者不对本协议所造成的损失承担责任 包括任何直接 间接 特殊 偶发 或任何从本协议出 入 连接的字符产生的或实现 布署或其他对本协议的使用导致的相应的损害赔偿

    Original URL path: http://wiki.jabbercn.org/XEP-0124 (2016-04-25)
    Open archived version from archive

  • XEP-0128 - Jabber/XMPP中文翻译计划
    value field field var c2s port ssl value 5223 value field field var http access value http shakespeare lit jabber value field field var ip version value ipv4 value value ipv6 value field field var info url value http shakespeare lit support php value field x query iq 群 下面是在多用户房间里查询服务的例子 例2 用户查询房间信息 iq type get from hag66 shakespeare lit pda to darkcave macbeth shakespeare lit id disco1 query xmlns http jabber org protocol disco info iq iq type result from darkcave macbeth shakespeare lit to hag66 shakespeare lit pda id disco1 query xmlns http jabber org protocol disco info identity category conference type text name A Dark Cave feature var http jabber org protocol muc feature var jabber iq register x xmlns jabber x data type result field var FORM TYPE type hidden value http jabber org protocol muc roominfo value field field var muc roominfo description label Description value The place for all good witches value field field var muc roominfo subject label Subject value Spells value field field var muc roominfo occupants label Number of occupants value 3 value field field var muc roominfo lang label Language of discussion value en value field x query iq 实现说明 一般来说 XMPP标准基金会给每一个发现服务在注册登记时指定一个FORM TYPE 此外 特定的应用可以定义应用程序以及具体FORM TYPEs 一个实体可以有多个服务发现的身份 例如 一个XMPP服务器也可能作为一个发布 订阅服务 因此 它是可能的 允许一个单一的服务发现的结果 发现含有多种服务扩展元素 可能高达2为每个标识元素 然而 在实践中是不可能发现任何特定服务的结果将包含多个服务扩展元素的发现 安全注意事项 应用程序应确网络上任何实体都能发现服务扩展信息 IANA注意事项 这份文件并不需要与互联网分配编码机构 IANA 6 互动 XMPP协议注册事项 本文件并不需要的相互作用的XMPP注册 7 但是 最佳做法是在XMPP的登记FORM TYPEs和field值 附录 附录A 文档信息 系列 XEP 序号 0128 发布者 XMPP标准基金会 状态 终结版 类型 标准跟踪 版本 1 0 最后更新 2004 10 20 批准机构 XMPP理事会 依赖标准 XEP 0030 XEP 0068 XMPP Core 取代 无 被替代标准 无 缩略名 N A 原文控制 HTML RSS 本文的其它格式 XML PDF 附录B 作者信息 Peter Saint Andre Email stpeter jabber org JabberID stpeter jabber org URI https stpeter im 附录C 法律通告 版权 XMPP扩展协议的版权 1999 2008 归XMPP标准化基金会 XSF 所有 权限 特此授权 费用全免 对任何获得本协议副本的人 对使用本协议没有限制 包括不限制在软件程序中实现本协议 不限制在网络服务中布署本协议 不限制拷贝 修改 合并 发行 翻译 分发 转授 或销售本协议的副本 被允许使用本协议做了以上工作的人士 应接受前述的版权声明和本许可通知并且必须包含在所有的副本或实质性部分的规格中 除非单独的许可 被重新分发的修改工作 不得含有关于作者 标题 编号 或出版者的规格的误导性资料 并不得宣称修改工作是由本文的作者 作者所属的任何组织或项目 或XMPP标准基金会签注 免责声明 特别注意 本协议是提供的 原样 的基础 没有担保或任何形式的条件 明示或暗示 包括 但不限于任何担保或关于名称 非侵权性 适销性或适合作某一特定目的的条件 责任限制 在任何情况下以及没有任何法律规定时 不论是侵权行为 包括疏忽 合同或其它方面 除非根据适用法律的要求 如蓄意和有严重疏忽行为 或以书面形式同意 XMPP标准基金会或任何作者不对本协议所造成的损失承担责任 包括任何直接 间接 特殊 偶发 或任何从本协议出 入 连接的字符产生的或实现 布署或其他对本协议的使用导致的相应的损害赔偿 包括但不限于善意的损失 停止作业 电脑失灵或故障 或任何和所有其他商业损害或损失 即使XMPP标准基金会或作者已被告知此类损害的可能性 知识产权的一致性 XMPP扩展协议完全遵守XSF的知识产权策略 可在 http www xmpp org extensions ipr policy shtml 找到副本或写信给XMPP标准基金会 1899 Wynkoop Street Suite 600 Denver CO 80202 USA 附录D 和XMPP的关系 可扩展的消息和出席信息协议 XMPP 定义于 XMPP Core RFC 3920 和 XMPP IM RFC 3921 规范里 由 XMPP标准基金会贡献到由依据 RFC 2026 成立的互联网工程人物组管理的互联网标准流程 Internet Standards Process 本文定义的任何协议已在互联网标准流程之外开发 并且被理解为 XMPP 的扩展而不是一个XMPP本身的演化 开发 或修改 附录E 讨论地点 主要的XMPP扩展协议讨论地点是 standards xmpp org 讨论列表 在 xmpp org 的其它讨论列表中的讨论可能也有合适的 所有的列表见 http xmpp org about discuss shtml 勘误表可以发送邮件到 editor xmpp org 附录F 需求一致性 以下用于本文的需求关键字的解释见于 RFC 2119 MUST SHALL REQUIRED MUST NOT SHALL NOT SHOULD RECOMMENDED SHOULD NOT NOT RECOMMENDED MAY OPTIONAL 附录G 备注 1 XEP 0030 Service Discovery http xmpp org extensions xep 0030 html 2 XEP 0045 Multi User Chat http xmpp org extensions xep 0045 html 3 XEP 0060 Publish Subscribe http xmpp org extensions xep 0060 html 4 XEP 0004 Data Forms http xmpp org extensions xep 0004 html 5

    Original URL path: http://wiki.jabbercn.org/XEP-0128 (2016-04-25)
    Open archived version from archive

  • XEP-0134 - Jabber/XMPP中文翻译计划
    XMPP IM 是大的文档 以痛苦的细节定义了可扩展的消息和出席信息协议 尽管这些规格写起来不好玩 它们为好的协议设计和文档提供了一个模式 保持弹性 背景 明确定义的需要和弹性的需要之间必须取得平衡 一个完全严格的协议可能在压力之下或当条件改变时被打破 反之一个更具弹性的协议可能弯曲和适应 对于好的协议设计来说关键是了解什么时候该明确什么时候该弹性 意义 通常 一个协议需要定义功能性的梗概 但是不必要定义一个特定领域使用的参数或值 为了允许成长和变更 定义 XMPP Registrar 33 将会保持对特定参数和值的跟踪 它比明确地在协议本身限定它们更加合理 示例 因为旧的 Agent Information 34 和 Jabber Browsing 35 协议中的实体类型和种类被定义成确定的固定值 Service Discovery 把那个公呢功能放到 XMPP Registrar 了 类似的 Stream Initiation 36 为它的范本定义了一个注册项 Advanced Message Processing 37 为处理条件和动作定义了注册项 并且很多XMPP扩展协议注册了 FORM TYPE 值 如 Field Standardization for Data Forms 38 里定义的那样 隐私和安全问题 背景 从一开始 Jabber社区中隐私和安全性就是重要的 这不需要改变 意义 好的协议尊重由用户和应用通讯或生成的数据的机密性 一如尊重系统或网络整体的安全性事项已经在核心XMPP层处理了 应用级的协议不能 must not 在隐私和安全性上妥帖 注意这些事项 随着由协议设计者所做的严格的跨区域审查和关闭审查 以 XMPP Council 39 和 Standards SIG 40 的形式 将帮助确保我们开发的协议会在互联网上为通讯提供一个坚实的基础 示例 大家知道 由Jabber社区开发的 XMPP IM 定义的出席信息订阅模式在联系人能查看一个用户的出席信息之前要求批准 类似的 Jabber总是包含强的验证方法 这个验证方法通过使用 SASL RFC 4422 41 得到了很大的提升 安全事项 没有直接和本提议相关的安全特性 本协议只是一些信息 无论如何 以上讨论的 遵循这些准则开发的协议应该适当地定义隐私和安全事项 和互联网设计相关的安全性的帮助文档参见 RFC 3552 42 IANA事项 本文档与 互联网编号分配授权机构 IANA 43 无关 XMPP注册处事项 本文和不需要和XMPP注册处交互 附录 附录A 文档信息 系列 XEP 序号 0134 发布者 XMPP标准基金会 状态 活跃 类型 信息 版本 1 1 最后更新 2004 12 09 批准机构 XMPP理事会 依赖标准 无 替代标准 无 被替代标准 无 缩略名 无 原文控制 HTML 本文的其它格式 XML PDF 附录B 作者信息 Peter Saint Andre Email stpeter jabber org JabberID stpeter jabber org URI https stpeter im 附录C 法律通告 版权 XMPP扩展协议的版权 1999 2008 归XMPP标准化基金会 XSF 所有 权限 特此授权 费用全免 对任何获得本协议副本的人 对使用本协议没有限制 包括不限制在软件程序中实现本协议 不限制在网络服务中布署本协议 不限制拷贝 修改 合并 发行 翻译 分发 转授 或销售本协议的副本 被允许使用本协议做了以上工作的人士 应接受前述的版权声明和本许可通知并且必须包含在所有的副本或实质性部分的规格中 除非单独的许可 被重新分发的修改工作 不得含有关于作者 标题 编号 或出版者的规格的误导性资料 并不得宣称修改工作是由本文的作者 作者所属的任何组织或项目 或XMPP标准基金会签注 免责声明 特别注意 本协议是提供的 原样 的基础 没有担保或任何形式的条件 明示或暗示 包括 但不限于任何担保或关于名称 非侵权性 适销性或适合作某一特定目的的条件 责任限制 在任何情况下以及没有任何法律规定时 不论是侵权行为 包括疏忽 合同或其它方面 除非根据适用法律的要求 如蓄意和有严重疏忽行为 或以书面形式同意 XMPP标准基金会或任何作者不对本协议所造成的损失承担责任 包括任何直接 间接 特殊 偶发 或任何从本协议出 入 连接的字符产生的或实现 布署或其他对本协议的使用导致的相应的损害赔偿 包括但不限于善意的损失 停止作业 电脑失灵或故障 或任何和所有其他商业损害或损失 即使XMPP标准基金会或作者已被告知此类损害的可能性 知识产权的一致性 XMPP扩展协议完全遵守XSF的知识产权策略 可在 http www xmpp org extensions ipr policy shtml 找到副本或写信给XMPP标准基金会 1899 Wynkoop Street Suite 600 Denver CO 80202 USA 附录D 和XMPP的关系 可扩展的消息和出席信息协议 XMPP 定义于 XMPP Core RFC 3920 和 XMPP IM RFC 3921 规范里 由 XMPP标准基金会贡献到由依据 RFC 2026 成立的互联网工程人物组管理的互联网标准流程 Internet Standards Process 本文定义的任何协议已在互联网标准流程之外开发 并且被理解为 XMPP 的扩展而不是一个XMPP本身的演化 开发 或修改 附录E 讨论地点 主要的XMPP扩展协议讨论地点是 standards xmpp org 讨论列表 在 xmpp org 的其它讨论列表中的讨论可能也有合适的 所有的列表见 http xmpp org about discuss shtml 勘误表可以发送邮件到 editor xmpp org 附录F 需求一致性 以下用于本文的需求关键字的解释见于 RFC 2119 MUST SHALL REQUIRED MUST NOT SHALL NOT SHOULD RECOMMENDED SHOULD NOT NOT RECOMMENDED MAY OPTIONAL 附录G 备注 RFC 6120 Extensible Messaging and Presence Protocol XMPP Core http tools ietf org html rfc6120 RFC 6121 Extensible Messaging and Presence Protocol XMPP Instant Messaging and Presence http tools ietf org html rfc6121 RFC 3117 On the Design of Application Protocols http tools ietf org html rfc3117 XMPP标准基金会 XSF 是一个独立的 非营利的会员组织 专门给IETF的可扩展消息和出席信息协议 XMPP 开发扩展 更多信息参见 http xmpp org xsf 互联网工程人物组是开发新的互联网相关标准协议的首要组织 它最著名的标准方面的工作是HTTP和SMTP 更多信息参见 http www ietf org Extensible Markup Language XML 1 0 Fourth Edition http www w3 org TR REC xml XEP 0060 Publish Subscribe http xmpp org extensions xep 0060 html XEP 0126 Invisibility http xmpp org extensions xep 0126 html XEP 0071 XHTML IM http xmpp org extensions xep 0071 html XHTML 1 0 http www w3 org TR xhtml1 Rich Text Format RTF Version 1 5 Specification http msdn microsoft com library en us dnrtfspec html rtfspec asp XEP 0119 Extended Presence Protocol Suite http xmpp org extensions xep 0119 html XEP 0045 Multi User Chat http xmpp org extensions xep 0045 html 万维网联盟为互联网上的数据格式和标记语言 例如 HTML

    Original URL path: http://wiki.jabbercn.org/XEP-0134 (2016-04-25)
    Open archived version from archive

  • XEP-0138 - Jabber/XMPP中文翻译计划
    中包含 http jabber org features compress 协议命名空间 在协议命名空间的注册项中 XMPP注册项中包含 http jabber org protocol compress 压缩方法注册 在 http www xmpp org registrar compress html 中 XMPP注册项维护了压缩方法的注册 过程 为了提交新的注册项到注册登记处 登记者必须根据以下表单将其包含在相关的扩展协议中或者发送邮件到 registrar xmpp org method name the XML character data of the method element name desc a natural language description of the compression method desc doc the document that specifies or registers the compression method doc method 登记者可能同时登记多个压缩方法 每个方法都包含一个独立的 method 元素 注册 method name zlib name desc the ZLIB compression method desc doc RFC 1950 doc method XML Schemas 流特性 xml version 1 0 encoding UTF 8 xs schema xmlns xs http www w3 org 2001 XMLSchema targetNamespace http jabber org features compress xmlns http jabber org features compress elementFormDefault qualified xs annotation xs documentation The protocol documented by this schema is defined in XEP 0138 http www xmpp org extensions xep 0138 html xs documentation xs annotation xs element name compression xs complexType xs sequence xs element name method type xs NCName maxOccurs unbounded xs sequence xs complexType xs element xs schema 协议命名空间 xml version 1 0 encoding UTF 8 xs schema xmlns xs http www w3 org 2001 XMLSchema targetNamespace http jabber org protocol compress xmlns http jabber org protocol compress elementFormDefault qualified xs import namespace urn ietf params xml ns xmpp stanzas xs annotation xs documentation The protocol documented by this schema is defined in XEP 0138 http www xmpp org extensions xep 0138 html xs documentation xs annotation xs element name compress xs complexType xs sequence xs element name method type xs NCName minOccurs 1 maxOccurs unbounded xs sequence xs complexType xs element xs element name compressed type empty xs element name failure xs complexType xs choice xs element name setup failed type empty xs element name processing failed type empty xs element name unsupported method type empty xs sequence xmlns err urn ietf params xml ns xmpp stanzas xs group ref err stanzaErrorGroup xs element ref err text minOccurs 0 xs sequence xs choice xs complexType xs element xs simpleType name empty xs restriction base xs string xs enumeration value xs restriction xs simpleType xs schema 附录 附录A 文档信息 系列 XEP 序号 0138 发布者 XMPP标准基金会 状态 终结版 类型 标准跟踪 版本 2 0 最后更新 2009 05 27 批准机构 XMPP理事会 依赖标准 XMPP Core 替代标准 无 被替代标准 无 缩略名 compress compress名字空间的XML架构 http www xmpp org schemas compress xsd feature名字空间的XML架构 http www xmpp org schemas compress feature xsd 注册表 http xmpp org registrar compress html 原文控制 HTML RSS 本文的其它格式 XML PDF 附录B 作者信息 Joe Hildebrand Email jhildebr cisco com JabberID hildjj jabber org Peter Saint Andre Email stpeter jabber org JabberID stpeter jabber org URI https stpeter im 附录C 法律通告 版权 XMPP扩展协议的版权 1999 2008 归XMPP标准化基金会 XSF 所有 权限 特此授权 费用全免 对任何获得本协议副本的人 对使用本协议没有限制 包括不限制在软件程序中实现本协议 不限制在网络服务中布署本协议 不限制拷贝 修改 合并 发行 翻译 分发 转授 或销售本协议的副本 被允许使用本协议做了以上工作的人士 应接受前述的版权声明和本许可通知并且必须包含在所有的副本或实质性部分的规格中 除非单独的许可 被重新分发的修改工作 不得含有关于作者 标题 编号 或出版者的规格的误导性资料 并不得宣称修改工作是由本文的作者 作者所属的任何组织或项目 或XMPP标准基金会签注 免责声明 特别注意 本协议是提供的 原样 的基础 没有担保或任何形式的条件 明示或暗示 包括 但不限于任何担保或关于名称 非侵权性 适销性或适合作某一特定目的的条件 责任限制 在任何情况下以及没有任何法律规定时 不论是侵权行为 包括疏忽 合同或其它方面 除非根据适用法律的要求 如蓄意和有严重疏忽行为 或以书面形式同意 XMPP标准基金会或任何作者不对本协议所造成的损失承担责任 包括任何直接 间接 特殊 偶发 或任何从本协议出 入 连接的字符产生的或实现 布署或其他对本协议的使用导致的相应的损害赔偿 包括但不限于善意的损失

    Original URL path: http://wiki.jabbercn.org/XEP-0138 (2016-04-25)
    Open archived version from archive



  •