Azimjon Abdurasulov

04. Telegram TL va MTProto Qanday Ishlaydi?

gRPC & High-Performance System Design

04. Telegram TL va MTProto Qanday Ishlaydi?

Telegram dunyodagi eng tezkor, xavfsiz va tejamkor messenjer hisoblanadi. U hatto 2G/EDGE internet tarmog'ida ham xabarlarni lahzalarda yetkazadi.

Nega Telegram Google'ning Protobuf'ini yoki standart HTTP/JSON'ni ishlatmagan? Chunki Nikolay Durov (Pavel Durovning akasi, jahon darajasidagi matematik) va uning jamoasi undan-da samaraliroq bo'lgan TL (Type Language) va MTProto protokolini yaratishgan.


1. Type Language (TL) Nima?

Type Language — bu Telegram tomonidan ma'lumotlar turlari va RPC chaqiruvlarini tavsiflash uchun yaratilgan til.

Qarang, TL sxemasi qanchalik qisqa va aniq:

// TL Sxemasidan namuna
userEmpty#20e0c028 id:long = User;
user#833147fc flags:# self:flags.10?true contact:flags.11?true id:long first_name:flags.0?string last_name:flags.1?string = User;

---functions---

messages.sendMessage#520c3870 flags:# no_webpage:flags.1?true peer:InputPeer reply_to_msg_id:flags.0?int message:string random_id:long = Updates;

TL ning Sehrli Jihatlari:

  1. CRC32 Constructor ID: Har bir tur yoki funksiya oxirida #833147fc yoki #520c3870 kabi 32-bitlik (4 bayt) hesh bor. Bu butun deklaratsiyaning CRC32 heshi!
  2. Nol Ortiqcha Bayt: Serverga so'rov yuborilganda funksiya nomi ("messages.sendMessage") matn sifatida yuborilmaydi — faqat uning 4 baytlik identifikatori (0x520c3870) yuboriladi!
  3. Bitmask Flags: Agar foydalanuvchining familiyasi (last_name) bo'lmasa, flags bitmaskidagi 1-bit 0 bo'ladi va xotiradan 1 bayt ham bo'sh joy ketmaydi.

2. MTProto 2.0 Transport Qatlami

MTProto — bu mobil tarmoqlarda paketlar yo'qolishiga va xakerlik hujumlariga qarshi chidamli kriptografik transport protokoli.

+-----------------------------------------------------------------------+
|                         MTProto 2.0 Paketi                            |
+---------------+------------------+-----------------+------------------+
| Auth Key ID   | Message Key      | Encrypted Data  | Padding          |
| (8 bayt)      | (16 bayt SHA256) | (AES-256 IGE)   | (12-1024 bayt)   |
+---------------+------------------+-----------------+------------------+

MTProto ning Asosiy Xususiyatlari:

  • AES-256 IGE (Infinite Garble Extension): Xabarning bitta biti o'zgarsa ham, butun shifrlangan blok butunlay buziladi va xaker xabarni o'zgartira olmaydi.
  • Diffie-Hellman Key Exchange: Mobil ilova server bilan ulanishi bilan, o'rtada 2048-bitlik maxfiy Auth Key hosil qilinadi. Bu kalit hech qachon tarmoq orqali o'tmaydi.
  • Message ID: Har bir xabar vaqt millisekundlariga bog'langan noyob ID ga ega. Bu bir xil xabarning tarmoq takrorlanishi (Replay Attack) orqali ikki marta yuborilishining oldini oladi.

3. Telegram Serverlari: In-Memory Engine va KPHP

Telegram serverlari qanday kodda yozilgan?

  • C++ va KPHP: Telegram o'zining PHP kodlarini to'g'ridan-to'g'ri C++ ga kompilyatsiya qiluvchi KPHP dvigatelini yaratgan.
  • In-Memory Engines: Telegram MySQL yoki an'anaviy diskdagi ma'lumotlar bazalariga suyanmaydi. Ular xotirada (RAM) ishlovchi yuzlab maxsus binar dvigatellarga ega. Har bir server terabaytlab operativ xotirada xabarlar indeksini saqlaydi.
  • TL-to-C++ Codegen: TL sxemasi maxsus tl-compiler orqali to'g'ridan-to'g'ri C++ strukturalari va xotira manzillariga aylanadi.

4. O'z Loyihangizda Bu Bilimlarni Qanday Ishlatish Mumkin?

Agar siz Telegram kabi o'ta yengil va tezkor tizim qurmoqchi bo'lsangiz:

  1. Protobuf v3 — bu sanoat standarti bo'lib, Telegramning TL g'oyalariga eng yaqin va barcha tillar (Go, Swift, Kotlin, Rust) tomonidan to'liq qo'llab-quvvatlanadigan yechimdir.
  2. Har bir so'rovga String URL yuborish o'rniga, kichik binar Action ID lardan foydalaning.
  3. Katta JSON payloadlar o'rniga Bitmask Flags texnikasini qo'llang.

Keyingi darsda biz mobil tarmoqlarda ulanish uzilishlariga barham beruvchi HTTP/3 va QUIC inqilobini o'rganamiz!

Markdown manba

iOS Lessons