جریان حل DNS (DNS Resolution Flow)
مسیر کامل پرسوجوها و پاسخها که نام دامنهای مانند www.example.com را به آدرسی IP تبدیل میکند که کامپیوتر بتواند به آن متصل شود.
1. چرا این موضوع مهم است
درک جریان حل DNS برای عیبیابی، بهینهسازی کارایی، طراحی معماری و امنیت ضروری است.
هدف
وقتی شما وارد میکنید https://www.example.com، سیستم باید پاسخ بدهد:
"برای www.example.com باید به کدام آدرس IP متصل شوم؟"
www.example.com → 93.184.216.34
2. جریان حل — گامبهگام
تمام مراحل از مرورگر تا سرورهای Authoritative، شامل کشهای محلی.
مرورگر کش DNS خودش را بررسی میکند. اگر ورودی معتبر موجود باشد، همان IP فوراً استفاده میشود — هیچ پرسوجویی ارسال نمیشود.
www.example.com سی ثانیه پیش باز شده است → IP کششده دوباره استفاده میشودسیستمعامل ابتدا /etc/hosts را بررسی میکند، سپس کش DNS خودش را. اگر پیدا کند، پاسخ را به اپلیکیشن برمیگرداند.
203.0.113.10 intranet.example.com (ورودی در فایل hosts)پرسوجو به یک Resolver (مثل DNS ISP یا 8.8.8.8 یا 1.1.1.1) ارسال میشود. Resolver ابتدا کش خودش را بررسی میکند.
سرور DNS: 8.8.8.8 (گوگل) یا 1.1.1.1 (Cloudflare)Resolver از یک سرور Root میپرسد: «چه کسی .com را مدیریت میکند؟» Root فهرست سرورهای TLD را برمیگرداند.
.com → a.gtld-servers.net, b.gtld-servers.net ...Resolver از سرور TLD میپرسد: «سرورهای Authoritative دامنه example.com کدام هستند؟» و رکوردهای NS را دریافت میکند.
example.com. IN NS ns1.dnsprovider.com.Resolver از ns1.dnsprovider.com رکورد A را میپرسد و پاسخ نهایی را دریافت میکند.
www.example.com. IN A 93.184.216.34Resolver نتیجه را بر اساس TTL کش میکند، IP را به سیستمعامل برمیگرداند. سیستمعامل آن را کش کرده و به مرورگر میدهد.
www.example.com → 93.184.216.34 (TTL = 3600s)مرورگر یک اتصال TCP به IP بهدستآمده روی پورت 80/443 برقرار میکند. صفحه شروع به بارگذاری میکند.
TCP → 93.184.216.34:443 → TLS → HTTP/23. نگاهی سریع به سلسلهمراتب DNS
سه لایه واگذاری (Delegation) از ریشه تا رسیدن به پاسخ نهایی.
سرورهای Root
13 خوشه · . (نقطه)
سرورهای TLD .com
a.gtld-servers.net …
Name Serverهای Authoritative
ns1.dnsprovider.com
پاسخ نهایی
93.184.216.34 (TTL 3600)
4. مثال کامل
تمام 10 گام برای حل www.example.com، از لحظه تایپ تا برقراری اتصال TCP.
مثال کامل — www.example.com
5. حل Recursive در برابر Iterative
کلاینت رفتار Recursive دارد؛ Resolver درون خودش پرسوجوهای Iterative انجام میدهد.
- ·کلاینت فقط یکبار میپرسد و منتظر پاسخ نهایی میماند
- ·Resolver مسئولیت تمام پرسوجوهای بعدی را بر عهده میگیرد
- ·کلاینت یا یک IP حلشده دریافت میکند یا خطا
client → resolver: "What is www.example.com?" resolver → client: "93.184.216.34"
- ·Resolver هر سرور را در سلسلهمراتب بهترتیب کوئری میکند
- ·هر سرور یا پاسخ میدهد یا به سرور بعدی ارجاع میکند
- ·Resolver کل پیمایش را انجام میدهد؛ کلاینت درگیر نمیشود
resolver → root: "Where is .com?" resolver → TLD: "Where is example.com?" resolver → auth: "A record for www.example.com?"
6. وقتی چیزی خراب میشود چه اتفاقی میافتد؟
سه حالت خرابی رایج و نحوه تشخیص آنها.
اگر ns1 و ns2 هر دو در دسترس نباشند، هیچ پرسوجوی جدیدی برای example.com قابل حل نیست. نتایجی که در کش هستند تا زمان انقضای TTL همچنان کار میکنند.
ns1.dnsprovider.com — unreachable ns2.dnsprovider.com — unreachable → SERVFAIL
سرور Authoritative تأیید میکند که این نام وجود ندارد. Resolver ممکن است این پاسخ منفی را کش کند تا از پرسوجوهای تکراری جلوگیری شود.
query: doesnotexist.example.com auth server: NXDOMAIN (negative TTL cached)
حلقههای CNAME، نبودن رکورد A برای هدف MX، یا رکوردهای NS اشتباه هرکدام بخش متفاوتی از جریان را خراب میکنند.
a.example.com → CNAME b.example.com b.example.com → CNAME a.example.com → CNAME loop / SERVFAIL
7. اهمیت جریان حل DNS در عمل
چهار حوزه عملی که این دانش بهطور مستقیم کاربرد دارد.
- ·استفاده از Resolverهای نزدیکتر / سریعتر
- ·TTL کوتاه → بهروزرسانی سریع
- ·TTL بلند → بار کمتر روی سرورها
- ·چند رکورد NS برای افزونگی
- ·چند رکورد A/AAAA برای توزیع بار
- ·ابزارهایی مثل dig، nslookup و host هر مرحله را نشان میدهند
- ·بررسی اینکه از کدام Name Serverها استفاده میشود
- ·تأیید رفتار کشینگ
- ·پیشنیاز پیادهسازی DNSSEC
- ·تشخیص Cache Poisoning
- ·شناسایی هدایتهای مخرب (Malicious Redirection)
8. جمعبندی
خلاصهای فشرده از فرایند حل DNS از بررسیهای محلی تا اتصال نهایی.
جمعبندی کوتاه
حل DNS مسیری انتهابهانتها از نام دامنه تا آدرس IP آن است. این فرایند شامل موارد زیر است:
دانشی ضروری برای: مهندسان شبکه · ادمینهای سیستم · مهندسان امنیت · توسعهدهندگان