Domain Name System… هو بمثابة دليل الهاتف بالنسبة لمواقع الإنترنت. دليل الهاتف يجمع بين اسم الشخص ورقم هاتفه، أما DNS فيجمع بين اسم النطاق Domain Name وعنوان IP الخاص به.
قم بفتح المتصفح لديك وأكتب العنوان التالي http://209.85.135.104
ثم أسماء النطاقات العادية domain التي يختارها المستخدمون ويحجزونها من خلال الجهات المعتمدة.
أخيراً، هناك النطاقات الفرعية sub-domains أو hosts وهي نطاقات متفرعة عن السابقة يستطيع المستخدمون تعريفها بحرّية حسب حاجتهم. ويمكن إضافة حتى 127 نطاق فرعي في التسلسل الهيكلي. بمعنى:
sub127.sub126 …….. sub2.sub1.domain.com.
العدد الهائل من سجلات DNS يحتّم أن تكون قاعدة بياناته غير مركزية، بل موزعة. لأن من المستحيل على أي سيرفر أو حتى مجموعة محدودة من السيرفرات أن تحمل الملايين من السجلات وتخدم جميع طلبات تحويل العناوين التي قد تصلها. لذلك، عملياً تتوزع أجزاء قاعدة بيانات DNS على آلاف السيرفرات على إتساع العالم وكل منها يجيب على الطلبات التي تصله إن استطاع تلبيتها، وإلا فإنه يشير إلى سيرفر آخر من الممكن أن يلبي المطلوب.. وفيما يلي توضيح لذلك.
يبحث DNS عن العنوان إن كان مخزّنا لديه في قاعدة بياناته المحلية، أو في الـ cache. فإن وجده يرسل رداً إلى الجهاز المستعلم… وبذلك ينتهي الأمر.
(cache: هي العناوين التي سبق للسيرفر أن استعلم عنها، ويقوم بالإحتفاظ بها لفترة محددة بهدف الرجوع إليها مباشرة إذا طُلِبت منه مرة أخرى، دون الحاجة إلى إعادة الاستعلام عنها بطريقة recursion كما سنرى في الخطوات اللاحقة).
إذا لم تتواجد المعلومات المطلوبة لدى السيرفر المحلي، يعمل هو على الإستعلام عنها في خطوات متسلسلة تسمى Recursion. حيث يقوم في كل خطوة بالاستعلام عن جزء محدد من العنوان.
Recursion
يبدأ السيرفر المحلي عملية recursion إبتداءاً بأعلى مستوى في التسلسل أي root. حيث يقوم بإرسال استعلام لأحد سيرفرات root name (والتي تكون معرفة عليه بشكل تلقائي)، وهذا استعلام عن أول جزء في العنوان المطلوب أي “com.”.
قم بفتح المتصفح لديك وأكتب العنوان التالي http://209.85.135.104
ماذا سيحدث؟ ستجد أنه يقودك إلى موقع Google.
كما نعلم، الأصل في عنونة الإنترنت بكل ما تشمله من خدمات، تتم باستخدام عناوين IP. وتخيّل لو كان عليك حفظ العنوان السابق وكتابته كلما أردت الدخول لموقع جوجل… كم سيكون صعباً أو حتى مستحيلاً أن نتعامل مع عشرات أو مئات العناوين التي نعرفها بهذا الشكل المجرد. أو تخيّل مثلاً أن تكون قائمة المواقع المفضلة لديك هي عبارة عن تسلسل “فظيع” من الأرقام… من هنا نشأت الحاجة لنظام يحوّل العناوين إلى أسماء واضحة ومقروءة ومفهومة بالنسبة لنا، أو ما يعرف بـِ Name Resolution. وهذا النظام هو بروتوكول DNS.
إذن يعمل DNS على إنشاء قاعدة بيانات تحوي سجلات تربط عناوين IP بالأسماء المعبرة عنها، وذلك بشكل بنية هيكلية Hierarchical. كما في الشكل التالي:
المستوى الأعلى هو الجذر root: ويمثَّل بنقطة. لكنها -كما نعرف- لا تُكتب عادة في أسماء النطاقات.
بعد ذلك يأتي Top-Level Domains أي المستويات العليا من النطاقات. مثل com, net, org, edu بالإضافة إلى النطاقات الدالة على الدول مثل sa, us, ps, uk.
كما نعلم، الأصل في عنونة الإنترنت بكل ما تشمله من خدمات، تتم باستخدام عناوين IP. وتخيّل لو كان عليك حفظ العنوان السابق وكتابته كلما أردت الدخول لموقع جوجل… كم سيكون صعباً أو حتى مستحيلاً أن نتعامل مع عشرات أو مئات العناوين التي نعرفها بهذا الشكل المجرد. أو تخيّل مثلاً أن تكون قائمة المواقع المفضلة لديك هي عبارة عن تسلسل “فظيع” من الأرقام… من هنا نشأت الحاجة لنظام يحوّل العناوين إلى أسماء واضحة ومقروءة ومفهومة بالنسبة لنا، أو ما يعرف بـِ Name Resolution. وهذا النظام هو بروتوكول DNS.
إذن يعمل DNS على إنشاء قاعدة بيانات تحوي سجلات تربط عناوين IP بالأسماء المعبرة عنها، وذلك بشكل بنية هيكلية Hierarchical. كما في الشكل التالي:
المستوى الأعلى هو الجذر root: ويمثَّل بنقطة. لكنها -كما نعرف- لا تُكتب عادة في أسماء النطاقات.
بعد ذلك يأتي Top-Level Domains أي المستويات العليا من النطاقات. مثل com, net, org, edu بالإضافة إلى النطاقات الدالة على الدول مثل sa, us, ps, uk.
ثم أسماء النطاقات العادية domain التي يختارها المستخدمون ويحجزونها من خلال الجهات المعتمدة.
أخيراً، هناك النطاقات الفرعية sub-domains أو hosts وهي نطاقات متفرعة عن السابقة يستطيع المستخدمون تعريفها بحرّية حسب حاجتهم. ويمكن إضافة حتى 127 نطاق فرعي في التسلسل الهيكلي. بمعنى:
sub127.sub126 …….. sub2.sub1.domain.com.
العدد الهائل من سجلات DNS يحتّم أن تكون قاعدة بياناته غير مركزية، بل موزعة. لأن من المستحيل على أي سيرفر أو حتى مجموعة محدودة من السيرفرات أن تحمل الملايين من السجلات وتخدم جميع طلبات تحويل العناوين التي قد تصلها. لذلك، عملياً تتوزع أجزاء قاعدة بيانات DNS على آلاف السيرفرات على إتساع العالم وكل منها يجيب على الطلبات التي تصله إن استطاع تلبيتها، وإلا فإنه يشير إلى سيرفر آخر من الممكن أن يلبي المطلوب.. وفيما يلي توضيح لذلك.
كيف يعمل DNS ؟
عندما تريد الوصول إلى أحد المواقع ليكن مثلاً موقع http://arabes1.com يرسل المتصفح استعلاماً لمعرفة عنوان IP إلى سيرفر DNS المعرّف على جهازك…(سندعوه السيرفر المحلي).يبحث DNS عن العنوان إن كان مخزّنا لديه في قاعدة بياناته المحلية، أو في الـ cache. فإن وجده يرسل رداً إلى الجهاز المستعلم… وبذلك ينتهي الأمر.
(cache: هي العناوين التي سبق للسيرفر أن استعلم عنها، ويقوم بالإحتفاظ بها لفترة محددة بهدف الرجوع إليها مباشرة إذا طُلِبت منه مرة أخرى، دون الحاجة إلى إعادة الاستعلام عنها بطريقة recursion كما سنرى في الخطوات اللاحقة).
إذا لم تتواجد المعلومات المطلوبة لدى السيرفر المحلي، يعمل هو على الإستعلام عنها في خطوات متسلسلة تسمى Recursion. حيث يقوم في كل خطوة بالاستعلام عن جزء محدد من العنوان.
Recursion
يبدأ السيرفر المحلي عملية recursion إبتداءاً بأعلى مستوى في التسلسل أي root. حيث يقوم بإرسال استعلام لأحد سيرفرات root name (والتي تكون معرفة عليه بشكل تلقائي)، وهذا استعلام عن أول جزء في العنوان المطلوب أي “com.”.
يرد root server على الاستعلام بإرسال قائمة بسيرفرات DNS المخوّلة بالمعلومات عن نطاق TLD المطلوب، وبالتحديد “com.”
يعيد السيرفر المحلي عملية الإستعلام إلى واحد من سيرفرات TLD التي وصلته في القائمة. بالطبع، هذه المرة يستعلم عن wordpress.com.
بدوره يقوم سيرفر TLD بإرسال عنوان السيرفر المخوّل بالنطاق blogspot.com إلى السيرفر المحلي.
يرسل السيرفر المحلي إلى السيرفر المخوّل بـِ blogspot.com استعلاماً عن العنوان http://arabes1.com/.
مسك الختام، وهذه المرة من خلال وصول رد بعنوان IP الخاص بالموقع المطلوب.
وهذا الشكل يلخص العملية برمتها:
نستطيع من خلال عملية Recursion أن نفهم جيداً فائدة البنية الهيكلية لـِ DNS:
أولاً: تتيح له إجراء عمليات الإستعلام على عدة مستويات متسلسلة. وبالتالي تقليص عدد السيرفرات التي يحتاج للإتصال بها في كل مرحلة.
ثانياً: ما كنت قد ذكرته أعلاه، أي تخزين قاعدة البيانات بشكل موزع، وبالتالي تخفيف عملية المعالجة وتوزيعها على مجموعات السيرفرات في كل مستوى.
يعيد السيرفر المحلي عملية الإستعلام إلى واحد من سيرفرات TLD التي وصلته في القائمة. بالطبع، هذه المرة يستعلم عن wordpress.com.
بدوره يقوم سيرفر TLD بإرسال عنوان السيرفر المخوّل بالنطاق blogspot.com إلى السيرفر المحلي.
يرسل السيرفر المحلي إلى السيرفر المخوّل بـِ blogspot.com استعلاماً عن العنوان http://arabes1.com/.
مسك الختام، وهذه المرة من خلال وصول رد بعنوان IP الخاص بالموقع المطلوب.
وهذا الشكل يلخص العملية برمتها:
نستطيع من خلال عملية Recursion أن نفهم جيداً فائدة البنية الهيكلية لـِ DNS:
أولاً: تتيح له إجراء عمليات الإستعلام على عدة مستويات متسلسلة. وبالتالي تقليص عدد السيرفرات التي يحتاج للإتصال بها في كل مرحلة.
ثانياً: ما كنت قد ذكرته أعلاه، أي تخزين قاعدة البيانات بشكل موزع، وبالتالي تخفيف عملية المعالجة وتوزيعها على مجموعات السيرفرات في كل مستوى.