DNS: دفترچه تلفن اینترنت
DNS اسمی که تایپ میکنی رو تبدیل میکنه به همون آدرسی که دستگاهها واقعاً بهش نیاز دارن، توی چند تا پرسش سریع که هیچوقت نمیبینیش. یاد میگیری چرا اون جواب یه مدت نگه داشته میشه، و معمولاً یعنی چی وقتی یه سایت برای تو باز نمیشه ولی برای یه دوست باز میشه.
اسم در برابر عدد
تو با اسم فکر میکنی، شبکه با عدد
هر دستگاهی که روی اینترنت حرف میزنه یه آدرس داره، یه عدد مثل 203.0.113.5. روتر و سرورها دقیقاً با همین عدد همدیگه رو پیدا میکنن؛ اسم براشون هیچ معنیای نداره. اسمها برای خود تو هستن، که مجبور نباشی برای هر سایتی که دوست داری یه رشته عدد حفظ کنی. DNS، یعنی سیستم اسم دامنه، همون سرویسیه که یه اسم مثل example.com رو تبدیل میکنه به آدرسی که پشتشه.
هیچکس برای باز کردن یه سایت 203.0.113.5 رو توی گوشیش نمینویسه. همه example.com رو مینویسن، و DNS بیسر و صدا همون عددی که صفحه واقعاً توش هست رو به گوشی میده.
خودت رو امتحان کن
سارا با تایپ کردن فقط اسم، example.com رو توی گوشیش باز میکنه. چرا آخرش گوشیش به یه عددی مثل 203.0.113.5 نیاز پیدا میکنه؟
- چون اسم و عدد دقیقاً یه چیزن که فقط دو جور نوشته شدن، و هر کدوم بهتنهایی هم کار میکنه
- چون ماشینها همدیگه رو با آدرس پیدا میکنن نه با اسم، پس اول باید اسم رو به آدرس تبدیل کرد
- چون تایپ کردن عدد برای کامپیوتر سریعتر از اسمه
- چون گوشیش از قبل آدرس همه سایتهای دنیا رو ذخیره کرده، برای احتیاط
جواب رو ببین
چون ماشینها همدیگه رو با آدرس پیدا میکنن نه با اسم، پس اول باید اسم رو به آدرس تبدیل کرد
درسته. اسم برای آدمه. روتر و سرورها فقط بلدن با آدرس همدیگه رو پیدا کنن، پس قبل از هر اتصالی یه نفر باید اون آدرس رو پیدا کنه.
واسطهی کار
یه resolver این پرسیدن رو برات انجام میده
این جستوجو رو گوشیت به تنهایی انجام نمیده. این کار سپرده میشه به یه resolver، یه سرور که دقیقاً کارش همینه، تقریباً همیشه هم توسط شرکت اینترنتت اجرا میشه یا توی تنظیمات شبکهی گوشیت تعریف شده. تو یه اسم بهش میدی؛ اون آدرس رو پیدا میکنه، با چیزی که از قبل یادشه یا، وقتی یادش نیست، با پرسیدن از چند تا سرور دیگه بهجای تو؛ درست مثل وقتی که برای پیدا کردن یه دفتر توی یه ساختمون بزرگ اول از لابی میپرسی، بعد یه طبقه، بعد یه بخش، و هر کدوم فقط همون تیکهی کوچیک خودشون رو بلدن.
تو هیچوقت کار resolver رو نمیبینی. فقط example.com رو مینویسی و توی یه چشمبههمزدن، گوشیت از قبل یه عدد برای وصل شدن داره.
خودت رو امتحان کن
گوشی نگار همیشه میتونه آدرس یه اسمی رو که قبلاً هیچوقت نپرسیده، بدون تماس با هیچی بیرون از خودش پیدا کنه.
جواب رو ببین
نادرست
غلطه. برای اسمی که تازگی جستوجو نشده، گوشی سؤال رو میده به یه resolver، و اون از سرورهای دیگهی توی شبکه میپرسه. هیچ بخشی از این جستوجو تنهایی توی خود گوشی اتفاق نمیافته.
قدمبهقدم ببین

گوشی از resolverـش دربارهی example.com میپرسه گوشیت فقط اسم example.com رو میدونه، پس سؤال رو میفرسته پیش resolver، که اینجا با برچسب DNS نشون داده شده و معمولاً یا شرکت اینترنتت اجراش میکنه یا توی تنظیمات گوشیت مشخص شده. سمت راست سهتا سرور هستن که ممکنه بهشون نیاز پیدا کنه: سرور ریشه، سرورهای .com، و سرور نام خود example.com؛ همه هنوز کمرنگن چون هنوز از هیچکدوم چیزی پرسیده نشده.

resolver از سرور ریشه میپرسه، اون هم میگه برو سراغ .com resolver هم آدرس example.com رو بلد نیست، پس اولین جایی که سراغش میره سرور ریشهست، که حالا روشن شده. سرور ریشه هیچ آدرسی پس نمیده؛ فقط بلده کدوم سرورها مسئول همهی اسمهای .com هستن، و جوابش، «.com»، resolver رو میفرسته سراغ اون سرورها.

سرور .com میگه برو سراغ سرور نامِ خود example.com این بار resolver از سرور .com میپرسه. اون سرور هم آدرس example.com رو نداره؛ اسم تنها سروری که این آدرس رو داره، یعنی سرور نام خود example.com، رو پس میده که اینجا با ns نشون داده شده. سرور ریشه، که از مرحلهی قبل هنوز روشنه، سمت راست همچنان دیده میشه.

سرور خود example.com جواب میده، و ساعت شروع به کار میکنه بالاخره سرور نام خود example.com با آدرس واقعی جواب میده، 203.0.113.5، که با رنگ نارنجی نشون داده شده، و resolver اون رو مستقیم به گوشی پس میده. اون ساعت کوچیک بالای resolver همون TTLـشه: یعنی چقدر این جواب رو نگه میداره قبل از اینکه مجبور بشه دوباره بپرسه.
خودت رو امتحان کن
طبق مسیری که تازه دیدی، کدوم سرور واقعاً آدرس دقیق example.com رو بلده؟
- سرور ریشه
- سرور .com
- سرور نامِ خود example.com
- resolverِ گوشیت
جواب رو ببین
سرور نامِ خود example.com
درسته. سرور ریشه فقط نشون میده .com کجاست، و سرور .com فقط نشون میده سرور نام خود example.com کجاست. اون سرور آخری واقعاً آدرس رو نگه داشته.
چرا انگار آنیه
بیشتر جستوجوها اصلاً از resolver بیرون نمیرن
اون ساعتی که دیدی همون TTLِ جوابه، یعنی چقدر عمر میکنه. resolver اون آدرس رو یه مدت نگه میداره، از چند دقیقه تا تقریباً یه روز بسته به سایت، و مستقیم به نفر بعدی که میپرسه میده، بدون اینکه دوباره کل مسیر ریشه، بعد .com، بعد سرور نام رو طی کنه. این یکی از دلیلهای اصلیه که گشتن روزمره توی اینترنت انگار آنیه: جستوجوی کامل بهندرت اتفاق میافته، و یه جواب ذخیرهشده جواب بقیه رو هم توی اون فاصله میده.
هزاران نفر میتونن resolverِ یه شرکت اینترنتی رو با هم شریک باشن. اولین نفری که اون صبح example.com رو باز میکنه هزینهی کل مسیر رو میده؛ همهی بعدیها، یه مدت بعدش، جواب ذخیرهشده رو توی یه لحظه میگیرن.
خودت رو امتحان کن
هر بخش از این جستوجو رو به کارش وصل کن
جواب رو ببین
- سرور ریشه → فقط بلده کدوم سرورها مسئول اسمهای .comـن
- سرور .com → فقط بلده سرور نام خود example.com کجاست
- سرور نام خود example.com → واقعاً آدرس اصلی رو نگه داشته
- TTL → اینکه resolver چقدر یه جواب رو نگه میداره قبل از پرسیدن دوباره
خودت رو امتحان کن
- example.com تازه به یه سرور جدید منتقل شده. امید، که یه ساعت پیش سایت رو دیده بود، الان صفحه رو دوباره لود میکنه و بازم باز نمیشه.
- همون لحظه، یه دوستش که با یه شرکت اینترنتی کاملاً متفاوت وصله، برای اولین بار امروز example.com رو باز میکنه و بدون مشکل باز میشه.
محتملترین دلیل اینکه این دو نفر الان نتیجهی متفاوت میبینن چیه؟
- دوست امید گوشی سریعتری داره
- resolverِ امید هنوز، توی بازهی TTLـش، آدرس قدیمی از قبل جابهجایی رو نگه داشته، ولی resolverِ دوستش تازه پرسیده و آدرس جدید رو گرفته
- example.com فقط توی بعضی کشورها کار میکنه
- امید بار دوم آدرس رو غلط تایپ کرده
جواب رو ببین
resolverِ امید هنوز، توی بازهی TTLـش، آدرس قدیمی از قبل جابهجایی رو نگه داشته، ولی resolverِ دوستش تازه پرسیده و آدرس جدید رو گرفته
دقیقاً. resolverهای مختلف ممکنه یه مدت بعد از یه تغییر، جوابهای ذخیرهشدهی متفاوتی نگه دارن، هر کدوم هم توی TTL خودشون هنوز معتبرن. این فاصله، نه یه سایت خراب، معمولاً معنی «برای دوستم کار میکنه ولی برای من نه» همینه.
مرور درس
- DNS یه اسم مثل example.com رو تبدیل میکنه به آدرسی مثل 203.0.113.5 که دستگاهها واقعاً باهاش وصل میشن.
- یه resolver، معمولاً مال شرکت اینترنتت یا خود گوشیت، این پرسیدن رو بهجای تو انجام میده.
- برای اسمی که تازگی جستوجو نشده، resolver قدمبهقدم پایین میره: اول ریشه، بعد .com، بعد سرور نام خود سایت.
- هر جواب یه مدت نگه داشته میشه، همون TTLش، برای همین بیشتر جستوجوها این مسیر رو دوباره طی نمیکنن.
- «برای دوستم کار میکنه ولی برای من نه» اغلب فقط یعنی دو تا resolver یهکم توی تازگیِ جواب ذخیرهشدهشون همزمان نیستن.