`

XEP-0065: SOCKS5 Bytestreams

    博客分类:
  • XMPP
阅读更多
SOCKS5 Bytestreams ("S5B")
out-of-band bytestream


Requester
    The entity that starts a bytestream negotiation with a Target. [7]
Target
    The entity with which the Requester is attempting to establish a bytestream.
Proxy
    An entity that is willing to be a middleman for the bytestream between the Requester and the Target.
StreamHost
    The system that the Target connects to and that is "hosting" the bytestream; the Streamhost can be either the Requester or a Proxy.
StreamID
    A relatively unique Stream ID for this connection; this is generated by the Requester for tracking purposes and MUST be less than 128 characters in length.

    * "----" ... communications over XMPP
    * "____" ... communications over TCP
    * "\\\\" and "////" ... communications over SOCKS 5
    * "====" ... communications over the bytestream itself



Direct Connections
In this situation, the StreamHost is the Requester
Requester                           Target
   |                                  |
   | Send S5B initiation request      |
   | -------------------------------> |
   |                                  |
   | Open TCP socket                  |
   | <_______________________________ |
   |                                  |
   | Request SOCKS 5 connection       |
   | <\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ |
   |                                  |
   | Acknowledge SOCKS 5 connection   |
   | ///////////////////////////////> |
   |                                  |
   | Send S5B acceptance              |
   | <------------------------------- |
   |                                  |
   | Exchange data over S5B           |
   | <==============================> |
   |                


1. Requester Initiates S5B Negotiation
<iq from='requester@example.com/foo'
    id='hu3vax16'
    to='target@example.org/bar'
    type='set'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'>
    <streamhost
        jid='requester@example.com/foo'
        host='192.168.4.1'
        port='5086'/>
  </query>
</iq>


2. the Target attempts to open a standard TCP socket on the network address of the StreamHost/Requester.

3. Target Establishes SOCKS5 Connection with StreamHost
CMD = X'01'
ATYP = X'03'
DST.ADDR = SHA1 Hash of: (SID + Requester JID + Target JID)
DST.PORT = 0


4. StreamHost Acknowledges Connection
STATUS = X'00'


5. Target Notifies Requester of Bytestream
<iq from='target@example.org/bar'
    id='hu3vax16'
    to='requester@example.com/foo'
    type='result'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'>
    <streamhost-used jid='requester@example.com/foo'/>
  </query>
</iq>


Mediated Connections
In this situation, the StreamHost is not the Requester but a Proxy, which means that the Requester needs to discover the network address of the StreamHost before sending the initiation request to the Target, needs to negotiate a connection with the StreamHost in the same way that the Target does, and needs to ask the StreamHost to activate the bytestream before it can be used.

1. Requester Initiates Negotiation
<iq from='requester@example.com/foo'
    id='npq71g53'
    to='target@example.org/bar'
    type='set'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'>
    <streamhost
        host='24.24.24.1'
        jid='streamer.example.com'
        port='7625'/>
  </query>
</iq>


2. the Target attempts to open a standard TCP socket on the network address of the Proxy.

3. Target Establishes SOCKS5 Connection with StreamHost
CMD = X'01'
ATYP = X'03'
DST.ADDR = SHA1 Hash of: (SID + Requester JID + Target JID)
DST.PORT = 0


4. StreamHost Acknowledges Connection
STATUS = X'00'


5. Target Acknowledges Bytestream
<iq from='target@example.org/bar'
    id='npq71g53'
    to='requester@example.com/foo'
    type='result'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'>
    <streamhost-used jid='streamer.example.com'/>
  </query>
</iq>


6. Requester Establishes SOCKS5 Connection with StreamHost
CMD = X'01'
ATYP = X'03'
DST.ADDR = SHA1 Hash of: (SID + Requester JID + Target JID)
DST.PORT = 0


7. StreamHost Acknowledges Connection to Requester
STATUS = X'00'


8. Requester Requests Activation of Bytestream
<iq from='requester@example.com/foo'
    id='oqx6t1c9'
    to='streamer.example.com'
    type='set'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'>
    <activate>target@example.org/bar</activate>
  </query>
</iq>


9. Proxy Informs Requester of Activation
<iq from='streamer.example.com'
    id='oqx6t1c9'
    to='requester@example.com/foo'
    type='result'/>






分享到:
评论

相关推荐

    XEP-0384:libpurple的OMEMO加密。.zip

    标题 "XEP-0384:libpurple的OMEMO加密" 指涉的是一个与即时通讯安全相关的技术标准,XEP(eXtended Protocol)是XMPP(Extensible Messaging and Presence Protocol)扩展协议的缩写。XEP-0384是其中的一个特定规范...

    XEP-0035: SSL/TLS Integration.pdf

    5. **兼容性和标准化**:XEP-0035可能讨论了如何确保不同的XMPP实现之间对SSL/TLS的支持是一致的,以便于互操作性。撤销该文档可能是因为《XMPP Core》提供了更全面和统一的标准。 6. **版权和许可**:文档指出,...

    Smack类库详细说明文档

    - XEP-0065:SOCKS5 Bytestreams,提供了一种通过中间代理进行数据传输的方法。 - RFC-3920:XMPP 核心,定义了 XMPP 的基本框架和数据格式。 - RFC-3921:XMPP 实时通信,详细描述了用户间的实时消息传递机制。 ...

    Tigase 概述

    * XEP-0045:群聊消息,类似互联网的中继聊天(IRC)协议,允许多人在一个虚拟的房间内聊天。 * XEP-0049:私人 XML 存储,定义了私人数据如何在服务端存储。 * XEP-0050:工作流管理,提供实体向另一个实体执行远程...

    XMPP-XEP扩展协议

    5. **XEP-0163:个人代理发现**:允许用户控制哪些信息可以被其他人看到,提供了隐私保护。 6. **XEP-0280:消息存储与推送**:实现了离线消息的存储和在线时的推送,确保消息的完整性。 7. **XEP-0363:...

    db-smiles-xmpp:自动从code.google.compdb-smiles-xmpp导出

    支持的协议RFC-3920:核心RFC-3921:即时消息和状态XEP-0030:服务发现XEP-0128:服务发现扩展XEP-0115:实体功能XEP-0054:vcard-temp XEP-0153:基于vCard的头像XEP-0045:多用户聊天(不完全) XEP-0078:非SASL...

    xmpp-web:Web的现代XMPP客户端

    XEP-0054:电子名片 XEP-0153:基于vCard的头像 XEP-0085:聊天状态通知 XEP-0280:消息碳 XEP-0092:软件版本 XEP-0012:最后活动 XEP-0333:聊天标记 XEP-0184:邮件传递收据 路线图 追踪最近使用过的贴纸 管理...

    jabber-http-file-upload:对Emacs jabber.el的HTTP文件上传(XEP-0363)支持

    首先,我们需要理解XEP-0363的工作原理。当用户想要发送一个大文件时,客户端(这里是Emacs)会与服务器协商一个HTTP URL,然后将文件上传到这个URL。接收方收到文件元数据后,可以直接从HTTP服务器下载文件,而无需...

    XEP-Jingle协议文档

    XEP-Jingle协议是XMPP(Extensible Messaging and Presence Protocol)扩展协议中的一部分,用于实现实时多媒体通信,如音频、视频通话以及文件共享等。它为XMPP用户提供了一种标准化的方式来建立、管理和终止多媒体...

    XMPP协议中文翻译部分内容

    - XEP-0065,Socks5 Bytestreams,提供了一种通过代理服务器进行数据传输的方法,允许用户在XMPP网络之外进行文件共享或其他数据交互。 - XEP-0115,Entity Capabilities,定义了如何在XMPP网络中通告和查询实体的...

    php-component:PHP 中的 XMPP 组件 (XEP-0114) 框架

    PHP-Component 是 XEP-0114 和相关 XEP 的 PHP 语言实现,专门为 Lopbox ( ) 项目编写。 它旨在非常易于使用并让 PHP 程序员开发各种类型的服务:Jabber / XMPP 机器人、传输、MUC 引擎和许多其他类型的组件。 将 ...

    openfire-gojara-plugin:实施XEP-0321-远程名册管理

    标题 "openfire-gojara-plugin:实施XEP-0321-远程名册管理" 指的是一个专门针对Openfire服务器的Gojara插件,该插件旨在实现XEP-0321标准,即“远程名册管理”(Remote Roster Management)。XEP,扩展通讯协议...

    xampp_stone_dup:xmpp石头包更新

    消息碳部分支持: XEP-0030 :服务发现XEP-0313 :邮件归档管理积极致力于: XEP-0059 :结果集管理XEP-0004 :数据表单最新消息2020-10-30:添加了对XEP-0280的支持:Message Carbons 2020-10-30:添加了对XEP-0313...

    xabber:这是用于本地局域网的短信通知

    XEP-0128:服务发现扩展 XEP-0115:实体功能 XEP-0054:vcard-temp XEP-0153:基于vCard的头像 XEP-0045:多用户聊天(不完全) XEP-0078:非SASL身份验证 XEP-0138:流压缩 XEP-0203:延迟交货 XEP

    XEP-0035 SSL TLS Integration.zip

    《XEP-0035 SSL TLS Integration:安全通信的基础》 在当今的网络环境中,数据安全至关重要。XEP-0035是Extensible Messaging and Presence Protocol (XMPP)扩展协议之一,它关注的是如何在XMPP服务器之间以及...

    XMPP协议介绍ppt

    1. 发送方通过IQ请求建立一个数据传输通道,通常使用XEP-0065中的SOCKS5 Bytestreams或XEP-0095中的Stream Initiation协议。 2. 接收方响应请求,提供接收文件所需的主机名(host)和端口号(port)。 3. 数据通过...

    stanza.io-no-store:向消息添加xep-0334免存储

    添加参数以不将消息存储到存档中 import nostore from 'stanza.io-no-store' ... client.use(nostore); client.sendMessage({ ... body: 'This message will not be stored into message archive', ...

    xep-0045.pdf

    xmpp 扩展协议 xep-0045 中文pdf文档,聊天室协议中文文档

    ejabberd-mod-mam:使用MongoDB后端的ejabberd的消息存档管理(XEP-0313)

    ejabberd-mod-mam正在进行中,目前被认为是betaXEP-0313 我最近注意到XEP-0313已更新为版本3 ,该版本基本上改变了所有查询和结果语法。 到目前为止,该模块仍以XEP-0313的版本2为目标。要求埃雅伯德社区版= Erlang...

    XMPP 常用XEP协议

    5. 多人聊天室:XEP-0045(Multi-User Chat)是XMPP中创建和管理多人聊天室的核心协议,支持管理员权限、用户角色、隐私设置和历史记录等功能。 6. 异步任务与工作流:XEP-0203(Delayed Delivery)用于处理延迟...

Global site tag (gtag.js) - Google Analytics