Всем здравствуйте.
Я всерьез задумался над отсутствием вменяемой, безопасной альтернативы Skype. Даже не альтернативы самому мессенджеру, а отсутствием протоколов, которые объединяли бы в себе и обмен текстовыми сообщениями, и многопользовательские чаты, и гарантированную (с пробивкой NAT и/или использованием релеев) передачу голоса, видео и файлов. Разработать такой протокол, чтобы он удовлетворял всех, достаточно сложно, поэтому мне бы хотелось услышать, во-первых, мнение хабрасообщества на этот счет, а во-вторых, зарубежных пользователей с Reddit.
Я вкратце опишу преимущества и недостатки некоторых текущих архитектур, если вы забыли или не знали какие-то моменты. Во всех описаниях архитектур подразумевается их безопасная реализация.
P2P
По этой модели был построен Skype, сейчас делают Tox, да и множество других менее известных мессенджеров. Преимущество заключается в том, что не требуется никаких серверов (или близко к этому) для поддержания работы сети, требуется только, как правило, какие-то начальные ноды, и (в зависимости от архитектуры) сервер авторизации. Все коммуникации происходят напрямую от пользователя к пользователю, что, во-первых, раскрывает IP-адреса участников, а во-вторых, совершенно неприемлемо для мобильных устройств и в мобильных сетях, из-за высокого расхода батареи и трафика. Среди недостатков, также можно отметить отсутствие оффлайн-сообщений и синхронизации истории сообщений без другой, запущенной под этим логином, ноды. Также, к счастью, не так уж и часто, P2P мессенджерам не удается пробить NAT, и связь напрямую становится невозможна. В таком случае, либо связь вообще не устанавливается, либо используются серверы-релеи.
Серверная децентрализованность
Эта модель используется в Email и XMPP. Самая удачная, на мой взгляд, архитектура, которая позволяет не тратить большое количество энергии на мобильных устройствах из-за всего одного длительного соединения с сервером; в ней отсутствует единая точка отказа, присутствует возможность синхронизации истории и отправки оффлайн-сообщений. В зависимости от архитектуры, может скрывать IP-адрес отправителя. Однако, такая модель требует наличия своего/чужого сервера. Если умирает какой-то крупный публичный сервер, то и все его пользователи теряют возможность коммуникации.
Единый сервер
Пожалуй, самая популярная архитектура, которая используется подавляющим большинством мобильных и десктопных мессенджеров. В наличии единая точка отказа, может обеспечиваться анонимность, возможность использовать удобные идентификаторы, вроде номера мобильного телефона, однако, нет возможности проверить, храниться ли ваши данные надлежащим образом, и нет доступа к исходному коду сервера. Тот же Telegram, который преподносят как защищенный, использует эту модель. Из плюсов следует отметить всегда корректную работу на мобильных устройствах (PUSH-уведомления).
Автор: ValdikSS