Термин глоссария

DC

Data center — дата-центр Telegram

Коротко

Серверы Telegram, на которые прокси передаёт трафик клиента.

Роль в схеме

Серверы Telegram разделены на несколько дата-центров. Прокси стоит между клиентом и ними: клиент подключается к прокси, а тот — к нужному дата-центру и передаёт трафик дальше. Содержимое при этом остаётся зашифрованным ключом клиента и сервера.

Как клиент выбирает дата-центр

Список адресов клиент получает запросом help.getConfig: в ответе — поле dc_options с идентификатором, IP-адресом и портом каждой точки доступа. Адреса и порты могут меняться, а у каждого дата-центра обычно есть хотя бы по одному адресу IPv4 и IPv6. Для основных запросов клиент выбирает ближайшую точку, а до входа в аккаунт подключается к случайному адресу.

У аккаунта есть «домашний» дата-центр; если клиент обратился не туда, сервер отвечает ошибкой вида PHONE_MIGRATE_X или USER_MIGRATE_X и клиент переподключается. Файлы скачивают с того дата-центра, где они сохранены, а для передачи файлов есть отдельные media-only точки.

Дата-центр в протоколе прокси

В обфусцированном соединении идентификатор дата-центра передаётся в начальном пакете: это 2-байтовое число со знаком по смещению 60, а для медиа-дата-центров оно отрицательное. Так прокси узнаёт, куда направить поток. Подробнее о начальном пакете — в термине obfuscated2.

Что это значит для владельца прокси

Прокси нужен доступ ко всем адресам дата-центров, а не к части: аккаунт привязан к домашнему дата-центру, и если его адрес недоступен с сервера, пользователь не сможет войти или загрузить файлы. Исходящие подключения сервера в сторону Telegram закрывать нельзя.

Как записан номер дата-центра

В начальном пакете обфусцированного соединения номер хранится как 2-байтовое знаковое число. Для тестовых серверов к нему прибавляют 10000, а для media-дата-центров делают отрицательным: в документации в качестве примера приведено значение 0xfcff для media-дата-центра 4. Прокси читает это число и выбирает, куда подключаться.

Сколько их и где

В документации Telegram сказано лишь «несколько дата-центров в разных частях мира»: ни числа, ни городов там нет, а список адресов клиент берёт из конфигурации. Поэтому для прокси важно не «где стоят серверы Telegram», а то, что с вашего сервера есть связь со всеми их адресами: аккаунт привязан к домашнему дата-центру, и прокси без доступа к нему не поможет.

Источники

  1. Telegram: дата-центры
  2. Telegram: MTProto transports
  3. telemt: FAQ

Связанные термины

Упоминается в статьях