گاهی پشت یک کار ساده، مثل بازکردن یک سایت، چند مرحلهٔ فنی پنهان است. اگر اینترنت را شهری بزرگ در نظر بگیریم، هر سرور یک نشانی عددی دارد؛ اما ما معمولاً نام سایتها را بهخاطر میسپاریم، نه عددها را. DNS کمک میکند نام دامنه به نشانی IP تبدیل شود تا دستگاه بتواند سرور موردنظر را پیدا کند.
«کنترل پیچیدگی جوهرهٔ برنامهنویسی است.» — برایان کرنیگان
از واردکردن آدرس تا پیدا کردن سرور
فرض کنید در مرورگر مینویسید `example.com`. رایانه برای اتصال، به نشانی IP سرور نیاز دارد. DNS نام دامنه را به نشانیای مانند `203.0.113.10` نگاشت میکند. این IP فقط یک نمونهٔ مستندسازیشده است و نشانی واقعی یک سایت نیست.
جستوجو معمولاً ابتدا در حافظههای موقت انجام میشود. مرورگر، سیستمعامل یا روتر ممکن است پاسخ DNS را از قبل ذخیره کرده باشد. اگر پاسخ معتبری پیدا نشود، دستگاه از حلکنندهٔ DNS (DNS Resolver) میپرسد؛ معمولاً حلکنندهای که ارائهدهندهٔ اینترنت یا یک سرویس عمومی در اختیار میگذارد.
اگر حلکننده هم پاسخ را نداشته باشد، برای پیدا کردن آن سراغ بخشهای مختلف ساختار سلسلهمراتبی DNS میرود: ابتدا سرورهای ریشه، سپس سرورهای دامنهٔ سطحبالا، مثل `.com`، و در نهایت سرور مرجع دامنه. پاسخ پیداشده برای مدت مشخصی ذخیره میشود؛ این مدت را TTL تعیین میکند.
DNS چگونه نام دامنه را پیدا میکند؟
در این فرایند، دستگاه شما معمولاً یک پرسوجوی بازگشتی به حلکننده میفرستد؛ یعنی انتظار دارد حلکننده پاسخ نهایی را پیدا کند. حلکننده ممکن است برای رسیدن به پاسخ، از سرورهای دیگر راهنمایی بگیرد. این بخش از فرایند را جستوجوی تکرارشونده مینامند.
اگر پاسخ قبلاً در حافظهٔ حلکننده ذخیره شده باشد، نیازی نیست همهٔ این مراحل دوباره طی شوند؛ بنابراین پاسخ سریعتر میرسد. مدت اعتبار پاسخ به TTL بستگی دارد. TTL کوتاهتر باعث میشود تغییرات DNS زودتر در شبکه دیده شوند، اما ممکن است تعداد پرسوجوها را افزایش دهد. TTL بلندتر تعداد پرسوجوها را کم میکند، ولی تغییر نشانی سرور ممکن است دیرتر به همهٔ کاربران برسد.
چند نوع رکورد پرکاربرد DNS
A: نام دامنه را به نشانی IPv4 وصل میکند.
AAAA: نشانی IPv6 را برمیگرداند.
CNAME: یک نام دامنه را به نام دامنهٔ دیگری ارجاع میدهد.
MX: سرورهای دریافت ایمیل دامنه را مشخص میکند.
TXT: متنهایی برای کاربردهایی مانند تأیید مالکیت دامنه یا تنظیم سیاستهای ایمیل نگه میدارد.
وقتی سایت باز نمیشود، مشکل از کجاست؟
فرض کنید اینترنت گوشی وصل است، اما یک سایت باز نمیشود. ممکن است اتصال شبکه برقرار باشد، ولی نام دامنه بهدرستی به IP تبدیل نشود؛ مثلاً رکورد دامنه تغییر کرده باشد، پاسخ قدیمی در حافظه مانده باشد یا حلکنندهٔ DNS در دسترس نباشد.
در چنین شرایطی، پاککردن حافظهٔ DNS یا استفاده از حلکنندهای دیگر گاهی مشکل را برطرف میکند. اما اگر خود سرور سایت از دسترس خارج شده باشد، تغییر DNS کمکی نمیکند. بنابراین هنگام عیبیابی باید فرق بگذاریم میان مشکل در نامیابی DNS، مشکل در اتصال شبکه و ازکارافتادن سرور مقصد.
امنیت DNS در یک نگاه
DNS سنتی بهتنهایی محرمانگی پرسوجوها یا اصالت پاسخها را تضمین نمیکند. فناوریهایی مانند DNS over HTTPS (DoH) و DNS over TLS (DoT) پرسوجوی DNS را در مسیر رمزگذاری میکنند. DNSSEC کار دیگری انجام میدهد: با امضای دیجیتال، به بررسی اصالت دادههای DNS کمک میکند؛ اما پرسوجو را رمزگذاری نمیکند.
پس DNS فقط یک «دفترچهتلفن اینترنت» نیست؛ سامانهای سلسلهمراتبی است که از حافظهٔ موقت و قواعد مشخص برای پیدا کردن نشانی سرورها استفاده میکند. شناخت آن کمک میکند بفهمیم چرا گاهی اینترنت وصل است، اما یک سایت باز نمیشود.
اگر یک سایت پس از تغییر IP برای بعضی کاربران باز شود و برای بعضی دیگر نه، شما ابتدا کدام مورد را بررسی میکنید: TTL و حافظهٔ DNS، تنظیمات حلکننده یا وضعیت سرور مقصد؟ چرا؟
برای مطالعه و تمرکز
کتاب: Computer Networking: A Top-Down Approach، نوشتهٔ جیمز کوروژ و کیث راس؛ منبعی مناسب برای یادگیری مرحلهبهمرحلهٔ شبکه.
منبع فنی: مستندات Cloudflare Learning Center دربارهٔ DNS و DNSSEC.
حافظ گلشننژاد | دانشجوی مهندسی نرمافزار و پژوهشگر فناوری
وبسایت: hamyaram.com
کانال تخصصی بله: @Dev_journey
کانال تلگرام: Dev Journey
ارتباط مستقیم: 09912767753

