DNS از کلمات Domain Name System اقتباس و یک پروتکل شناخته شده در عرصه شبکه های کامپیوتری خصوصا اینترنت است . از پروتکل فوق به منظور ترجمه اسامیکامپیوترهای میزبان و Domain به آدرسهای IP استفاده میگردد. زمانی که شما آدرس www.srco.ir را در مرورگر خود تایپ مینمائید ، نام فوق به یک آدرس IP و بر اساس یک درخواست خاص ( query ) که از جانب کامپیوتر شما صادر میشود، ترجمه میگردد .
تاریخچه DNS
DNS ، زمانی که اینترنت تا به این اندازه گسترش پیدا نکرده بود و صرفا در حد و اندازه یک شبکه کوچک بود، استفاده میگردید. در آن زمان ، اسامیکامپیوترهای میزبان به صورت دستی در فایلی با نام HOSTS درج میگردید . فایل فوق بر روی یک سرویس دهنده مرکزی قرار میگرفت . هر سایت و یا کامپیوتر که نیازمند ترجمه اسامیکامپیوترهای میزبان بود ، میبایست از فایل فوق استفاده مینمود. همزمان با گسترش اینترنت و افزایش تعداد کامپیوترهای میزبان ، حجم فایل فوق نیز افزایش و امکان استفاده از آن با مشکل مواجه گردید ( افزایش ترافیک شبکه ). با توجه به مسائل فوق، در سال 1984 تکنولوژی DNS معرفی گردید .
پروتکل DNS
DNS ، یک بانک اطلاعاتی توزیع شده است که بر روی ماشینهای متعددی مستقر میشود ( مشابه ریشههای یک درخت که از ریشه اصلی انشعاب میشوند) . امروزه اکثر شرکتها و موسسات دارای یک سرویس دهنده DNS کوچک در سازمان خود میباشند تا این اطمینان ایجاد گردد که کامپیوترها بدون بروز هیچگونه مشکلی، یکدیگر را پیدا مینمایند . در صورتی که از ویندوز 2000 و اکتیو دایرکتوری استفاده مینمائید، قطعا از DNS به منظور ترجمه اسامیکامپیوترها به آدرسهای IP ، استفاده میشود . شرکت مایکروسافت در ابتدا نسخه اختصاصی سرویس دهنده DNS خود را با نام ( WINS ( Windows Internet Name Service طراحی و پیاده سازی نمود . سرویس دهنده فوق مبتنی بر تکنولوژیهای قدیمیبود و از پروتکلهایی استفاده میگردید که هرگز دارای کارایی مشابه DNS نبودند. بنابراین طبیعی بود که شرکت مایکروسافت از WINS فاصله گرفته و به سمت DNS حرکت کند .
از پروتکل DNS در مواردی که کامپیوتر شما اقدام به ارسال یک درخواست مبتنی بر DNS برای یک سرویس دهنده نام به منظور یافتن آدرس Domain مینماید ، استفاده میشود .مثلا در صورتی که در مرورگر خود آدرس www.srco.ir را تایپ نمائید ، یک درخواست مبتنی بر DNS از کامپیوتر شما و به مقصد یک سرویس دهنده DNS صادر میشود . ماموریت درخواست ارسالی ، یافتن آدرس IP وب سایت سخاروش است.
پروتکل DNS و مدل مرجع OSI
پروتکل DNS معمولا از پروتکل UDP به منظور حمل داده استفاده مینماید . پروتکل UDP نسبت به TCP دارای overhead کمتری میباشد. هر اندازه overhead یک پروتکل کمتر باشد ، سرعت آن بیشتر خواهد بود. در مواردی که حمل داده با استفاده از پروتکل UDP با مشکل و یا بهتر بگوئیم خطاء مواجه گردد ، پروتکل DNS از پروتکل TCP به منظور حمل داده استفاده نموده تا این اطمینان ایجاد گردد که داده بدرستی و بدون بروز خطاء به مقصد خواهد رسید .
فرآیند ارسال یک درخواست DNS و دریافت پاسخ آن ، متناسب با نوع سیستم عامل نصب شده بر روی یک کامپیوتر است .برخی از سیستمهای عامل اجازه استفاده از پروتکل TCP برای DNS را نداده و صرفا میبایست از پروتکل UDP به منظور حمل داده استفاده شود . بدیهی است در چنین مواردی همواره این احتمال وجود خواهد داشت که با خطاهایی مواجه شده و عملا امکان ترجمه نام یک کامپیوتر و یا Domain به آدرس IP وجود نداشته باشد. پروتکل DNS از پورت 53 به منظور ارائه خدمات خود استفاده مینماید. بنابراین یک سرویس دهنده DNS به پورت 53 گوش داده و این انتظار را خواهد داشت که هر سرویس گیرندهای که تمایل به استفاده از سرویس فوق را دارد از پورت مشابه استفاده نماید . در برخی موارد ممکن است مجبور شویم از پورت دیگری استفاده نمائیم . وضعیت فوق به سیستم عامل و سرویس دهنده DNS نصب شده بر روی یک کامپیوتر بستگی دارد.
DNS
DNS مسئولیت حل مشکل اسامی کامپیوترها ( ترجمه نام به آدرس ) در یک شبکه و مسائل مرتبط با برنامه های Winsock را بر عهده دارد. به منظور شناخت برخی از مفاهیم کلیدی و اساسی DNS ، لازم است که سیستم فوق را با سیستم دیگر نامگذاری در شبکه های مایکروسافت(NetBIOS ) مقایسه نمائیم .
قبل از عرضه ویندوز 2000 تمامی شبکه های مایکروسافت از مدل NetBIOS برای نامگذاری ماشین ها و سرویس ها ی موجود بر روی شبکه استفاده می کردند. NetBIOS در سال 1983 به سفارش شرکت IBM طراحی گردید. پروتکل فوق در ابتدا بعنوان پروتکلی در سطح لایه " حمل " ایفای وظیفه می کرد.در ادامه مجموعه دستورات NetBIOS بعنوان یک اینترفیس مربوط به لایه Session نیز مطرح تا از این طریق امکان ارتباط با سایر پروتکل ها نیز فراهم گردد. NetBEUI مهمترین و رایج ترین نسخه پیاده سازی شده در این زمینه است . NetBIOS برای شیکه های کوچک محلی با یک سگمنت طراحی شده است . پروتکل فوق بصورت Broadcast Base است . سرویس گیرندگان NetBIOS می توانند سایر سرویس گیرندگان موجود در شبکه را از طریق ارسال پیامهای Broadcast به منظور شناخت و آگاهی از آدرس سخت افزاری کامپیوترهای مقصد پیدا نمایند. شکل زیر نحوه عملکرد پروتکل فوق در یک شبکه و آگاهی از آدرس سخت افزاری یک کامپیوتر را نشان می دهد. کامپیوتر ds2000 قصد ارسال اطلاعات به کامپیوتری با نام Exeter را دارد. یک پیام Broadcast برای تمامی کامپیوترهای موجود در سگمنت ارسال خواهد شد. تمامی کامپیوترهای موجود در سگمنت مکلف به بررسی پیام می باشند. کامپیوتر Exeter پس از دریافت پیام ،آدرس MAC خود را برای کامپیوتر ds2000 ارسال می نماید.
همانگونه که اشاره گردید استفاده از پروتکل فوق برای برطرف مشکل اسامی ( ترجمه نام یک کامپیوتر به آدرس فیزیکی و سخت افزاری ) صرفا" برای شبکه های محلی با ابعاد کوچک توصیه شده و در شبکه های بزرگ نظیر شبکه های اترنت با ماهیت Broadcast Based با مشکلات عدیده ای مواجه خواهیم شد.در ادامه به برخی از این مشکلات اشاره شده است .
بموازات افزایش تعداد کامپیوترهای موجود در شبکه ترافیک انتشار بسته های اطلاعاتی بشدت افزایش خواهد یافت .
پروتکل های مبتنی بر NetBIOS ( نظیر NetBEUI) دارای مکانیزمهای لازم برای روتینگ نبوده و دستورالعمل های مربوط به روتینگ در مشخصه فریم بسته های اطلاعاتی NetBIOS تعریف نشده است .
در صورتی که امکانی فراهم گردد که قابلیت روتینگ به پیامهای NetBIOS داده شود ( نظیر Overlay نمودن NetBIOS بر روی پروتکل دیگر با قابلیت روتینگ ، روترها بصورت پیش فرض بسته های NetBIOS را منتشر نخواهند کرد. ماهیت BroadCast بودن پروتکل NetBIOS یکی از دو فاکتور مهم در رابطه با محدودیت های پروتکل فوق خصوصا" در شبکه های بزرگ است . فاکتور دوم ، ساختار در نظر گرفته شده برای نحوه نامگذاری است . ساختار نامگذاری در پروتکل فوق بصورت مسطح (Flat) است .
Flat NetBios NameSpace
به منظور شناخت و درک ملموس مشکل نامگذاری مسطح در NetBIOS لازم است که در ابتدا مثال هائی در این زمینه ذکر گردد. فرض کنید هر شخص در دنیا دارای یک نام بوده و صرفا" از طریق همان نام شناخته گردد. در چنین وضعیتی اداره راهنمائی و رانندگی اقدام به صدور گواهینمامه رانندگی می نماید. هر راننده دارای یک شماره سریال خواهد شد. در صورتی که از اداره فوق سوالاتی نظیر سوالات ذیل مطرح گردد قطعا" پاسخگوئی به آنها بسادگی میسر نخواهد شد.
چند نفر با نام احمد دارای گواهینامه هستند؟
چند نفر با نام رضا دارای گواهینامه هستند؟
در چنین حالی اگر افسر اداره راهنمائی و رانندگی راننده ای را بخاطر تخلف متوقف نموده و از مرکز و بر اساس نام وی استعلام نماید که آیا " راننده ای با نام احمد قبلا" نیز مرتکب تخلف شده است یا خیر ؟" در صورتی که از طرف مرکز به وی پاسخ مثبت داده شود افسر مربوطه هیچگونه اطمینانی نخواهد داشت که راننده در مقابل آن همان احمد متخلف است که قبلا" نیز تخلف داشته است .
یکی از روش های حل مشکل فوق، ایجاد سیستمی است که مسئولیت آن ارائه نام بصورت انحصاری و غیرتکراری برای تمامی افراد در سطح دنیا باشد. در چنین وضعیتی افسر اداره راهنمائی و رانندگی در برخورد با افراد متخلف دچار مشکل نشده و همواره این اطمینان وجود خواهد داشت که اسامی بصورت منحصر بفرد استفاده شده است . در چنین سیستمی چه افراد و یا سازمانهائی مسئله عدم تکرار اسامی را کنترل و این اطمینان را بوجود خواهند آورند که اسامی بصورت تکراری در سطح دنیا وجود نخواهد داشت؟. بهرحال ساختار سیستم نامگذاری می بایست بگونه ای باشد که این اطمینان را بوجود آورد که نام انتخاب شده قبلا" در اختیار دیگری قرار داده نشده است . در عمل پیاده سازی اینچنین سیستم هائی غیر ممکن است.مثال فوق محدودیت نامگذاری بصورت مسطح را نشان می دهد.
سیستم نامگذاری بر اساس NetBIOS بصورت مسطح بوده و این بدان معنی است که هر کامپیوتر بر روی شبکه می بایست دارای یک نام متمایز از دیگران باشد. در صورتی که دو کامپیوتر موجود بر روی شبکه های مبتنی بر NetBIOS دارای اسامی یکسانی باشند پیامهای ارسالی از یک کامپیوتر به کامپیوتر دیگر که دارای چندین نمونه ( نام تکراری ) در شبکه است، می تواند باعث بروز مشکلات در شبکه و عدم رسیدن پیام ارسال شده به مقصد درست خود باشد.
اینترفیس های NetBIOS و WinSock
DNS مسائل فوق را بسادگی برطرف نموده است . سیستم فوق از یک مدل سلسله مراتبی برای نامگذاری استفاده کرده است . قبل از پرداختن به نحوه عملکرد و جزئیات سیستم DNS لازم است در ابتدا با نحوه دستیابی برنامه ها به پروتکل های شبکه و خصوصا" نحوه ارتباط آنها با پروتکل TCP/IP آشنا شویم .
برنامه های با قابلیت اجراء بر روی شبکه هائی با سیستم های عامل مایکروسافت، با استفاده از دو روش متفاوت با پروتکل TCP/IP مرتبط می گردنند.
اینترفیس سوکت های ویندوز (WinSock)
اینترفیس NetBIOS
اینترفیس های فوق یکی از مسائل اساسی در نامگذاری و ترجمه اسامی در شبکه های مبتنی بر TCP/IP را به چالش می کشانند.برنامه های نوشته شده که از اینترفیس NetBIOS استفاده می نمایند از نام کامپیوتر مقصد بعنوان " نقطه آخر" برای ارتباطات استفاده می نمایند در چنین مواردی برنامه های NetBIOS صرفا" مراقبت های لازم را در خصوص نام کامپیوتر مقصد به منظور ایجاد یک session انجام خواهند داد. در حالیکه پروتکل های TCP/IP )IP,TCP) هیچگونه آگاهی از اسامی کامپیوترهای NetBIOS نداشته و در تمامی موارد مراقبت های لازم را انجام نخواهند داد.