تا به حال فکر کردهاید وقتی آدرسی مثل google.com را در مرورگر تایپ میکنید، دقیقاً چه اتفاقی در کسری از ثانیه رخ میدهد؟ کامپیوتر شما برای برقراری ارتباط با سرور گوگل، به یک آدرس عددی و طولانی به نام IP نیاز دارد. اما ما انسانها حفظ کردن این اعداد را بلد نیستیم. اینجاست که یکی از شاهکارهای مهندسی اینترنت وارد عمل میشود.
سیستم DNS یا همان Domain Name System، نامرئیترین اما حیاتیترین بخش وب است. بدون آن، اینترنتی که امروز میشناسیم وجود نداشت. در این مقاله، میخواهیم این تکنولوژی را از ریشه بررسی کنیم. میبینیم قبل از DNS اوضاع چگونه بود، خود DNS چیست و چگونه کار میکند، و در نهایت بعد از پیدا شدن آدرس، چه مراحلی طی میشود.
قبل از DNS: دنیایی که در آن گم شده بودیم
برای درک بهتر اهمیت DNS، باید به روزهای اولیه اینترنت و شبکه ARPANET برگردیم. در آن زمان، برای پیدا کردن یک کامپیوتر در شبکه، باید آدرس IP آن را حفظ میکردید.
وقتی تعداد کامپیوترها کم بود، این کار شدنی بود. اما با بزرگتر شدن شبکه، نیاز به یک راه حل احساس شد. راه حل اولیه فایلی به نام HOSTS.TXT بود. این فایل یک لیست متنی ساده بود که نام کامپیوترها و آدرس IP آنها را در خود داشت. هر روز، یک سرور مرکزی این فایل را آپدیت میکرد و همه شبکهها باید آن را دانلود میکردند.
این روش خیلی زود به بنبست خورد. با رشد نمایی اینترنت، حجم این فایل آنقدر زیاد شد که دانلود آن ساعتها طول میکشید. همچنین ترافیک شبکه به شدت بالا رفت و ناهماهنگی در نسخههای مختلف فایل باعث شد کاربران به آدرسهای اشتباه هدایت شوند. اینترنت به یک سیستم مقیاسپذیر و هوشمند نیاز داشت.
سیستم DNS چیست؟
سیستم نام دامنه یا DNS، دقیقاً برای حل همین مشکل طراحی شد. به زبان ساده، DNS دفترچه تلفن اینترنت است.
همانطور که شما شماره تلفن دوستتان را حفظ نیستید و نام او را در دفترچه تلفن جستجو میکنید تا شمارهاش را پیدا کنید، کامپیوتر شما هم نام دامنه (مثل codoloper.com) را به DNS میدهد تا آدرس IP معادل آن را دریافت کند.
این سیستم یک پایگاه داده عظیم، توزیعشده و سلسلهمراتبی در سراسر جهان است. هیچ سرور مرکزی و واحدی وجود ندارد که همه اطلاعات را نگه دارد. این توزیعشدگی باعث میشود اینترنت هرگز به دلیل خرابی یک سرور متوقف نشود.
DNS چگونه کار میکند؟
وقتی آدرسی را در مرورگر وارد میکنید، یک فرآیند چندمرحلهای و بسیار سریع آغاز میشود. بیایید این مسیر را قدم به قدم بررسی کنیم.
مراحل یک جستجوی DNS
۱. بررسی حافظه نهان (Cache): قبل از هر چیز، مرورگر و سیستم عامل شما بررسی میکنند که آیا آدرس IP این دامنه را قبلاً ذخیره کردهاند یا خیر. اگر پیدا شد، کار در همان لحظه تمام میشود.
۲. ارسال درخواست به Resolver: اگر در کش محلی نبود، درخواست به یک سرور DNS Resolver (معمولاً متعلق به ارائهدهنده اینترنت شما یا ISP) ارسال میشود. این سرور وظیفه دارد کل فرآیند جستجو را برای شما انجام دهد.
۳. مراجعه به سرور ریشه (Root Server): اگر Resolver هم آدرس را نداشت، به یکی از سرورهای ریشه در جهان مراجعه میکند. سرور ریشه آدرس را نمیداند، اما میداند که برای پیدا کردن پسوند com. باید به کجا مراجعه کند.
۴. مراجعه به سرور TLD: Resolver حالا به سرور TLD (Top-Level Domain) مخصوص com. میرود. سرور TLD هم آدرس دقیق را نمیداند، اما آدرس سرور مرجعی که مسئول دامنه شماست را در اختیار Resolver قرار میدهد.
۵. مراجعه به سرور مرجع (Authoritative Server): در مرحله آخر، Resolver به سرور مرجع دامنه شما متصل میشود. این سرور دقیقاً میداند که IP معادل نام دامنه شما چیست. آن را به Resolver برمیگرداند.
۶. ذخیره و تحویل: Resolver آدرس IP را در حافظه کش خود ذخیره میکند (برای درخواستهای بعدی) و آن را به مرورگر شما تحویل میدهد.
بعد از DNS: وقتی آدرس را پیدا کردیم
بسیاری از افراد فکر میکنند با پیدا شدن IP، کار تمام است. اما DNS فقط خط شروع مسابقه است. بعد از اینکه مرورگر IP سرور مقصد را به دست آورد، اتفاقات زیر رخ میدهد:
۱. ارتباط TCP: مرورگر یک اتصال TCP با سرور مقصد برقرار میکند تا از رسیدن صحیح دادهها اطمینان حاصل کند. ۲. دستدهی امنیتی (TLS/SSL): اگر سایت از پروتکل HTTPS استفاده کند، یک رمزنگاری امن بین مرورگر و سرور برقرار میشود. ۳. ارسال درخواست HTTP: مرورگر درخواست صفحه وب را به سرور میفرستد. ۴. دریافت پاسخ: سرور فایلهای HTML، CSS و جاوا اسکریپت را برمیگرداند و مرورگر آنها را رندر میکند.
بنابراین، DNS فقط وظیفه ترجمه نام به عدد را دارد و بقیه مسیر بر عهده پروتکلهای دیگر شبکه است.
مقایسه DNS سنتی با روشهای مدرن
DNS سنتی که در پورت ۵۳ کار میکند، سالهاست استفاده میشود. اما یک مشکل بزرگ دارد: ترافیک آن رمزنگاری نشده و به صورت متن ساده (Plain Text) ارسال میشود. این موضوع باعث مشکلات امنیتی و حریم خصوصی میشود.
به همین دلیل، پروتکلهای جدیدی معرفی شدهاند:
- DoT (DNS over TLS): ترافیک DNS را از طریق پروتکل امن TLS رمزنگاری میکند.
- DoH (DNS over HTTPS): ترافیک DNS را درون ترافیک HTTPS پنهان میکند. این روش باعث میشود ارائهدهندگان اینترنت نتوانند به راحتی درخواستهای DNS شما را رصد یا مسدود کنند.
در حالی که DNS سنتی سرعت بالاتری دارد (به دلیل سربار کمتر)، روشهای مدرن مثل DoH امنیت و حریم خصوصی بسیار بهتری را ارائه میدهند.
مزایا و چالشهای سیستم DNS
مزایا:
- سهولت استفاده: نیاز به حفظ کردن اعداد پیچیده را از بین میبرد.
- مقیاسپذیری: به دلیل ساختار توزیعشده، با رشد اینترنت هیچ مشکلی پیدا نمیکند.
- انعطافپذیری: میتوانید IP سرور خود را تغییر دهید بدون اینکه کاربران نیاز باشد آدرس دامنه را تغییر دهند.
چالشها:
- آسیبپذیری امنیتی: حملاتی مانند DNS Spoofing یا DNS Cache Poisoning میتوانند کاربران را به سایتهای جعلی هدایت کنند.
- تاخیر (Latency): اگر سرور DNS Resolver کند باشد یا کش خالی باشد، چند میلیثانیه تاخیر در بارگذاری سایت ایجاد میشود.
- حملات DDoS: سرورهای ریشه و TLD همواره در معرض حملات منع سرویس هستند.
جمعبندی نهایی و نگاه شخصی
به عنوان یک توسعهدهنده، همیشه وقتی به معماری DNS فکر میکنم، شگفتزده میشوم. ما هر روز دهها بار از آن استفاده میکنیم، اما تا زمانی که خراب نشود، متوجه حضورش نمیشویم. DNS یک شاهکار مهندسی است که توانست هرج و مرج روزهای اولیه اینترنت را به یک سیستم منظم و جهانی تبدیل کند.
صادقانه بگویم، اگرچه پروتکلهای جدید مثل DoH امنیت را بالا بردهاند، اما هنوز هم پیچیدگیهای مدیریت DNS برای کسبوکارهای بزرگ چالشبرانگیز است. با این حال، درک عمیق از نحوه کار DNS، نه تنها دید شما را به شبکه باز میکند، بلکه در عیبیابی مشکلات شبکه و سرور به شدت به شما کمک خواهد کرد. امیدوارم این مقاله توانسته باشد تصویر روشنی از این سیستم حیاتی در ذهن شما ایجاد کند.
سوالات متداول
چرا باید DNS پیشفرض خود را به 8.8.8.8 یا 1.1.1.1 تغییر دهیم؟ تغییر DNS به سرورهای عمومی مثل گوگل (8.8.8.8) یا کلادفلر (1.1.1.1) معمولاً به دو دلیل انجام میشود: اول، افزایش سرعت به دلیل زیرساخت قویتر این شرکتها، و دوم، دور زدن محدودیتها و جلوگیری از ردیابی درخواستهای DNS توسط ارائهدهنده اینترنت محلی.
منظور از DNS Propagation یا انتشار DNS چیست؟ وقتی رکوردهای DNS یک دامنه را تغییر میدهید، این تغییر بلافاصله در تمام سرورهای جهان اعمال نمیشود. سرورهای مختلف در سراسر جهان بر اساس زمان TTL (Time to Live) کش خود را آپدیت میکنند. این پروسه که به آن انتشار DNS میگویند، ممکن است از چند دقیقه تا ۴۸ ساعت طول بکشد.
آیا DNSSEC همان رمزنگاری DNS است؟ خیر. DNSSEC (Domain Name System Security Extensions) برای رمزنگاری ترافیک طراحی نشده است، بلکه برای امضای دیجیتال دادههای DNS استفاده میشود. DNSSEC تضمین میکند که آدرس IP دریافتی واقعاً متعلق به همان دامنه است و در مسیر دستکاری نشده است. برای رمزنگاری خود ترافیک باید از DoH یا DoT استفاده کنید.