DNS چیست و چگونه کار میکند؟ 2025

سامانه نام دامنه یا DNS رو میتونیم مثل دفترچه تلفن اینترنت در نظر بگیریم. وقتی میخوایم یه سایت رو باز کنیم، معمولاً اسمش رو وارد میکنیم، مثل nytimes.com یا espn.com، ولی کامپیوترها و مرورگرها برای پیدا کردن این سایتها از یه چیز دیگه استفاده میکنن: آدرس IP. وظیفهی DNS اینه که اسم سایت رو به یه آدرس IP تبدیل کنه تا مرورگر بفهمه باید به کجا وصل بشه.
هر دستگاهی که به اینترنت متصل میشه، یه آدرس IP مخصوص خودش داره که بقیه دستگاهها از طریق اون پیداش میکنن. مشکل اینجاست که این آدرسها معمولاً یه سری عدد پیچیده هستن که حفظ کردنشون کار راحتی نیست، مثل 192.168.1.1 در نسخه قدیمیتر IPv4، یا مدلهای جدیدتر و پیچیدهتر مثل 2400:cb00:2048:1::c629:d7a2 توی IPv6. DNS این مشکل رو برطرف میکنه و باعث میشه فقط با وارد کردن اسم سایت، بدون دردسر به مقصد برسیم با ایکس بازی همراه باشید.
DNS چطور کار میکنه؟
وقتی یه کاربر آدرس یه سایت رو توی مرورگر وارد میکنه (مثلاً **www.example.com**)، کامپیوتر باید این اسم رو به یه آدرس IP که قابل فهم برای ماشینهاست (مثل 192.168.1.1) تبدیل کنه. این آدرس IP مثل یه آدرس خونه میمونه که مشخص میکنه یه سایت دقیقاً کجا قرار داره.
پس برای اینکه یه صفحه وب بارگذاری بشه، باید این ترجمه بین اسم دامنه و آدرس IP انجام بشه. اما این فرایند چجوری پیش میره؟
برای رسیدن به مقصد، یه درخواست DNS از چند مرحله رد میشه و از تجهیزات مختلف عبور میکنه. نکته جالب اینجاست که این فرایند کاملاً پشت پرده اتفاق میفته و کاربر هیچ نیازی به دخالت توی این روند نداره. مرورگر فقط درخواست رو میفرسته و DNS خودش بقیه کارها رو انجام میده تا سایت موردنظر بارگذاری بشه.
چهار سرور اصلی در فرایند DNS
برای اینکه یه صفحه وب لود بشه، چهار نوع سرور DNS وارد عمل میشن:
- DNS Recursor (سرور بازگشتی) – این سرور رو میشه مثل یه کتابدار در نظر گرفت که وقتی یه نفر دنبال یه کتاب خاصه، میره و پیداش میکنه. DNS Recursor هم همین کارو انجام میده؛ وقتی کاربر توی مرورگر یه آدرس رو وارد میکنه، این سرور درخواست رو دریافت میکنه و اگه خودش جواب رو نداشته باشه، سراغ بقیه سرورها میره تا آدرس IP مورد نظر رو پیدا کنه.
- Root Nameserver (سرور روت) – این سرور مثل فهرست راهنمای یه کتابخونهست که به شما نشون میده باید برای پیدا کردن کتاب خاصی، سراغ کدوم قفسه برید. سرور Root اولین مرحله توی تبدیل اسم سایت به آدرس IP هست و به سرورهای بعدی مسیر درست رو نشون میده.
- TLD Nameserver (سرور دامنه سطح بالا) – این سرور رو میشه مثل یه قفسه خاص توی کتابخونه دونست که فقط کتابهای یه موضوع خاص رو داره. مثلاً اگه دنبال کتابهای علمی باشیم، این سرور به ما میگه توی کدوم قفسه دنبالشون بگردیم. در دنیای DNS، این سرور مسئول بخش آخر آدرس دامنه است؛ مثلاً برای example.com، سرور TLD مسئول پسوند “.com” هست.
- Authoritative Nameserver (سرور معتبر) – این سرور مثل یه دیکشنری توی همون قفسهست که معنی دقیق یه کلمه رو بهمون میده. اینجا آخرین مرحله از جستجوی DNS انجام میشه. این سرور در نهایت، IP سایت موردنظر رو پیدا میکنه و به DNS Recursor (همون کتابدار) برمیگردونه تا صفحه وب برای کاربر لود بشه.
در کل، این سرورها پشت صحنه دارن کار میکنن تا وقتی یه آدرس سایت رو تایپ میکنی، بدون اینکه متوجه بشی، مرورگرت بتونه اون سایت رو خیلی سریع پیدا کنه. 🚀
تفاوت بین سرور DNS بازگشتی (Recursive Resolver) و سرور DNS معتبر (Authoritative Nameserver)
هر دوی این سرورها بخشهای حیاتی زیرساخت DNS هستن، اما هرکدوم نقش متفاوتی دارن و توی مراحل مختلف درخواست DNS قرار میگیرن. سادهترین راه برای درک تفاوتشون اینه که Recursive Resolver اول مسیر قرار داره و درخواست رو پیگیری میکنه، در حالی که Authoritative Nameserver آخرین مرحلهست و جواب نهایی رو میده.
✅ سرور بازگشتی DNS (Recursive Resolver)
این سرور، مثل یه پیک اطلاعاتی عمل میکنه که وقتی یه کاربر توی مرورگر یه آدرس وارد میکنه، درخواستش رو دریافت میکنه و شروع به جستجو میکنه تا جواب درست رو پیدا کنه. Recursive Resolver این کار رو با ارسال درخواست به چندین سرور مختلف انجام میده تا زمانی که به Authoritative Nameserver برسه و آدرس IP رو دریافت کنه.
اما این سرور یه ویژگی مهم داره: کش کردن (Caching). یعنی اگه قبلاً همین درخواست رو دریافت کرده باشه، نتیجه رو توی حافظه خودش ذخیره کرده و بدون نیاز به جستجوی دوباره، همون جواب رو به مرورگر برمیگردونه. این کار باعث میشه سایتها سریعتر بارگذاری بشن.
✅ سرور معتبر DNS (Authoritative Nameserver)
این سرور آخرین حلقه توی زنجیرهی جستجوی DNS هست. وقتی یه درخواست به این سرور میرسه، اگه اطلاعات مورد نظر رو داشته باشه، مستقیماً آدرس IP مربوط به اون دامنه رو ارسال میکنه. میتونیم این سرور رو مثل یه دفتر ثبت اسناد در نظر بگیریم که فقط اطلاعات رسمی و دقیق رو در خودش نگه میداره.
در واقع، Recursive Resolver درخواست رو دنبال میکنه، اما Authoritative Nameserver همون جاییه که جواب نهایی رو در خودش داره و برمیگردونه.
🔹 مثال ساده:
فرض کن داری دنبال یه کتاب خاص توی یه کتابخونهی بزرگ میگردی. Recursive Resolver مثل یه کتابدار پرانرژی عمل میکنه که دنبال کتاب میدوه و از بخشهای مختلف میپرسه. اما Authoritative Nameserver مثل قفسهی خاصی از کتابخونهست که اون کتاب دقیقاً توش قرار داره.
سرور DNS معتبر (Authoritative DNS Server) چیه؟
به زبون ساده، سرور معتبر DNS همون جاییه که اطلاعات اصلی مربوط به یه دامنه ذخیره شده و مدیریت میشه. این سرور، آخرین مرحلهی فرایند جستجوی DNS هست و دقیقاً همون جاییه که پاسخ نهایی به درخواست کاربر رو ارائه میده.
وقتی یه کاربر یه آدرس وب رو توی مرورگرش وارد میکنه، درخواستش از چندین سرور عبور میکنه تا در نهایت به سرور معتبر DNS برسه. این سرور که اطلاعات دامنههای مشخصی رو در خودش داره، بدون نیاز به پرسیدن از هیچ سرور دیگهای، مستقیم آدرس IP درست رو ارائه میده و باعث میشه مرورگر کاربر به سایت موردنظر متصل بشه.
🔹 چرا این سرور مهمه؟
چون آخرین و دقیقترین منبع برای پیدا کردن یه آدرس IP هست. هر سایت یا سرویس اینترنتی، برای اینکه در دسترس باشه، باید یه Authoritative DNS Server داشته باشه که اطلاعاتش رو مدیریت کنه.
🔹 یک مثال ساده:
فرض کن دنبال یه سند رسمی هستی. شاید اول از چند نفر بپرسی یا توی منابع مختلف بگردی، ولی در نهایت فقط دفتر ثبت اسناد رسمی میتونه نسخهی اصلی و معتبر اون سند رو بهت بده. Authoritative DNS Server هم همون دفتر ثبت اسناد دنیای اینترنت محسوب میشه.
نقش سرور اضافی در مدیریت زیردامنهها (Subdomains)
وقتی درخواست DNS مربوط به یه زیردامنه (مثل foo.example.com یا blog.cloudflare.com) باشه، یه مرحلهی اضافه توی مسیر جستجوی DNS اضافه میشه. بعد از اینکه درخواست به سرور معتبر DNS (Authoritative DNS Server) اصلی رسید، اگه اون سرور فقط اطلاعات دامنهی اصلی رو داشته باشه، درخواست رو به یه سرور دیگه ارجاع میده که مسئول نگهداری اطلاعات زیردامنههاست.
🔹 چرا این مرحله اضافه میشه؟
چون زیردامنهها معمولاً یه رکورد خاص به نام CNAME دارن که مشخص میکنه این زیردامنه به کدوم آدرس اصلی اشاره داره. این اطلاعات ممکنه روی یه سرور نام متفاوت ذخیره شده باشه، پس مرورگر باید یه درخواست اضافی بفرسته تا آدرس دقیق IP رو پیدا کنه.
🔹 مثال ساده:
فرض کن آدرس یه خیابون رو پیدا کردی، ولی بعد میفهمی که ساختمونی که دنبالش میگردی توی یه مجتمع بزرگه و هر واحد یه شماره مخصوص داره. توی این حالت، بعد از اینکه به خیابون موردنظر رسیدی، باید یه جستجوی دیگه انجام بدی تا واحد دقیق رو هم پیدا کنی. این دقیقاً همون چیزیه که برای زیردامنهها اتفاق میفته.
تفاوت سرویس DNS کلودفلر با بقیه سرویسهای DNS
بیشتر سرویسهای DNS بازگشتی (مثل Google DNS، OpenDNS و حتی ISPهایی مثل Comcast) سرورهای مخصوص DNS Resolver دارن که درخواستها رو بهینهسازی و پردازش میکنن تا جستجوها سریعتر انجام بشن. اما Cloudflare یه تفاوت اساسی با این سرویسها داره.
کلودفلر مستقیماً توی زیرساخت اصلی اینترنت حضور داره و مسئولیت مدیریت بعضی از مهمترین سرورهای نام (Nameserver) در دنیا رو به عهده داره. یکی از مهمترین نمونهها F-Root Server هست که کلودفلر بخشی از اون رو مدیریت میکنه. این سرور یکی از سرورهای ریشهای DNS به حساب میاد که روزانه میلیاردها درخواست اینترنتی رو پردازش میکنه.
کلودفلر با استفاده از شبکه Anycast این امکان رو داره که حجم عظیمی از درخواستهای DNS رو بدون هیچگونه قطعی مدیریت کنه. این تفاوت باعث میشه که DNS کلودفلر نهفقط سریع، بلکه بخشی از هستهی اینترنت باشه.
مراحل انجام یک جستجوی DNS
در اکثر مواقع، DNS فقط یه کار انجام میده: تبدیل نام دامنه به آدرس IP. این فرایند بهصورت پشت پرده انجام میشه و معمولاً اطلاعات DNS توی حافظه کش (Cache) ذخیره میشه که باعث میشه بعضی مراحل رد بشن و سرعت جستجو افزایش پیدا کنه. اما اگه هیچ اطلاعاتی توی کش نباشه، جستجوی DNS از ۸ مرحله عبور میکنه.
🔹 ۸ مرحلهی جستجوی DNS (وقتی هیچ کشی وجود نداره):
1️⃣ کاربر آدرس example.com رو توی مرورگر وارد میکنه، این درخواست وارد اینترنت میشه و به DNS Recursive Resolver فرستاده میشه.
2️⃣ Resolver درخواست رو به سرور ریشه DNS (Root Nameserver) ارسال میکنه.
3️⃣ سرور ریشه به Resolver آدرس سرور دامنه سطح بالا (TLD) رو برمیگردونه (مثلاً برای example.com، سرور “.com”).
4️⃣ Resolver درخواست رو به سرور TLD ارسال میکنه.
5️⃣ سرور TLD آدرس Nameserver مخصوص دامنهی example.com رو برمیگردونه.
6️⃣ Resolver حالا درخواست رو مستقیماً به Nameserver دامنه ارسال میکنه.
7️⃣ Nameserver آدرس IP مربوط به example.com رو برمیگردونه.
8️⃣ در نهایت، DNS Resolver آدرس IP نهایی رو به مرورگر کاربر میفرسته.
🔹 بعد از دریافت آدرس IP، چه اتفاقی میافته؟
9️⃣ مرورگر کاربر یه درخواست HTTP به همون آدرس IP ارسال میکنه.
🔟 سرور مقصد هم صفحه وب رو ارسال میکنه تا داخل مرورگر نمایش داده بشه.
🎯 نتیجه: همهی این ۱۰ مرحله در کمتر از چند میلیثانیه انجام میشن تا سایت موردنظر روی صفحهی شما ظاهر بشه! 🚀
DNS Resolver چیست؟
DNS Resolver اولین ایستگاه در مسیر جستجوی DNS است و مسئول پردازش درخواست اولیهای است که از طرف کاربر ارسال شده. این سرور، فرایند جستجو را آغاز میکند تا در نهایت، نام دامنهای که کاربر وارد کرده، به آدرس IP موردنیاز برای اتصال به سایت ترجمه شود.
🔹 نکته: در یک جستجوی DNS که اطلاعاتش در حافظه کش (Cache) ذخیره نشده، معمولاً دو نوع درخواست انجام میشود: درخواست بازگشتی (Recursive) و درخواست تکراری (Iterative).
تفاوت بین درخواست بازگشتی (Recursive Query) و DNS Resolver بازگشتی
✅ درخواست بازگشتی (Recursive Query):
این نوع درخواست زمانی اتفاق میافتد که کاربر (یا مرورگر) از DNS Resolver بخواهد که یک نام دامنه را به آدرس IP ترجمه کند و تا زمان دریافت نتیجه، جستجو را ادامه دهد.
✅ DNS Resolver بازگشتی (Recursive DNS Resolver):
این همان سیستمی است که درخواست Recursive Query را دریافت میکند و خودش مسئول پیدا کردن جواب است. این سرور از چندین منبع مختلف (مثل Root Nameserver، TLD Nameserver و Authoritative Nameserver) درخواست ارسال میکند تا آدرس IP صحیح را پیدا کند و به کاربر برگرداند.
🔹 خلاصه:
🔸 Recursive Query: درخواست ارسالشده از سمت کاربر که نیاز به پاسخ نهایی دارد.
🔸 Recursive DNS Resolver: سیستمی که این درخواست را دریافت کرده و خودش جستجو را انجام میدهد تا پاسخ نهایی را پیدا کند.
🚀 در کل، DNS Resolver اولین مرحله از مسیر تبدیل نام دامنه به آدرس IP است و یکی از مهمترین اجزای زیرساخت اینترنت محسوب میشود.
انواع درخواستهای DNS
در فرآیند معمول جستجوی DNS، سه نوع درخواست مختلف وجود داره. ترکیب این درخواستها باعث بهینهسازی و کاهش مسیر پردازش میشه. در بهترین حالت، اگه اطلاعات DNS از قبل کش شده باشه، سرور DNS میتونه مستقیماً یه پاسخ غیر بازگشتی (Non-Recursive Query) ارسال کنه و مسیر جستجو کوتاهتر بشه.
✅ ۳ نوع درخواست DNS:
1️⃣ درخواست بازگشتی (Recursive Query)
- در این نوع درخواست، DNS Resolver باید یا نتیجه دقیق رو به کاربر بده یا اگه پیدا نکرد، پیغام خطا ارسال کنه.
- این روش معمولاً توسط DNS بازگشتی (Recursive DNS Resolver) انجام میشه که خودش به چندین سرور مختلف سر میزنه تا جواب نهایی رو پیدا کنه.
2️⃣ درخواست تکراری (Iterative Query)
- اینجا کلاینت (مثلاً مرورگر یا سیستمعامل) به سرور DNS اجازه میده بهترین پاسخی که در اختیار داره رو برگردونه.
- اگه سرور DNS جواب دقیق رو نداشته باشه، آدرس یه سرور معتبر دیگه رو میده تا کلاینت خودش درخواست رو به اون ارسال کنه.
- این فرآیند ادامه پیدا میکنه تا جواب پیدا بشه یا تایماوت بشه.
3️⃣ درخواست غیر بازگشتی (Non-Recursive Query)
- زمانی اتفاق میافته که سرور DNS از قبل اطلاعات مورد نیاز رو داخل کش خودش ذخیره کرده باشه یا خودش سرور معتبر (Authoritative) اون دامنه باشه.
- معمولاً سرورهای DNS اطلاعات رو کش میکنن تا مصرف پهنای باند و بار روی سرورهای بالادستی کمتر بشه.
DNS Caching چیست و کجا انجام میشود؟
🔹 کش (Cache) کردن در DNS یعنی ذخیره موقت اطلاعات برای بهبود سرعت پاسخگویی و کاهش تعداد درخواستهای اضافی. با این کار، درخواستهای DNS سریعتر پردازش میشن و از بار اضافی روی سرورها و مصرف پهنای باند جلوگیری میشه. اطلاعات کششده تا مدت زمان مشخصی که TTL (Time-To-Live) تعیین میکنه، ذخیره میمونن.
✅ ۳ سطح اصلی کش DNS:
1️⃣ کش DNS در مرورگر
- مرورگرهای مدرن مثل Chrome، Firefox و Edge بهصورت پیشفرض رکوردهای DNS رو برای مدت کوتاهی ذخیره میکنن.
- این باعث میشه تا وقتی یه سایت رو دوباره باز میکنی، مرورگر مستقیماً از کش خودش استفاده کنه و درخواست اضافی به اینترنت ارسال نشه.
- برای مشاهده کش DNS در Chrome میتونی این آدرس رو باز کنی:
2️⃣ کش DNS در سیستمعامل (OS-Level Caching)
- سیستمعامل هم قبل از اینکه درخواست DNS رو به اینترنت بفرسته، چک میکنه که آیا اطلاعات موردنیازش رو داخل کش محلی (Local Cache) داره یا نه.
- این کار رو معمولاً یه سرویس داخلی به نام Stub Resolver انجام میده.
- اگه اطلاعات توی کش نباشه، درخواست رو به DNS Resolver ارسال میکنه که معمولاً داخل ISP (ارائهدهنده اینترنت) قرار داره.
3️⃣ کش در DNS Resolver (داخل ISP یا سرویسهای عمومی DNS مثل Google DNS و Cloudflare DNS)
- وقتی DNS Resolver درخواست رو دریافت میکنه، قبل از اینکه اون رو به سرورهای بالاتر (مثل Root Server یا TLD Server) بفرسته، توی کش خودش میگرده.
- اگه رکورد A (آدرس IP) رو نداشته باشه ولی رکورد NS (سرور معتبر دامنه) رو ذخیره کرده باشه، مستقیم همون سرور معتبر رو درخواست میکنه و مراحل اضافی رو رد میکنه.
- اگه اطلاعات داخل کش DNS پاک شده باشه، Resolver باید درخواست رو از اول به سرورهای Root ارسال کنه.
🔹 تفاوت DNS کلودفلر با بقیه ارائهدهندگان DNS
🔹 در حالی که بیشتر DNS Resolverها (مثل Google DNS و OpenDNS) فقط نقش سرورهای بازگشتی رو دارن، کلودفلر بخشی از زیرساخت اصلی اینترنته و سرورهای ریشهای (مثل F-Root) رو مدیریت میکنه.
🔹 کلودفلر با استفاده از Anycast Network، درخواستهای DNS رو از نزدیکترین سرور خودش پردازش میکنه که باعث کاهش زمان پاسخگویی (Latency) میشه.
🔹 این تفاوت باعث میشه DNS کلودفلر نهفقط سریع، بلکه یکی از ستونهای اصلی اینترنت باشه. 🚀
جمعبندی و نتیجهگیری
DNS یکی از مهمترین بخشهای زیرساخت اینترنته که وظیفهی تبدیل نام دامنهها به آدرسهای IP رو بر عهده داره. این فرآیند به کاربران اجازه میده که بدون نیاز به حفظ آدرسهای پیچیدهی IP، فقط با تایپ کردن نام سایت، به محتوای اون دسترسی داشته باشن.
در مسیر تبدیل نام دامنه به آدرس IP، چندین نوع سرور DNS نقش دارن:
- DNS Resolver اولین نقطهی پردازش درخواستهاست و معمولاً داخل ISP یا سرویسهایی مثل Google DNS و Cloudflare DNS قرار داره.
- سرورهای Root، TLD و Authoritative به ترتیب اطلاعات دامنههای مختلف رو نگهداری میکنن و در نهایت، سرور معتبر (Authoritative DNS) آدرس IP نهایی رو ارسال میکنه.
🔹 همچنین، سه نوع درخواست DNS وجود داره:
1️⃣ Recursive Query (درخواست بازگشتی) → جستجوی کامل تا پیدا شدن پاسخ نهایی
2️⃣ Iterative Query (درخواست تکراری) → ارسال درخواست به سرورهای مختلف برای یافتن بهترین پاسخ
3️⃣ Non-Recursive Query (درخواست غیر بازگشتی) → پاسخ سریع از اطلاعات کششده
یکی از مهمترین روشهای بهینهسازی سرعت پردازش DNS، کشینگ (DNS Caching) است که اطلاعات DNS رو برای مدت مشخصی در مرورگر، سیستمعامل یا سرورهای DNS ذخیره میکنه و باعث کاهش تعداد درخواستها به سرورهای اصلی و افزایش سرعت بارگذاری سایتها میشه.
🔹 چرا DNS کلودفلر با سایر ارائهدهندگان تفاوت داره؟
برخلاف Google DNS یا OpenDNS که فقط بهعنوان DNS Resolver عمل میکنن، Cloudflare DNS بهطور مستقیم توی زیرساخت اصلی اینترنت حضور داره. کلودفلر یکی از ارائهدهندگان سرورهای ریشهای DNS (F-Root Server) هست و با شبکهی Anycast خودش، باعث کاهش تأخیر و افزایش سرعت پاسخگویی به درخواستهای DNS میشه.
🔹 نتیجه:
سیستم DNS یکی از پایههای اساسی اینترنت مدرن محسوب میشه. از کشینگ گرفته تا سرویسهای پیشرفتهای مثل Cloudflare DNS، همهی این اجزا دستبهدست هم میدن تا تجربهی سریع، مطمئن و بهینهای برای کاربران فراهم کنن.
مطالب مرتبط: