MTProto.fyi
ГлавнаяMTProto как мобильный протокол: зачем Telegram свой

MTProto как мобильный протокол: зачем Telegram свой

Название расшифровывается как Mobile Transport Protocol, и слово «мобильный» здесь не для красоты: протокол проектировали под нестабильный интернет в телефоне, а не под браузер.

Что не так с HTTPS для мессенджера

HTTPS — запрос-ответ: клиент спрашивает, сервер отвечает, соединение закрывается или висит в ожидании. Для мессенджера нужен постоянный двусторонний канал, где сервер может прислать сообщение в любой момент. Поверх HTTPS это делается костылями (long polling, WebSocket), которые расходуют батарею и плохо переживают смену сети. MTProto изначально — постоянное соединение с очередями сообщений в обе стороны.

Экономия трафика и батареи

Сообщения MTProto упакованы в компактный бинарный формат TL без текстовых заголовков, а несколько запросов можно склеить в один контейнер. Подтверждения доставки тоже пакуются. В сумме мессенджер отправляет в разы меньше байт, чем через JSON поверх HTTPS, а радиомодуль телефона реже просыпается.

Переподключение без потерь

Каждое сообщение получает номер и идентификатор сессии. Если телефон переключился с Wi-Fi на LTE и соединение оборвалось, клиент открывает новое и сообщает серверу, что уже получил, — сервер досылает недостающее. Ничего не теряется и не дублируется. Так работает переключение и через прокси.

Несколько дата-центров

Аккаунт привязан к одному из дата-центров, но файлы могут лежать в другом. Протокол умеет держать соединения с несколькими DC одновременно и перекидывать авторизацию между ними. Подробнее — «Дата-центры Telegram».

И побочный эффект — устойчивость к блокировкам

Свой протокол означает, что транспортный слой можно менять, не трогая остальное. Так появились обфусцированный транспорт, случайное дополнение и FakeTLS — всё это подмены нижнего слоя, о которых верхние уровни не знают. У мессенджера на HTTPS такой свободы не было бы. Что за версии протокола существуют, описано на странице «Версии MTProto».

Частые вопросы

Как расшифровывается MTProto?
Mobile Transport Protocol — мобильный транспортный протокол.
Почему Telegram не использует HTTPS?
HTTPS плохо подходит для постоянного двустороннего соединения и расходует больше трафика и батареи.
Что даёт MTProto на плохом интернете?
Переподключение без потерь сообщений и компактный формат пакетов.
Связан ли протокол с обходом блокировок?
Да: транспортный слой MTProto можно маскировать, что и делают прокси.

Читать дальше