Найти в Дзене

Как работают мессенджеры изнутри, сообщения, звонки и видеочаты

Оглавление

Народ, всем привет. Мессенджеры давно стали неотъемлемой частью нашей жизни, мы все в них общаемся, созваниваемся, обмениваемся фоточками и видосиками. Мы используем их как для личного общения, так и для рабочих переписок, обмена документами, читаем и ведем группы и каналы. Но при этом, казалось бы, за внешней простотой скрываются сложные технологии, включающая шифрование, маршрутизацию, распределённые серверы и протоколы передачи данных.

А давайте сегодня рассмотрим, как устроены современные мессенджеры, на примерах WhatsApp, Telegram, MAX и других популярных платформ. Что происходит после того, как вы нажали кнопку «отправить», или как совершаются звонки через интернет? Постараюсь более простыми словами, так что погнали.

Клиент–сервер и облака

Для начала сразу хочется сказать, что большинство современных мессенджеров построены по модели «клиент–сервер», где приложение на устройстве пользователя (клиент) обменивается данными с центральными серверами. Серверы обрабатывают и отправляют по маршруту сообщения, обеспечивают их хранение, авторизацию, доставку уведомлений и синхронизацию между устройствами.

Можно сказать, что все мы переписываемся и звоним с одним компьютером, который уже передает наши сообщению нужному человеку. Как посредник. А параллельно сохраняет его, шифрует, и проделывает всякие другие манипуляции. Да, некоторые мессенджеры, такие как Signal (в России заблокирован), стараются минимизировать вмешательство серверной стороны, но полностью отказаться от серверов пока невозможно.

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

-2

От ввода до доставки

А теперь перейдем к самому интересному. Когда пользователь пишет сообщение и нажимает "отправить", происходит следующий довольно большой, мощный, но совершенно незаметный глазу процесс:

  1. Начинается все с шифрования, когда сообщение шифруется на клиентском устройстве (если используется сквозное (end-to-end) шифрование).
  2. Далее происходит отправка зашифрованного пакета данных (с сообщением, картинкой и смайликом) на сервер мессенджера.
  3. Маршрутизация, это когда сервер определяет, кому предназначено сообщение, и направляет его нужному пользователю (вашему другу).
  4. Дешифровка на устройстве получателя, ведь сообщение нужно расшифровывать обратно.
  5. По итогу вам приходит уведомление, ну конечно если получатель в сети (только тогда он получает push-уведомление). А если офлайн, то сообщение будет хранится на сервере до подключения.

Конечно, одними из самых важных моментов здесь является шифрование и хранение данных, особенно в современных мессенджерах. Чаще всего существуют два основных подхода, это сквозное шифрование и транспортное. Если говорить проще, то сквозное шифрование (end-to-end encryption) это когда сообщение шифруется на устройстве отправителя и расшифровывается только на устройстве получателя. Ни сервер, ни третьи лица не могут получить доступ к содержимому. Такое шифрование используется в WhatsApp или в iMessage от Apple.

Транспортное же шифрование, это когда данные шифруются при передаче, но хранятся в открытом виде на сервере, что позволяет синхронизировать историю на разных устройствах. Такой вид шифрования используется, например, в Telegram. Кстати, Telegram также предлагает секретные чаты, где применяется сквозное шифрование, но оно не включено по умолчанию.

При этом сами данные могут храниться как локально, так и в облаке (ну или гибридно). MAX используется облачное хранение данных, как и Telegram (секретные чаты хранятся локально), а вот WhatsApp использует гибридную модель, где часть истории на устройстве, часть на сервере.

Кстати, WhatsApp шифрует и хранит сообщения только на устройствах, но позволяет делать резервные копии в Google Drive или iCloud, что в свою очередь может снижать уровень безопасности.
Telegram хранит сообщения в зашифрованном виде на своих серверах, что позволяет получить доступ к чату с любого устройства, без восстановления из копии.
А MAX шифрует сообщения при отправке с устройства пользователя, но данные хранит на серверах в расшифрованном виде

Ну и последнее, о чем стоит сказать, это Push-уведомления. Когда мессенджер получает новое сообщение, он должен уведомить пользователя, а для этого используются сервисы push-уведомлений, в зависимости от вашей операционной системы. Так, IOS использует APNs (Apple Push Notification Service), а Android - FCM (Firebase Cloud Messaging). Но особо тут останавливаться не будем.

Некоторые приложения используют собственные решения, а некоторые мессенджеры могут специально обходить стандартные push-службы, чтобы гарантировать доставку даже при жёстких ограничениях ОС. Например, Telegram используют особые механизмы работы в фоне, но это может требовать дополнительных разрешений от пользователя.

-3

Голосовые и видеозвонки

А теперь давайте поговорим о том, как же происходит связь по интернету, когда мы хотим позвонить или провести видеосвязь. И первое, что нужно сделать, это установить сигнальное соединение. Если проще, когда вы нажимаете кнопку вызова, то приложение отправляет сигнал на сервер мессенджера. А тот уже "ищет" другого пользователя и уведомляет его о входящем вызове. Это называется сигнальный обмен, который устанавливает параметры соединения (кодеки, IP, порты, шифрование).

Далее, после принятия вызова, создаётся медиа-канал, через него будет идти поток аудио или видео. Если возможно, мессенджер устанавливает прямое P2P-соединение (один к одному, без посредников). А если прямое соединение невозможно (например, из-за NAT, файрвола или плохого интернета), данные идут через сервер-посредник.

Звонки почти всегда зашифрованы, обычно протоколами SRTP, DTLS, ZRTP или их комбинацией. В WhatsApp и Telegram звонки имеют сквозное шифрование, только вы и собеседник можете их расшифровать.

Кстати, голос или видео сжимается в аудио или видеокодек (например, Opus, VP8, H.264). Кодированный поток отправляется по интернету и в реальном времени воспроизводится уже у собеседника.

На практике все это происходит мгновенно, однако качество звонка в разных мессенджерах и в разных условиях бывают разными. По опыту могу сказать, что звонки через Telegram оставляют желать лучшего, а вот через WhatsApp или MAX все гораздо лучше. Но тут многое зависит от разных факторов:

  • скорость и стабильность интернета. Так, для голосового звонка достаточно 100–150 Кбит/с в каждую сторону, а для видеозвонков — от 500 Кбит/с до 1,5 Мбит/с (в HD). Пинг (задержка) при этом должен быть как можно ниже, до 100 мс считается комфортным.
  • тип соединения, и Wi-Fi здесь обычно стабильнее, но может зависеть от загруженности маршрутизатора. Мобильная сеть (4G/5G) хороша на ходу, но может давать сбои при переключении между базовыми станциями.
  • конечно зависит и от вашего устройства, и старые телефоны или слабые процессоры могут "тормозить" звонки. У некоторых мессенджеров (например, Telegram) улучшенные алгоритмы обработки шума и эха, хотя почти все современные мессенджеры используют умные кодеки (например, Opus), которые подстраиваются под скорость сети.
  • местоположение серверов тоже играют важную роль. Если звонок идёт через сервер, его физическая близость влияет на скорость и задержку. Telegram, WhatsApp и другие используют распределённую инфраструктуру с серверами в разных странах, но их не так много. А вот в MAX используются локальные серверы (Москва, Новосибирск и другие), что сразу улучшает качества связи в России.
  • ну и стоит сказать, что в часы пик (вечером или во время массовых событий) звонки могут лагать, особенно если мессенджер не масштабируется хорошо. И тут тоже наличие большого количества локальных серверов сыграет большую роль (как у MAXа). А, например, Telegram делает звонки "скрытыми", как обычный трафик, что также немного улучшает качество сигнала.
Кстати, есть парочка советов для того, чтобы улучшить сигнал, если это необходимо. Например, использовать наушники, что уменьшает эхо и утечку звука. Закрыть «тяжелые» программы и фоновые приложения. Ну и подключиться через стабильный Wi-Fi.
-4

В чем же различия?

На данный момент в России используют три основных мессенджера, это Telegram, MAX и WhatsApp. Работу последнего, кстати, в России хотят ограничить, но пока этого не сделали, рассмотрим и его.

Так, Telegram использует облачную архитектуру, обычные чаты не используют сквозное шифрование, зато данные синхронизируются между устройствами. Секретные чаты создаются вручную и привязаны к конкретному устройству. Есть поддержка ботов, каналов и мини-приложений. Сервера Telegram находятся по всему миру, но юрисдикция компании это ОАЭ.

По умолчанию в WhatsApp используется сквозное шифрование во всех чатах, а история хранится только локально (или в облачных бэкапах). При этом нет публичных каналов и ограниченные возможности для ботов. Все это дает более строгую защиту от спама, но и меньше гибкости. На практике вас могут заблокировать в WhatsApp практически без права на оправдания (даже по ошибке), но это бывает редко.

Основные функции MAXa это поддержка текстовых чатов, групп, видеозвонков, голосовых сообщений, групповых видеозвонков, причем без ограничения по времени. Основной упор делается на качестве связи, ведь звонки проходят через сервера VK внутри страны, что положительно сказывается на стабильности соединения. Также приложение предлагает ряд дополнительных функций, поддержку чат-ботов, платежей, связь с Госуслугами и прочее.

Как итог, Telegram предлагает большую функциональность, но с уступками в приватности по умолчанию. WhatsApp наоборот, фокусируется на безопасности, но ограничен в возможностях кастомизации и расширения. MAX предлагает большую функциональность и качество связи.

Что нас ждет в будущем

Мессенджеры с каждым годом активно развиваются, появляются новые функции и интеграции. Так, появление ИИ-ассистентов (например, ChatGPT, GigaChat) становится всё более популярной. Боты используются в службах поддержки, обучении, автоматизации, создают изображения и тексты, обрабатывают голос. Идет тренд на объединение функций, когда у вас не просто мессенджер, а еще и платежи, и сервисы, или взаимосвязь с гос.службы (WeChat, MAX). Некоторые платформы пробуют соединять мессенджеры с криптокошельками и блокчейнами.

Мессенджеры это уже не просто средства общения, а целые цифровые платформы. ИИ поможет создавать контент, видеозвонки и конференции проводить семинары или онлайн-встречи, боты помогут работать с клиентами онлайн-магазинов или взаимодействовать с простыми пользователями, мини-приложения работать с онлайн-заказами, бронированиями, сервисами без их установки. Ну а интеграция с Госуслугами дает возможность получать уведомления от государственных органов, поддержку усиленной электронной подписи и многое другое.