googling
آها فهمیدم، میخوای سبک دوستانه و عامیانه باشه، مثل اینکه یه دوستت داره توضیح میده ولی همون وقت دقیق هم باشه. من نوتها رو بازنویسی میکنم با همین لحن:
چه اتفاقی میفته وقتی چیزی رو توی گوگل سرچ میکنیم
-
اول باید بفهمه IP سرور گوگل چیه
-
مرورگر اول فایل hosts و کش DNS محلی سیستم و مرورگر رو چک میکنه، شاید قبلاً جواب رو داشته باشه.
-
اگه نداشت → میره سراغ DNS. معمولاً UDP میفرسته چون سبکتره و ping-pong TCP نداره.
-
البته اگه جواب خیلی بزرگ باشه یا نتونه جا بشه → DNS جواب میده Truncate و مرورگر دوباره TCP میزنه.
-
اینجوری سلسله مراتب DNS طی میشه: کش محلی → ISP → recursive DNS → سرور اصلی تا جواب پیدا بشه.
-
-
بعدش اتصال واقعی به سرور شروع میشه
-
مرورگر یه TCP handshake (SYN → SYN-ACK → ACK) انجام میده یا اگه QUIC باشه روی UDP.
-
بعدش TLS handshake انجام میشه تا همه دادهها رمز بشه و هیچ کس وسط نتونه بخونه یا تغییر بده.
-
-
TLS handshake و Diffie–Hellman (داستان کلید مخفی)
-
هدفش اینه که مرورگر (آلیس) و سرور (گوگل/باب) یه کلید مشترک بسازن بدون اینکه کسی وسط بتونه بفهمه.
-
مثال رنگی:
-
یه رنگ عمومی انتخاب میکنن (مثلاً سفید) که همه میبینن.
-
هرکدوم یه رنگ مخفی خودش انتخاب میکنه (آلیس آبی، باب زرد).
-
هر کدوم رنگ مخفی خودش رو با سفید مخلوط میکنه و برای دیگری میفرسته. شنودگر فقط ترکیبها رو میبینه و نمیفهمه رنگ مخفی واقعی چی بوده.
-
بعد هر کدوم ترکیب دریافتی رو دوباره با رنگ مخفی خودش مخلوط میکنه → هر دو به همون رنگ سبز نهایی میرسن.
-
-
این سبز نهایی = کلید session. بعدش هر چی میفرستن رمز شده است.
-
-
از اینجا همه دادهها رمز میشه
-
یعنی متن سرچ، نتایج گوگل، عکسها و هر چیزی که بین مرورگر و سرور رد و بدل میشه، رمز شده است.
-
پروتکلها: HTTPS = HTTP + TLS + TCP/QUIC
-
-
SNI (Server Name Indication)
-
وقتی TLS شروع میشه، مرورگر باید بگه کدوم سایت روی این سرور چند سایتیه میخواد باز کنه.
-
این اسم دامنه توی ClientHello فرستاده میشه = SNI.
-
بدون ECH، شنودگر میتونه ببینه تو کدوم سایت هستی، حتی اگه محتوا رمز شده باشه.
-
-
ECH (Encrypted Client Hello)
-
استاندارد جدید TLS که SNI و بعضی metadata ها رو رمز میکنه.
-
فقط سرور اصلی میتونه بازش کنه و handshake ادامه پیدا کنه.
-
نتیجه: شنودگر فقط IP سرور رو میبینه و اسم سایت و handshake مخفی میمونه.
-
نکات اضافه که خوبه بدونی
-
DNS قدیمی محدودیت ۵۱۲ بایت داشت، ولی EDNS0 این مشکل رو کم کرده.
-
Diffie–Hellman فقط برای ساخت کلید sessionه، خود TLS چیزای دیگه مثل certificate، MAC، الگوریتم رمز و غیره هم داره.
-
حتی اگه DNS سنتی باشه، محتوای اصلی پیامها کاملاً امنه.
-
QUIC TLS رو روی UDP اجرا میکنه، پس لزوماً TCP نیست که رمزنگاری رو تضمین کنه.
-
فایل hosts و کش سیستم قبل از پرسش به resolver چک میشه.