هنگامی که نام دامنهای مانند google .com را در مرورگر خود تایپ میکنید، DNS با تجزیه نام دامنه به آدرس IP مربوطه، اطمینان حاصل میکند که درخواست به سرور صحیح میرسد. بدون DNS، ما مجبور بودیم آدرس IP عددی هر وبسایتی را که میخواهیم بازدید کنیم به خاطر بسپاریم، که بسیار غیرعملی است.
انواع دامنهها در DNS
DNS به مدیریت طیف گستردهای از انواع دامنهها برای سازماندهی تعداد عظیم وبسایتها در اینترنت کمک میکند. در اینجا دستهبندیهای اصلی آورده شده است:
- دامنههای عمومی (Generic Domains): اینها شامل دامنههای سطح بالا مانند .com، .org، .net و .edu هستند. این دامنهها به طور گسترده در سراسر جهان استفاده و شناخته شدهاند.
- دامنههای کد کشور (Country Code Domains): این دامنهها نشاندهنده کشورهای خاص یا مناطق هستند، مانند .in برای هند، .us برای ایالات متحده، .uk برای بریتانیا و .jp برای ژاپن.
- دامنههای معکوس (Inverse Domains): این دامنهها که برای جستجوهای معکوس DNS استفاده میشوند، به نگاشت آدرسهای IP به نامهای دامنه کمک میکنند. جستجوهای معکوس DNS برای اهداف تشخیصی و امنیتی مفید هستند و اطمینان حاصل میکنند که منبع ترافیک شبکه قانونی است. بنابراین DNS میتواند هر دو نگاشت را فراهم کند.

DNS چگونه کار میکند؟
فرآیند DNS را میتوان به چندین مرحله تقسیم کرد که تضمین میکند کاربران با تایپ کردن یک نام دامنه در مرورگر خود، به وبسایتها دسترسی پیدا کنند.
- ورودی کاربر: شما یک آدرس وبسایت (به عنوان مثال، google.com) را در مرورگر وب خود وارد میکنید.
بررسی حافظه پنهان محلی (Local Cache): مرورگر شما ابتدا حافظه پنهان محلی خود را بررسی میکند تا ببیند آیا اخیراً دامنه را جستجو کرده است یا خیر. اگر آدرس IP مربوطه را پیدا کند، مستقیماً و بدون پرسوجو از سرورهای خارجی از آن استفاده میکند.
درخواست از DNS Resolver: اگر آدرس IP در حافظه پنهان محلی نباشد، کامپیوتر شما درخواستی را به یک DNS Resolver ارسال میکند. Resolver معمولاً توسط ارائهدهنده خدمات اینترنت (ISP) شما یا تنظیمات شبکه شما ارائه میشود. - سرور DNS ریشه (Root DNS Server): Resolver درخواست را به یک سرور DNS ریشه ارسال میکند. سرور ریشه آدرس IP دقیق google.com را نمیداند، اما بر اساس پسوند دامنه (مانند .org) میداند که باید از کدام سرور دامنه سطح بالا (TLD) پرسوجو کند.
- سرور TLD: سرور TLD برای .org، Resolver را به سرور DNS معتبر (Authoritative DNS Server) برای google.com هدایت میکند.
- سرور DNS معتبر: این سرور، رکوردهای DNS واقعی برای google.com، از جمله آدرس IP سرور وبسایت را نگهداری میکند. این سرور آدرس IP را به Resolver برمیگرداند.
- پاسخ نهایی: DNS Resolver آدرس IP را به کامپیوتر شما ارسال میکند و این به کامپیوتر شما اجازه میدهد تا به سرور وبسایت متصل شده و صفحه را بارگیری کند.
انواع پرس و جوهای DNS
اساساً سه نوع پرس و جوی DNS وجود دارد که در جستجوی DNS رخ می دهد. اینها در زیر ذکر شده اند.
- پرس و جوی بازگشتی (Recursive Query): در این پرس و جو، اگر DNS Resolver نتواند رکورد را پیدا کند، در این صورت، کلاینت DNS می خواهد که DNS Server به هر نحوی به کلاینت پاسخ دهد، مانند ارائه رکورد منبع درخواستی یا پیام خطا.
- پرس و جوی تکراری (Iterative Query): پرس و جوی تکراری پرس و جویی است که در آن کلاینت DNS بهترین پاسخ ممکن را از DNS Server می خواهد.
- پرس و جوی غیربازگشتی (Non-Recursive Query): پرس و جوی غیربازگشتی پرس و جویی است که زمانی رخ می دهد که یک DNS Resolver برای برخی از رکوردهایی که به آن دسترسی دارد، زیرا این رکورد در کش آن وجود دارد، از یک DNS Server پرس و جو می کند.
انواع رکوردهای DNS
رکوردهای DNS مانند دفترچه تلفن اینترنت عمل میکنند و اطلاعاتی را ذخیره میکنند که به ترجمه نامهای دامنه قابل فهم برای انسان به آدرسهای IP عددی که رایانهها برای شناسایی یکدیگر استفاده میکنند، کمک میکنند. در اینجا مروری بر انواع رایجتر آورده شده است:
- رکورد A (آدرس IPv4): این رکورد، رکورد پایهای است که یک نام دامنه (مانند www.example.com) را به یک آدرس IPv4 (مانند 192.0.2.1) نگاشت میکند. وقتی شما نام وبسایتی را در مرورگر خود وارد میکنید، سیستم DNS از رکوردهای A برای یافتن آدرس IP سرور میزبان آن وبسایت استفاده میکند.
- رکورد AAAA (آدرس IPv6): مشابه رکورد A، اما برای آدرسهای IPv6 طراحی شده است. آدرسهای IPv6 طولانیتر و پیچیدهتر از IPv4 هستند (مانند 2001:0db8:85a3:0000:0000:8a2e:0370:7334). با گسترش استفاده از IPv6، این رکوردها اهمیت بیشتری پیدا میکنند.
- رکورد CNAME (نام متعارف): این رکورد به شما امکان میدهد یک نام دامنه را به نام دامنه دیگری “مستعار” کنید. به عبارت دیگر، یک CNAME به مرورگر شما میگوید که برای یافتن آدرس IP واقعی، باید به نام دیگری مراجعه کند. این برای مواردی مفید است که میخواهید چندین نام دامنه به یک منبع اشاره کنند (مثلاً www.example.com و ftp.example.com هر دو به server1.example.com اشاره کنند).
- رکورد MX (تبادل نامه): رکوردهای MX برای هدایت ایمیلها استفاده میشوند. آنها مشخص میکنند که کدام سرورهای ایمیل مسئول دریافت ایمیل برای یک دامنه خاص هستند. هر رکورد MX دارای اولویت است؛ سرورهای با اولویت پایینتر ابتدا امتحان میشوند. به عنوان مثال، ایمیلهای ارسالی به user@example.com از طریق سرورهایی که توسط رکوردهای MX برای example.com مشخص شدهاند، هدایت میشوند.
- رکورد TXT (متن): این رکورد به شما اجازه میدهد تا هر نوع اطلاعات متنی را در DNS برای یک دامنه ذخیره کنید. این رکورد اغلب برای اهداف تأیید (مانند تأیید مالکیت دامنه برای سرویسهای شخص ثالث) و برای پیادهسازی سیاستهای امنیتی ایمیل مانند SPF (Sender Policy Framework) و DKIM (DomainKeys Identified Mail) استفاده میشود که به جلوگیری از جعل ایمیل کمک میکنند.
- رکورد NS (نام سرور): این رکوردها مشخص میکنند که کدام سرورهای DNS مسئول ارائه اطلاعات معتبر برای یک دامنه خاص هستند. هنگامی که یک سرور DNS پرسوجو را دریافت میکند، از رکوردهای NS برای یافتن سرورهای معتبری که اطلاعات دامنه را دارند، استفاده میکند.
- رکورد SOA (شروع اختیارات): هر ناحیه DNS (مانند example.com) باید حداقل یک رکورد SOA داشته باشد. این رکورد اطلاعات حیاتی درباره ناحیه DNS را فراهم میکند، از جمله آدرس ایمیل مسئول ناحیه، شماره سریال ناحیه، زمانهای بازنگری و منقضی شدن. این اطلاعات برای همگامسازی بین سرورهای DNS ثانویه و اولیه استفاده میشود.
- رکورد SRV (سرویس): این رکوردها اطلاعاتی در مورد خدمات خاصی که در یک دامنه ارائه میشوند، ذخیره میکنند. آنها نام میزبان و پورت را برای خدمات خاصی مانند VoIP (Voice over IP) یا پیامرسانی فوری مشخص میکنند.

مکانیزم ذخیرهسازی DNS (Caching)
تصور کنید هر بار که میخواهید به یک وبسایت سر بزنید، مجبور باشید کل مسیر جستجوی DNS را از ابتدا طی کنید (یعنی از سرور ریشه شروع کرده، به سرور TLD بروید، و سپس به سرور معتبر برسید).
اینجاست که ذخیرهسازی DNS وارد عمل میشود. سرورهای DNS و حتی کامپیوتر شما، نتایج جستجوهای DNS را برای مدتی ذخیره میکنند. این بدان معناست که اگر شما یا کاربر دیگری قبلاً نام دامنهای را جستجو کرده باشد، دفعه بعدی که همان نام دامنه جستجو شود، سرور DNS (یا کامپیوتر شما) به جای شروع مجدد کل فرآیند، مستقیماً از حافظه پنهان (cache) خود پاسخ را برمیگرداند.
این مانند این است که یک لیست از شماره تلفنهای پرکاربرد خود را کنار تلفن داشته باشید تا هر بار مجبور نباشید آن را در دفترچه تلفن پیدا کنید. این کار باعث میشود:
- سرعت دسترسی به وبسایتها بسیار بیشتر شود.
- بار کاری روی سرورهای DNS ریشه و TLD به شدت کاهش یابد.
نقش TTL (Time-to-Live) در مدیریت حافظه پنهان
حالا سؤال اینجاست که این نتایج جستجو چقدر در حافظه پنهان باقی میمانند؟ اینجاست که TTL وارد میشود.
TTL (Time-to-Live) یک مقدار عددی است که به هر رکورد DNS اختصاص داده میشود و نشان میدهد که آن رکورد چقدر باید در حافظه پنهان سرورهای DNS (و یا سیستمهای کاربران) زنده بماند (ذخیره شود) قبل از اینکه منقضی شود و نیاز به جستجوی مجدد باشد. TTL معمولاً بر حسب ثانیه اندازهگیری میشود.
برای مثال، اگر یک رکورد A برای example.com دارای TTL 3600 ثانیه (معادل 1 ساعت) باشد، به این معنی است که هر سرور DNS که این رکورد را دریافت میکند، باید آن را برای مدت 1 ساعت در حافظه پنهان خود نگه دارد. پس از گذشت 1 ساعت، اگر کسی دوباره example.com را جستجو کند، سرور DNS باید دوباره پرسوجو را انجام دهد تا آدرس IP بهروز را به دست آورد.

تأثیر TTL بر عملکرد و بهروزرسانیها
انتخاب مقدار TTL مناسب یک توازن بین عملکرد و تازگی اطلاعات ایجاد میکند:
TTL کوتاه (مثلاً چند دقیقه)
- مزایا: تغییرات در رکورد DNS (مانند تغییر آدرس IP سرور) به سرعت در سراسر اینترنت منتشر میشوند، زیرا حافظههای پنهان سریعتر منقضی میشوند و نیاز به جستجوی مجدد را ایجاد میکنند. این برای وبسایتهایی که نیاز به بهروزرسانی مکرر دارند یا در صورت بروز مشکل نیاز به تغییر سریع مسیر دارند، عالی است.
- معایب: میتواند بار بیشتری بر روی سرورهای DNS معتبر ایجاد کند، زیرا پرسوجوهای بیشتری نیاز به انجام دارند. همچنین ممکن است کمی کندتر باشد، زیرا حافظه پنهان کمتر مورد استفاده قرار میگیرد.
TTL بلند (مثلاً چند ساعت یا چند روز)
- مزایا: عملکرد بسیار بهتری ارائه میدهد، زیرا نتایج جستجو برای مدت طولانیتری در حافظه پنهان باقی میمانند و نیاز به پرسوجوهای مکرر را کاهش میدهند. این باعث افزایش سرعت بارگذاری وبسایت و کاهش بار سرور میشود.
- معایب: اگر نیاز به تغییر رکورد DNS باشد (مثلاً تغییر آدرس IP)، این تغییر ممکن است برای مدت طولانی (تا زمانی که TTL منقضی شود) در حافظه پنهان کاربران قدیمی باقی بماند و باعث شود برخی کاربران همچنان به آدرس قدیمی هدایت شوند.
آموزش مفاهیم DNS در کافه آموزش
یادگیری مباحثی مثل DNS فقط به صورت تئوری کافی نیست؛ برای اینکه درک عمیقی از نحوه کارکرد شبکهها داشته باشید، نیاز به آموزش عملی و پروژهمحور دارید. کافه آموزش بهعنوان یکی از مراجع تخصصی آموزش شبکه در ایران، دورههای متنوعی را در این حوزه برگزار میکند که DNS و مفاهیم مرتبط بخش مهمی از سرفصلهای آن هستند:
- دوره CCNA (سیسکو): در دوره ccna ، مفاهیم پایهای و پیشرفته شبکه از جمله نامگذاری دامنهها، آدرسدهی IP و پروتکلهای پایهای شبکه مانند DNS بهصورت کامل تدریس میشود.
- دوره MCSA (مایکروسافت): در دوره Mcsa علاوه بر مباحث مدیریت ویندوز سرور، سرویسهای DNS و DHCP بهصورت تخصصی آموزش داده میشوند تا دانشجو توانایی پیادهسازی و عیبیابی زیرساخت شبکه سازمانی را پیدا کند.
- دوره MTCNA (میکروتیک): دوره MTCNA برای علاقهمندان به تجهیزات میکروتیک طراحی شده است. یکی از سرفصلهای مهم آن، پیکربندی و بهینهسازی سرویسهای DNS در روترها و سوئیچهای میکروتیک است.
- دوره AZ-900 (Microsoft Azure Fundamentals): دوره آژور az-900 برای آشنایی اولیه با فضای ابری مایکروسافت طراحی شده است. در بخش مربوط به Azure DNS، هنرجو با مفهوم سرویس نام دامنه در کلود، کاربرد آن در اتصال دامنههای عمومی به سرویسهای Azure و تفاوت آن با DNS سنتی آشنا میشود. این سطح بیشتر روی درک مفاهیم و معماری تمرکز دارد.
- دوره AZ-104 (Microsoft Azure Administrator): دوره آژور az-104 سطح بالاتر، مدیریت و پیکربندی عملی Azure DNS آموزش داده میشود. دانشجو یاد میگیرد چگونه رکوردهای DNS را در Azure ایجاد کند، دامنهها را به سرویسهای ابری متصل کند و از ابزارهای Azure برای مانیتورینگ و عیبیابی DNS استفاده نماید. تمرکز این دوره بر پیادهسازی واقعی و سناریوهای کاربردی است.
با شرکت در این دورهها در کافه آموزش، شما نهتنها با عملکرد تئوری DNS آشنا میشوید، بلکه میتوانید آن را بهطور عملی در شبکههای واقعی پیادهسازی کنید.
نتیجه گیری
DNS، که مخفف Domain Name System است، مانند دفترچه تلفن اینترنت عمل میکند و نامهای دامنه قابل فهم برای انسان (مانند google.com) را به آدرسهای IP عددی که کامپیوترها برای شناسایی یکدیگر استفاده میکنند، ترجمه میکند؛ این فرآیند شامل مراحل متعددی است که از کش محلی کاربر شروع شده و از طریق سرورهای DNS مختلف (ریزولور، ریشه، TLD و معتبر) ادامه مییابد تا در نهایت آدرس IP صحیح به مرورگر کاربر بازگردانده شود و امکان دسترسی به وبسایت فراهم گردد.
واقعاً بدون DNS باید آدرس IP همه سایتها رو حفظ میکردیم؟ اینقدر مهمه؟
کاملاً درست متوجه شدی! بدون DNS، اینترنت مثل یک دفترچه تلفن بدون اسم بود و فقط شمارهها باقی میموند. تصور کن برای ورود به گوگل باید عددی مثل 142.250.190.78 رو حفظ میکردی. DNS این مشکل رو حل کرده و با ترجمه نامها به IP، تجربه کاربری رو ساده و سریع کرده.