RFC3920可扩展消息出席协议(XMPP):核心 3 寻址方案

3 寻址方案

3.1 概述

        实体可被看作是使用XMPP进行通信的任意网络端点(例如:一个网络上的ID)。任意此类实体均以与RFC2396[URI]一致的格式来唯一设定地址。由于历史原因,XMPP实体的地址称作Jabber标识符或JID。一个有效JID包含一套有序元素:域标识符,结点标识符,资源标识符。
        JID的语法定义如下,使用增广巴斯科范式[ABNF](Augmented Backus-Naur Form)。(Ipv4地址与Ipv6地址规则定义在[Ipv6]的附录B;符合结点规则的允许字符序列由Nodeprep profile of [STRINGPREP]定义,编入本文档的附录A;符合资源规则的允许字符序列由Resourceprep profile of [STRINGPREP]定义,编入本文档的附录B;子域规则参考国际化域标识的概念,在[IDNA]中有述)。

      jid             = [ node "@" ] domain [ "/" resource ]
      domain          = fqdn / address-literal
      fqdn            = (sub-domain 1*("." sub-domain))
      sub-domain      = (internationalized domain label)
      address-literal = IPv4address / IPv6address

        所有JID均基于前述规则。此结构最普通的用法就是用户以<user@host/resource>形式标识一个即时消息用户、用户连接的服务器、用户连接的资源(例如:特别的客户端)。
        然而,结点类型可能不仅是客户端,举个例子,一个提供多用户聊天服务的特别聊天室,可以以<room@service>(“room”是聊天室名,“service”是多用户聊天服务的主机名)作为地址。并且,此聊天室的特别拥有者可能以<room@service/nick>(“nick”是此拥有者的房间昵称)作地址,许多其它JID类型均有可能(例如:<domain/resource>可能是一个服务器端脚本或服务)。
        JID(结点标识符,域标识符,资源标识符)的每个可允许部分长度不准超过1023字节,结果,最大总长度(包括‘@’,‘/’分隔符)为3071字节。

3.2 域标识符

        域标识符是基本标识符,且是JID中仅有的一个必须的元素(仅有域标识符的JID是有效的)。它通常表示网络网关与“主要的”服务器,具有为其它实体间的连接进行XML路由与数据管理的能力。然而,由域标识符作为参考的实体并不总是服务器,它可能是一项以服务器子域为地址的服务,提供多于服务器(例:多用户聊天服务,用户目录,或外部消息系统的一个网关)的功能。
        每个服务器或服务的域标识符将通过网络进行通信,它可能是IP地址,并应当是完全合法的域名(参考[DNS])。域标识符必须是一个“国际化的域名”,定义在[IDNA],Nameprep [NAMEPREP] profile of stringprep [STRINGPREP]可以无错应用。比较两个域标识符之前,服务器必须(客户端是应该)首先对标签(定义在[IDNA])应用Nameprep profile,以补足每个标识符。

3.3 节点标识符

        结点标识符是一个可选的辅助标识符,放在域标识符之前,后以‘@’字符分隔。它通常表示实体请求与使用由服务器或网关(例如:一个客户端)提供的网络访问,虽然它也能表示其它种类的实体(例如:有多用户聊天服务功能的聊天室)。由结点标识符表示的实体,在特定域上下文中,在XMPP即时消息与出席应用中被加以地址,此类地址称作“bare JID”,形式为<node@domain>
        结点标识符必须像the Nodeprep profile of [STRINGPREP]这样格式化,可以无错应用。比较两个结点标识符之前,服务器必须(客户端应该)首先对每个标识符应用Nameprep profile。

3.4 资源标识符

        资源标识符是一个可选的第三位标识符,位于域标识符之后,后跟‘/’作为分隔符。资源标识符可以修改<node@domain>也可以只是<domain>地址。它通常表示一个特别的会话、连接(例如:一个设备或位置),或属于带有节点标识符的对象(例如:在多用户聊天室的一个参与者)。当提供必要的信息来完成资源绑定(第7节)时,资源标识符对服务器与其它客户端均不透明,并且由客户端实现来定义,以后,它作为一个“已连接资源”参考。实体可能同时维护多连接,每个已连接的资源均由资源标识符来进行区别。
        资源标识符必须按Resourceprep profile of [STRINGPREP]格式化,才能无错应用。比较两个资源标识符前,服务器必须(客户端应该)首先为每个标识符应用Resourceprep profile。

3.5 决定地址

        SASL协商后(第6节),如果正确,资源绑定(第7节),流接收实体必须决定初始实体的JID。
        如果SASL协商(第6节)期间未指定授权身份,对服务器服务器间的通信,初始实体的JID应当被授权身份,派生于认证身份,在SASL(Simple Authentication and Security Layer简单授权与安全层)说明[SASL]中定义。
        如果SASL协商(第6节)期间未指定授权身份,对客户端服务器的通信,“bare JID”(<node@domain>)应该被授权身份,被派生于授权认证,定义在[SASL]。在资源绑定期间(第7节)“full JID”(<node@domain/resource>)的资源标识符部分应当是客户端与服务器间协商的资源标识符。
        接收实体必须确保结果JID(包括结点标识符,域标识符,资源标识符,分隔符)遵从此节中前面所定义的规则与格式;为满足此限制,接收实体可能需要替代由接收实体所决定的规范的JID初始实体所发送的JID。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值