دیتاسنتر گمشدهٔ تلگرام: DC3 کجا رفت؟
خلاصهٔ کاملتر
تلگرام میگه پنج دیتاسنتر داره که تو کد و مستنداتش با نام DC1 تا DC5 شناخته میشن: DC1 و DC3 تو میامی آمریکا، DC2 و DC4 تو آمستردام هلند، و DC5 تو سنگاپور. هر حساب موقع ثبتنام به یکی از اینها گره میخوره و با تغییر شمارهٔ تلفن یا موقعیت جغرافیایی عوض نمیشه. کاربر هم نمیتونه آزادانه انتخابش کنه؛ اگه به DC اشتباه وصل بشه، سرور خطا برمیگردونه و کلاینت رو به DC درست هدایت میکنه.
نقطهٔ شروع مقاله DC5 هست که تو جامعهٔ چینیزبان تلگرام بدنام شده — نه بهخاطر تعداد کاربراش، بلکه چون مرتب از دسترس خارج میشه. موقع قطعی، کاربرای DC5 فقط میتونن منتظر بمونن تا کلاینتِ دائماً «در حال اتصال» دوباره وصل بشه.
برای رفع کنجکاوی، یه نفر رباتی ساخته بود که DC هر کاربر رو نشون بده. نتیجهش این بود: شمارههای +۸۶ روی DC5، شمارههای +۱ روی DC1 و شمارههای اروپایی روی DC4. اما هیچکس روی DC2 و DC3 پیدا نمیشد. از همینجا این حدسها شکل گرفت که DC2 و DC3 اصلاً کاربر ندارن یا زیرمجموعهٔ DC1 و DC4 هستن و فقط موقع شلوغی ثبتنام قبول میکنن.
جمعبندی نویسنده چیز دیگهایه: DC1، DC2، DC4 و DC5 بر اساس کد کشور شمارهٔ تلفن هنگام ثبتنام تخصیص داده میشن، هر چهارتا همیشه ثبتنام جدید قبول میکنن و کاربر زیاد دارن. یعنی DC2 هم کاربر فراوون داره و مثلاً شمارههای +۴۹ آلمان قطعاً همونجا میشینن. مشکل از روش تشخیص ربات بوده، نه از خالی بودن DC2.
سه روش رایج برای فهمیدن DC بررسی شده. روش اول یا روش لاگین: با پروتکل MTProto به DC1 وصل میشی و auth.sendCode رو صدا میزنی؛ سرور خطای PHONE_MIGRATE_2 برمیگردونه و همین یعنی حساب مال DC2 هست. این روش دقیقه ولی به شمارهٔ تلفن نیاز داره. روش دوم یا روش عکس پروفایل/فایل: کلاینتهای ثالث مثل Plus Messenger مقدار dc_id رو از ساختار userProfilePhoto میخونن، پس DC رو بر اساس جایی که فایلهای کاربر ذخیره شدن تشخیص میدن — و تا وقتی حساب عکس پروفایل نذاره چیزی نشون نمیدن.
روش سوم یا روش Web CDN همونیه که رباتها استفاده میکنن و همونجاست که اشتباه رخ میده: نویسنده یه حساب DC2 تازه میسازه و ربات میگه DC4. دلیلش اینه که دامنهٔ عکس پروفایل با cdn4 شروع میشه، چون DC2 و DC3 برای سرویس Web CDN دامنهٔ DC4 و DC1 هممکان خودشون رو «قرض میگیرن». نتیجه اینکه این رباتها هیچوقت کاربر DC2 پیدا نمیکنن و همه رو DC4 میبینن؛ ولی رباتهایی که ازت عکس یا فایل میخوان (شبیه روش دوم) درست جواب میدن.
دربارهٔ DC3، نویسنده با روش دوم فقط دو کاربر مشکوک پیدا میکنه، اما بررسی دقیقتر با photos.GetUserPhotos نشون میده فقط چندتا عکس قدیمیشون روی DC3 مونده و عکسهای جدید روی DC1 ذخیره میشن — یعنی احتمالاً منتقل شدن. برای اطمینان، بیش از ۱۰٬۰۰۰ شماره از مناطق مختلف دنیا تولید و با روش لاگین تست شده (با دقت در وصل شدن به DC اشتباه، تا پیامک اضافه فرستاده نشه). نتیجه: DC3 دیگه کاربر جدید قبول نمیکنه و کاربرای قبلیش احتمالاً حوالی سال ۲۰۲۰ به DC1 منتقل شدن.
نویسنده تأکید میکنه چون سرور و بخشی از سازوکارهای تلگرام متنباز نیست، بخش زیادی از این نتیجهگیریها بر پایهٔ استنباطه. کاربرد عملیش هم اینه که اگه میخوای روی یه DC خاص باشی یا از ریسک قطعیهای DC5 دور بمونی، میتونی با شمارهای از کد کشور مناسب ثبتنام کنی.
نکات کلیدی:
- DC حساب موقع ثبتنام بر اساس کد کشور شماره تعیین میشه و بعداً با تغییر شماره یا مکان عوض نمیشه
- DC2 برخلاف تصور رایج کاربر زیادی داره؛ DC3 احتمالاً حوالی ۲۰۲۰ کاربراش به DC1 منتقل شدن
- رباتهای مبتنی بر Web CDN اشتباه میکنن چون DC2 و DC3 دامنهٔ DC4 و DC1 رو قرض میگیرن
- روش لاگین با خطای PHONE_MIGRATE_X دقیقترین راهه ولی به شمارهٔ تلفن نیاز داره
- روش عکس پروفایل/فایل با خوندن dc_id از userProfilePhoto هم درست جواب میده
- DC5 (سنگاپور) به قطعیهای مکررش شناخته میشه




