🖋️
Dev & Ops
Network
Network
  • Network Book
  • Сети для самых маленьких
  • OSI
    • Протоколы над сетями
      • NAT
      • BGP
      • Криптографические протоколы
        • SSL
        • TLS
          • Расширения
            • TLS-ALPN
        • SSH
        • IPSec
      • Обмен сообщениями (IM) в режиме реального времени и информации о присутствии (Presence)
        • SIMPLE (Основан на SIP)
        • XMPP/Jabber
        • Matrix
      • VoIP
        • Intro
        • Протокол SIP
        • Пентест
      • WebRTC
      • VPN
    • L7: Application Layer
      • WEB
        • (не поддерживается) SPDY
        • HTTP
          • WebSockets
          • h2c (HTTP/2 Cleartext)
          • Коды ответов
          • Заголовки
          • URI
        • HTTP/2
        • HTTP/3 (HTTP-over-QUIC)
      • Почтовые протоколы
        • IMAP
        • POP
      • Windows
        • HTTP / Windows
        • LDAP
        • RPC
        • SMB
        • Windows Name Resolution
          • Какие есть
          • mDNS
          • LLMNR
          • NBNS
        • WinRM
        • WPAD
      • DHCP
      • NTP
      • DNS
      • FTP
      • SMTP
      • SSH
      • Telnet
    • L6: Presentation Layer
      • SSL/TLS
    • L5: Session Layer
      • SSDP
    • L4: Transport Layer
      • SMPP
      • QUIC
      • UDP
      • TCP
    • L3: Network Layer
      • IP (IPv4, IPv6)
      • ICMP
    • L2: Link Layer
      • Логическое разделение протоколов на этом уровне
      • 802.3 (Ethernet/ARP)
      • 802.1Q (VLANs)
      • 802.11 (Wi-Fi)
        • План
        • Атаки
        • Инструменты
        • Статьи
      • NFC
      • Bluetooth
  • Security
    • MiTM
    • Network Pentest Course (youtube)
    • Tools
      • HTTP Proxy
        • mitmproxy
        • broxy
        • netty
        • proxenet
        • ZAP
        • PolarProxy
      • Wireshark
      • Bettercap
      • Impacket
      • Responder
  • Devices
    • Common Network Device Manufacturer
    • Physical Servers
Powered by GitBook
On this page
  • About
  • Протокол
  • XEP - XMPP extension protocols
  • JID
  • Stanza
  • open
  • iq
  • message
  • presence
  1. OSI
  2. Протоколы над сетями
  3. Обмен сообщениями (IM) в режиме реального времени и информации о присутствии (Presence)

XMPP/Jabber

eXchenge Messages and Presence Protocol

PreviousSIMPLE (Основан на SIP)NextMatrix

Last updated 4 years ago

About

Открытый, основанный на XML, свободный для использования протокол для мгновенного обмена сообщениями и информацией о присутствии в режиме, близком к режиму реального времени. Изначально спроектированный легко расширяемым, протокол, помимо передачи текстовых сообщений, поддерживает передачу голоса, видеи и файлов по сети.

Порт: 5222 (но может быть настроен и через 80/443)

Спецификация:

Протокол

XMPP не требует ответа

XMPP может выступать транспортом для других протоколов, а так же сам работает поверх протоколов Bosh или WebSocket (использует их как транспорт). Bosh - передает сообщения через http.

XEP - XMPP extension protocols

Оф документация по всем расширениям:

Одними из наиболее важных для работы XMPP клиентов являются расширения:

  • XEP-0163 Personal Eventing Protocol. Размещение аватарок, передача ключей

  • XEP-0191 Блокирование контактов. Чёрный список собеседников

  • XEP-0198 Менеджер потоков. Необходим для доставки сообщений при нестабильном интернет-канале и выключенном архиве сообщений. Если сервер не получает уведомление о доставке, сервер повторно отправляет сообщение

  • XEP-0237 Версии ростера. Вместо полной загрузки данных собеседников, передаются лишь обновлённые данные

  • XEP-0280 Дублирование сообщений. Отправка сообщения на все включённые устройства. Используется, если не включён архив сообщений

  • XEP-0352 Состояние клиента. Если XMPP клиент свернут, сервер передаёт лишь сообщения. Это экономит расход батареи и интернет-трафик

  • XEP-0363 HTTP File Upload. Универсальная передача файлов между разными клиентами (через )

  • XEP-0384 OMEMO расширение, внедряющее сквозного шифрования Oml, реализацию шифрования из Signal

Еще есть расширения

  • XMPP over BOSH - XEP-0206 и XEP-124

  • XMPP over WebSockets - RFC 7395

  • Jingle - протокол передачи audio и video через XMPP - XEP-166

  • COLIBRRI - COnferences with LIghtweight BRIdging - XEP-0340 - спецификация работы с конференциями. Разработана Jitsi.

JID

Каждый пользователь в сети Jabber имеет уникальный идентификатор — Jabber ID (сокращённо JID). Адрес JID, подобно адресу электронной почты, содержит имя пользователя и доменное имя сервера, на котором зарегистрирован пользователь, разделенные знаком @. Например, пользователь user, зарегистрированный на сервере example.com, будет иметь адрес: user@example.com.

Пользователь может иметь одновременно несколько подключений, для различия которых используется дополнительный атрибут JID, называемый ресурсом и добавляемый через слэш в конец адреса. К примеру, пусть полный адрес пользователя будет user@example.com/work, тогда сообщения, посланные на адрес user@example.com, дойдут на указанный адрес вне зависимости от имени ресурса, но сообщения для user@example.com/work дойдут на указанный адрес только при соответствующем подключённом ресурсе.

Адреса JID могут также использоваться без явного указания имени пользователя (с указанием имени ресурса или без такового) для системных сообщений и для контроля специальных возможностей на сервере.

Stanza

станса - называют ноды XML сущностей, например: iq-станса: <iq some-attr="test" />

Распространенные cтансы в XMPP и их назначение

open

open - открытие соединения

Запрос: 
<open to="meet.jit.si" version="1.0" xmlns="urn:ietf:params:xml:ns:xmpp-framing"/>

Ответ:
<open xmlns='urn:ietf:params:xml:ns:xmpp-framing' version='1.0' xml:lang='en' id='56c4fb42-4914-4cb5-8d31-274ea094fa59' from='meet.jit.si'/>

iq

identifier query - это геттеры/сеттеры для параметров. Своего рода POST-запросы.

message

Отправка сообщений, что логично

presence

Отправка событий. Их отправлять может как сервер, так и клиент. Ответа не требуется.

https://xmpp.org/
https://xmpp.org/extensions/
OMEMO
HTTP