مفاهيم في الشبكات

theprince

المدير العام
طاقم الإدارة
إذا كنت مبرمجاً، فإن هذا لا يعني بالضرورة أنك مبرمج شبكات أيضاً. مبرمج قواعد البيانات يحتاج بجانب البرمجة إلى معرفة المزيد عن مبادئ قواعد البيانات، ومبرمج الرسوميات يحتاج إلى معرفة المزيد عن عمل الرسوميات في الحاسوب، كما أن مبرمج الشبكات يحتاج إلى معرفة المزيد عن الشبكات. ليس هذا فحسب، بل إن هناك في العادة إلى جانب المبادئ، أدوات ومكتبات برمجية خاصة عليك أن تجيد التعامل معها في كل مجال. بالنسبة للشبكات، مفهوم المقابس والمكتبات التي تحقق هذا المفهوم هي التي تمكن المبرمج من التعامل مع الشبكات. في هذه السلسلة المبسّطة من ثلاث مقالات بإذن الله، أستعرض معك المفاهيم الأساسية للشبكات وللمقابس، على أمل أن نستعرض أكثر تفاصيل برمجة المقابس في مقالات أخرى إن شاء الله تعالى.
المفهوم الأساسي


المفهوم الأساسي للشبكة هو ربط أكثر من جهاز واحد بغرض مشاركة الموارد (موارد حسابية computational ، تخزينية storage، أو طرفيات peripheral) والتواصل communication. تقليدياً ، كانت الأجهزة عبارة عن حواسيب (تسمى hosts) وراوترات، ووسيلة الاتصال هي الأسلاك. أما الآن، فمن الممكن لأية آلة مع بعض الذكاء المدمج (معالج)، أن يكون لها عنوان شبكة (مثل الطابعات مثلاً)، وأن تتبادل الاتصال مع جميع الأنواع الأخرى من الأجهزة، من خلال وسائط من جميع الأنواع، سلكية أو لاسلكية.
التركيب الفيزيائي للشبكة physical topology، وأنواع وسائط الاتصال communication media، تقع في دائرة اهتمام مصممي وفنيي الشبكات. ما يقلق مديري الشبكات، والمبرمجين (بما فيهم الهاكرز) أكثر من ذلك، هو الجانب الآخر من الشبكات: جانب البرمجيات.
دور البروتوكولات
الاتصالات بين أجهزة الحاسوب هي في الأساس تدفق إشارات. باستخدام نفس التمثيل للإشارات ضمن الحاسوب الواحد، فإن هذه الإشارات تمثّل أيضاً باعتبارها تدفق سيل من البتات bit (البت الواحد: إشارة تحتمل قيمتين فقط)، والتي غالبا ما يتم التعامل معها في مجموعات من ثمانية، كل مجموعة منها تسمى بايتاً byte. لذلك، فإن الاتصال بين طرفين (حاسوبين) هو في نهاية المطاف سلسلة من البايتات. العديد من الوحدات ضمن كل طرف قد تتعامل مع هذه السلاسل من البايتات، ابتداءً من البرامج المثبتة على كروت واجهة الشبكة، وحتى الوحدات البرمجية المكوّنة لنظام تشغيل الحاسوب ، أو تطبيقات المستخدمين. المشكلة هي أن هذا السيل المتدفق من سلاسل البايتات عبر وسائط النقل يمكن أن يعني أي شيء لتلك الوحدات؛ ودون اتفاق واضح محدد سلفاً على معنى هذه السلاسل، فإنها ليست أكثر من قمامة إلكترونية. من أجل هذا، اتفق الناس علي تفسيرات مشتركة للبايتات المتبادلة بينهم، وأخذ ذلك شكل مجموعة من القواعد والاصطلاحات التي تتحكم في الاتصال بين الأجهزة على الشبكات. تسمى هذه القواعد، بطبيعة الحال، بروتوكولات الشبكات.
تتطلب البروتوكولات أن يتم تبادل البايتات في كتل تسمى رسائل messages. تحدد البروتوكولات بدقة كلاً من تركيب أنماط البايتات في الرسائل(الـsyntax)، ويشار اليها عادة باسم تنسيقات الرسالة (message format)، بالإضافة إلى دلالات هذه التنسيقات (الـsemantics)؛ أي معنى كل جزء من الأجزاء المختلفة لتلك الرسائل، على افتراض أنه ستكون هناك حاجة إلى عدة أجزاء في كل رسالة متبادلة من أجل التحكم الكامل في الاتصال بين الأطراف المختلفة. أيضاً ، تتحكم البروتوكولات في تزامن الاتصال، ويعني ذلك التأكد من أن هناك توافقاً بين معدلات وتوقيت الإرسال والاستقبال بين كل طرفين. وعلى المستويات الأدنى، فيما يتعلق بأجهزة التشبيك (العتاد الصلب hardware)، فإن هناك حاجة إلى بروتوكولات للسيطرة على توقيت الإشارات المرسلة، وغيرها من المواصفات الكهربائية والميكانيكية للإشارات ولأجهزة الشبكات.
على الرغم من أن عدة مجموعات من هذه البروتوكولات قد أتت من جهات صناعية وعسكرية على مر الوقت، فإن مجموعة واحدة (تسمى مجموعة البروتوكولات المترابطة عادة بكومة stack أو suit) كانت تتمتع بكونها قياسية منذ فترة طويلة، ومطبّقة على نطاق واسع، هذا بالإضافة إلى متانة تصميمها وسلامته (أثبت الوقت ذلك فيما بعد)، مما رشّحها لأن يتم اختيارها كمجموعة بروتوكولات الإنترنت. تلك هي مجموعة بروتوكولات TCP/IP.
مثل كل شيء إذا لم يكن عتاداً صلباً في أجهزة الحاسوب، فإن بروتوكولات الشبكات تنفّذ أساساً كوحدات برمجية، إما في تعريف كرت الشبكة، وإما في نظام التشغيل، وكذلك في تطبيقات المستخدم. إذا أراد طرف أن يتواصل مع طرف آخر باستخدام مجموعة معينة من البروتوكولات، يجب أن تكون لديه البرامج المناسبة التي تمثل هذه المجموعة من البروتوكولات. من هذا يمكن أن تستنتج أن البرمجيات التي تمثّل بروتوكولات TCP/IP مثبتّة على كل جهاز متصل بشبكة الإنترنت (وإلا لم يكن متصلاً بشبكة الإنترنت، لأنه غير قادر على التفاهم مع بقية الأطراف)، وهذه البروتوكولات مدعومة حتى في أنظمة التشغيل التي تقوم بتطبيق بروتوكولات من مجموعات أخرى، مثل نتوير NetWare. تستخدم TCP/IP كذلك في شبكات أخرى، مثل الشبكات المحلية المعزولة، وهذا ما يجعل الدراسة والتجربيب مع بروتوكولاتها ممكناً، سواء داخل مختبر محلي مستقل، أو عبر الشبكة العالمية.
مفهوم الطبقات

كما ذكرت في الفقرات أعلاه، نحتاج عادة إلى البروتوكولات في شكل مجموعات (لا يمكن أن يكفي بروتوكول واحد لإتمام عمليات التواصل بين الأجهزة)، ومجموعة البروتوكولات التي تستخدم معاً لإدارة الاتصالات عبر شبكة اتصال تسمى protocol suit أو protocol stack. الحاجة إلى عدة بروتوكولات تأتي من حقيقة أن سلاسل البايتات المتبادلة في كل رسالة بين نقطتي نهاية، تتعلق بكائنات أو وحدات مختلفة في كل طرف. ليست كل البايتات في رسالة تحمل المحتوى الفعلي الذي يهم المستخدم النهائي عند كل طرف، إذ أن هناك حاجة إلى بعض هذه الباياتات من أجل توفير بعض الوظائف الأساسية لجعل التواصل ممكناً (في الحقيقة، هناك أنواع من الرسائل المتبادلة لا تحوي على الإطلاق أي بيانات تهم المستخدم مباشرة، وإنما تستخدم في تشغيل الشبكة). هذه الوظائف تشمل التزامن synchronization، والعنونة addressing، والكشف عن أخطاء الإرسال وربما تصحيحها error detection and correction، والتحكم في التدفق flow control (هذا يعني أساساً عدم السماح لمرسل سريع بغمر مستقبل بطيء بالبايتات المرسلة)، التوجيه routing (توجيه الرسائل من جهاز إلى آخر حتى تصل إلى الجهاز المقصود كوجهة والذي قد يبعد عن الجهاز المصدر عدة خطوات)، التحكم في الازدحام congestion control (المقصود هو ازدحام الرسائل في مسار واحد من عدة مسارات محتملة مما يستدعي اكتشاف هذا الاختناق ومعالجته)، والأمن security، وغيرها. ويتم تنفيذ العديد من هذه المهام على أكثر من مستوى واحد من قبل أكثر من كائن واحد، في كل من طرفي الاتصال. لأن الأجزاء التي تحقق هذه الوظائف ضمن الرسائل المتبادلة لا تمثّل المحتوى النهائي الذي يستقبله المستخدم، فإنها تسمى مجتمعة بالأعباء الإضافية overhead.
باتباع القاعدة الذهبية القديمة في علوم الحاسب الآلي، فرّق تسد، جزء تسلسل البايتات الذي يمثل هذه الأعباء الإضافية يقسّم إلى عدة أجزاء، وكل جزء يستقبل بواسطة كائن أو وحدة معينة داخل أحد طرفي الاتصال، لديه اهتمام بالوظيفة المقدمة من هذا الجزء. لذا، فإن عدة كائنات في أحد الطرفين تساهم في إرسال كل سلسلة بايتات (رسالة)، ويتم استقبال مساهمات كل كائن من قبل كائنات مماثلة في الجانب الآخر، لأن كلاً منها يتحمل مسؤولية الوظيفة نفسها في كل طرف، وكلاً منها سوف تستخدم نفس البروتوكول للاتصال مع نظيره، ومن هنا تتضح الحاجة إلى بروتوكولات متعددة في عملية الاتصال ككل. أمثلة على الكائنات التي تشارك في هذه العملية هي تعريف جهاز واجهة الشبكة (كرت الشبكة)، وعدة وحدات من نظام التشغيل، وغيرها من وحدات التطبيق الذي يعمل عليه المستخدم. من الواضح في هذه الأمثلة أن وظائف الاتصال مقسمة على كائنات ابتداءً من مستوى منخفض، بالقرب من وسائط الاتصال المادية (مستوى الآلة)، حتى تصل إلى مستوى رفيع، بالقرب من المستخدم النهائي للاتصال. كل كائن في المستويات الدنيا يخفي التعقيدات التي ينطوي عليها توفير وظيفته الخاصة من جميع الكائنات الأخرى في المستويات الأعلى، وتقدم خدماتها إلى الكائن الذي يقع منطقياً فوقها مباشرةً، من خلال واجهة واضحة. هذه الواجهة عبارة عن استدعاءات دوال يقوم بها الكائن الذي يطلب وظيفة ما (خدمة) من الكائن الذي يقع أسفل منه في التقسيم المنطقي للكائنات، عادة مع بعض البارامترات (تذكّر أن كل عمل البروتوكولات في النهاية هو عبارة عن برامج مكونة من دوال كما تفعل ذلك في أي برمجة).
في هذا السياق، كل مستوى يعدّ طبقة، ويتم تقسيم وظائف الاتصالات كلها إلى طبقات، كل واحدة منها هي المعنية بمجموعة معينة من المهام، وتستفيد من الخدمات التي تقدمها الطبقة تحتها، أو تقدم خدماتها إلى الطبقة أعلاها. ولأن عدة مهام يتم تعيينها لكل طبقة، فإنه من الممكن أن نجد عدداً من البروتوكولات المختلفة تعمل في كل طبقة. يوضح الشكل رقم 1 مفهوم طبقات الشبكة، والكائنات المتماثلة أو النظائر أو الأنداد peers، والواجهات بين كل طبقة وأخرى interfaces، والبروتوكولات، في سياق نموذج TCP/IP، حيث تقسم البروتوكولات تقليدياً إلى أربع طبقات: طبقة الوصول إلى الشبكة network access، الشبكة inter-network، والنقل transport، وطبقة التطبيقات applications، على الترتيب من المستويات الأدنى إلى المستويات العليا.

55.png
 

theprince

المدير العام
طاقم الإدارة
دور رؤوس البروتوكولات Protocols Headers


يمكن تصوير مفهوم الطبقات بسهولة باستخدام الصور والأشكال، ولكن هناك حاجة إلى وسيلة لتطبيق هذا المفهوم في الأسلاك (أو على قناة لاسلكية). كما لوحظ سابقاً، العبء الإضافي overhead من كل رسالة بين طرفين على الشبكة يقسّم إلى عدة أجزاء (راجع من فضلك المقالة السابقة)، كل جزء يخصّ كائناً معيناً في كلا الطرفين، وينتمي إلى طبقة محددة. كل طبقة مسؤولة عن إضافة ما يعنيها من الأعباء الإضافية إلى الرسالة الصادرة عند الإرسال (في شكل عدد محدد من البايتات بالطبع). تضاف هذه الأجزاء من الحمل عادة في بداية الرسالة المنقولة، ولذلك تسمى برأس الرسالة header. الرؤوس التي تلحقها كل طبقة بالرسالة، على طول الطريق من الطبقات العليا وصولاً إلى الطبقات السفلى، هي في الواقع تمثل بروتوكولات تلك الطبقات؛ وهكذا عندما تنطلق الرسالة في الأسلاك (وسيطة النقل الفيزيائية)، فإن الطبقات المنطقية التي تكلمنا عنها سابقاً هي في الواقع متجسدة في أجزاء الرسالة التي تمثل العبء الإضافي، وكل جزء من هذا العبء هو في الحقيقة رأس تم إلحاقه من قبل طبقة محددة. ترتيب الرؤوس في الرسالة يحدد ترتيب الطبقات التي أضافت هذه الرؤوس، ويتم فصله من قبل الطبقات النظيرة على الطرف الآخر، انطلاقاً من الطبقات السفلى حتى تصل الرسالة إلى الطبقات العليا في هذا الطرف. عندما تستخرج كل طبقة في الطرف المستقبل ما يخصها من رأس، فإنها تستخدم معلومات البروتوكول التي يحويها من أجل أداء وظيفتها. لأن كل طبقة تضيف رأس البروتوكول الذي يخصها على التوالي، يبدو الأمر كما لو أنه يتم تغليف البروتوكولات العليا داخل البروتوكولات الأدنى. الشكل رقم 2 يصور هذه الفكرة فيما يتعلق ببروتوكولات TCP/IP، مع بروتوكولات مثال من كل طبقة.
54.png

دلالة الشكل أعلاه هي أن جميع المعلومات المتعلقة بروتوكول معين تتلخص في الرأس الذي يخص ذلك البروتوكول. الفهم الجيد لتركيبة هذه الرؤوس، ووظيفة كل جزء منها (ويشار إليها بالحقول)، أمر ضروري من أجل فهم جيد لوظائف البروتوكولات المختلفة، ومن ثمّ وظيفة الشبكة (وكذلك من أجل فهم مختلف التقنيات التي قد تستخدم في كسر أمن الشبكات، لمن كان مهتماً). الوصف التفصيلي لهذه المعلومات متوفر في أدبيات الشبكات بشكل عام، ولكنه متركز بشكل خاص في وثائق رسمية للمعايير أو المقاييس standards، ويشار إليها باسم طلبات للتعليق Request For Comments. الاسم المختصر الأكثر شيوعاً (والأبعد عن غرابة الترجمة، ولذلك سنستخدمه إن شاء الله)، هو RFCs. المزيد من المعلومات حول مستندات RFC ومصادرها بعد هنيهة في هذا المقال.
أود أن أشير هنا إلى أن نظريات بروتوكولات التشبيك ومفاهيم الطبقات، ومختلف النماذج (بخلاف TCP/IP) مفصّل في عدد كبير من كتب شبكات الحاسوب، بعض هذه العناوين المعروفة، التي تستخدم ككتب text books في الجامعات:​
1. Tanenbaum Andrew S. 2003. Computer Networks, Fourth Edition. New Jersey: Pearson Education, Inc.
2. Stallings, William. 2007. Data and Computer Communications, Eighth Edition. New Jersey: Pearson Prentice Hall.
3. Forouzan, Behrouz A. 2007. Data Communications and Networking, Fourth Edition. New York: McGraw-Hill Companies Inc.
مستندات طلبات التعليقات RFCs
وعلى الرغم من أن بروتوكولات TCP/IPلا يخلو تقريباً كتاب في الشبكات من ذكرها وشرحها، تظل المرجعية القياسية الأكثر شمولاً وموثوقية لهذه البروتوكولات، هي مجموعة من الوثائق، متاحة للجميع في الإنترنت، ومعروفة باسم RFC كما مر معنا أعلاه. يمكن كتابة هذه الوثائق من قبل أي شخص، في العادة المهندسين وعلماء الكمبيوتر، ويمكن أن تكون لأغراض إعلامية (من باب الإعلام بالشيء وتعليمه، وليس من باب الإعلام الاصطلاحي هذه الأيام) أو للمراجعة من قبل الزملاء والأقران على مسار التقييس (بهدف أن تصبح مادة المستند مقياساً متفقاً عليه standard). يمكن أن تبدأ RFC كمقياس مقترح، تشرح بالتفصيل على سبيل المثال تعريف بروتوكول جديد، ثم تنتقل إلى حالة مسودة مقياس draft standard، وأخيراً تتحول إلى حالة مقياس معتمد من مقاييس الإنترنت، إذا تمت الموافقة عليها من قبل كيان رسمي (فريق مهام هندسة الإنترنت the Internet Engineering Task Force IETF). عند هذه النقطة، تصبح الـ RFC مرجعية لتنفيذ (برمجة) البروتوكول من قبل أي جهة. لاحظ أن المفترض أن نسخ كل الجهات المختلفة يعمل بعضها مع بعض بسلاسة، لأنهم يستخدمون نفس البروتوكول، ويلتزمون بنفس المرجع، وهذا هو الهدف من التقييس في المقام الأول. المصدر الرسمي لجميع الـ RFCs موقع ويب محرر RFC على الرابط التالي: RFC Index.

بروتوكولات TCP/IP وهي تعمل
على الرغم من أن مستندات RFC هي أهم مصدر لتفاصيل بروتوكولات TCP/IP، فهي نظرية بحكم طبيعتها، ومستوى التفاصيل التي تقدمها قد تكون عائقاً أمام فهم سهل لطريقة عمل البروتوكولات، لغير من يريد بالفعل أن ينفذها في منتجه. لحسن الحظ، قام بعض الكتاب باتباع أسلوب مميّز لشرح مجموعة البروتوكولات هذه، عن طريق تشريح رسائل البروتوكولات، وتتبعها على الأسلاك، وهي تنتقل من جهاز إلى جهاز، وذلك باستخدام برامج لالتقاط الحزم packet sniffers، مثل tcpdump. واحدة من أكثر الأعمال شعبية، والتي تستحق جيداً سمعتها، المرجع الكلاسيكي لستيفنز، وكتب أخرى مماثلة في هذا
 
أعلى