كتاب مرجعي- نموذج TCP/IP في هندسة الويب

 

كتاب مرجعي- نموذج TCP/IP في هندسة الويب



المحتويات (الفهرس)

المقدمة

  • خريطة الرحلة المبدئية (نظرة عامة في سطر واحد)

الفصل الأول: الإطار المفاهيمي لنموذج TCP/IP

  • 1.1 تعريف النموذج ومكوناته

  • 1.2 ضرورة التقسيم الطبقي

  • 1.3 طبقات النموذج الأربع ووظائفها (مع تفاصيل TCP و QUIC)

  • 1.4 خصائص الطبقات وعلاقاتها

  • 1.5 التمييز الجوهري بين البروتوكول والطبقة

  • 1.6 المقارنة المعمارية بين TCP/IP ونموذج OSI

الفصل الثاني: آلية نقل البيانات (التغليف وفك التغليف)

  • 2.1 مفهوم التغليف (Encapsulation)

  • 2.2 وحدات البيانات (PDU) عبر الطبقات

  • 2.3 عملية فك التغليف (Decapsulation) في الطرف المستقبل

  • 2.4 التمييز بين التغليف والتشفير

الفصل الثالث: أنماط الاتصال (من طرف لطرف مقابل خطوة بخطوة)

  • 3.1 المفهومان الأساسيان وتعريف كل منهما

  • 3.2 توضيح المغزى الحقيقي للاتصال من طرف لطرف

  • 3.3 تحديد الأطراف النهائية ومستويات التمييز (جهاز، عنوان، منفذ، تطبيق)

  • 3.4 نظرة كل جهاز في الشبكة (المتصفح، الخادم، الموجه، المبدل)

  • 3.5 توضيح دور الموجه في اتصال TCP

  • 3.6 تأثير الأجهزة الوسيطة على الاتصال من طرف لطرف (NAT، الجدار الناري، الوكيل، موازن التحميل)

  • 3.7 منهجية تحليل أي بنية شبكية

الفصل الرابع: طبقة الإنترنت (العنونة والتوجيه)

  • 4.1 عنوان IP (المفهوم، الخصائص، والمقارنة مع MAC والمنفذ)

  • 4.2 نظرة عامة على IPv4 و IPv6

  • 4.3 العناوين العامة، الخاصة، والنطاق المحلي

  • 4.4 آلية ترجمة العناوين (NAT) وتأثيرها

  • 4.5 التقسيم المنطقي (Subnetting) و CIDR

  • 4.6 البوابة الافتراضية ودورها في إخراج الحزم

الفصل الخامس: آليات التوجيه (بناء وصنع القرار)

  • 5.1 تعريف التوجيه والتمييز بين التخطيط والتنفيذ (Routing vs Forwarding)

  • 5.2 جدول التوجيه: مكوناته وآلية البحث فيه (وصف خطوات lookup)

  • 5.3 المسار الافتراضي ودوره كحل أخير

  • 5.4 قاعدة أطول بادئة مطابقة (Longest Prefix Match) مع مثال خطواتها

  • 5.5 مصادر بناء جدول التوجيه (المتصل مباشرة، الثابت، الديناميكي)

  • 5.6 بروتوكولات التوجيه الديناميكي (لمحة عن OSPF و BGP)

الفصل السادس: طبقة الوصلة والنقل المحلي (من جهاز لآخر)

  • 6.1 الشبكة المحلية (LAN) ومفهومها

  • 6.2 عنوان MAC (الخصائص، والفرق الجوهري عن IP)

  • 6.3 تقنيات النقل المحلي: Ethernet (سلكي) و Wi-Fi (لاسلكي)

  • 6.4 آلية إيجاد العنوان المحلي: بروتوكول ARP في IPv4

  • 6.5 الفرق التشغيلي بين المبدل (Switch) والموجه (Router)

الفصل السابع: دورة حياة الحزمة (الرحلة عبر الشبكة)

  • 7.1 مرحلة إنشاء الاتصال (TCP Three-way Handshake)

  • 7.2 ملخص الجدول الدوري: المتغيرات والثوابت عند كل قفزة (Hop)

  • 7.3 نموذج تطبيقي لرحلة طلب ويب (العميل ← موجه أ ← موجه ب ← الخادم)

  • 7.4 تحليل تفصيلي لما يحدث داخل الموجه عند وصول الحزمة

الفصل الثامن: التطبيقات العملية في هندسة الويب

  • 8.1 استخدام النموذج الطبقي في تحليل الأعطال

  • 8.2 الأدوات العملية الأساسية (curl، nslookup، ping، traceroute، Wireshark)

  • 8.3 أثر الفهم المعماري على تصميم البنى التحتية

الخاتمة والخلاصة النهائية

الملحق: أسئلة الفهم الشاملة


المقدمة: خريطة الرحلة المبدئية

عندما يكتب المستخدم example.com، تحدث الرحلة التالية في خلفية النظام. هذه هي الخريطة الذهنية التي نبني عليها كل تفاصيل الكتاب:

[المتصفح] 

▼ (1.
طلب HTTP)
[
طبقة التطبيق] ← تجهيز الرسالة

▼ (2.
إضافة رأس TCP أو QUIC)
[
طبقة النقل] ← تحديد المنفذ، وإنشاء اتصال موثوق أو سريع

▼ (3.
إضافة رأس IP)
[
طبقة الإنترنت] ← تحديد عنوان الوجهة (IP الخادم)

▼ (4.
إضافة رأس Ethernet/Wi-Fi)
[
طبقة الوصلة] ← تحديد عنوان MAC الخاص بالجهة التالية

▼ (5.
تمرير الإطارات عبر الشبكة المحلية)

┌─────┴─────┐
▼ ▼
[
الموجه أ] ←─→ [الموجه ب] (يتم إعادة تغليف الإطار في كل قفزة)
└─────┬─────┘

[
طبقة الوصلة في الخادم] ← استقبال الإطار

[
طبقة الإنترنت] ← التحقق من تطابق IP الوجهة

[
طبقة النقل] ← التحقق من المنفذ وإعادة ترتيب القطع (TCP)

[
طبقة التطبيق] ← قراءة طلب HTTP وتجهيز الرد

الفصل الأول: الإطار المفاهيمي لنموذج TCP/IP

1.1 تعريف النموذج ومكوناته

TCP/IP هو اختصار لـ (Transmission Control Protocol / Internet Protocol)، ولكنه في الحقيقة ليس بروتوكولاً واحداً، بل مجموعة بروتوكولات مترابطة (Suite) تشمل HTTP، DNS، TCP، UDP، IP، ICMP، وغيرها. أما نموذج TCP/IP فهو الإطار الطبقي الذي يصنف هذه البروتوكولات وفقاً للوظيفة التي تؤديها في عملية الاتصال.

1.2 ضرورة التقسيم الطبقي

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

1.3 طبقات النموذج الأربع ووظائفها (مع تفاصيل البروتوكولات)

الطبقة

السؤال المحوري

الوظيفة الأساسية

البروتوكولات والتفاصيل التشغيلية

التطبيق (Application)

ماذا نريد أن نقول؟

تحديد معنى البيانات وخدمة التطبيق

HTTP، DNS، TLS. تتعامل مع صيغة الرسائل (مثل GET /).

النقل (Transport)

كيف ننقل بين نقاط النهاية؟

توفير نقل موثوق (TCP) أو سريع (UDP).

TCP: بروتوكول موجه للاتصال. يقوم بـ مصافحة ثلاثية (SYN, SYN-ACK, ACK) لإنشاء اتصال منطقي. يستخدم أرقام التسلسل (Sequence Numbers) لترتيب القطع، و أرقام التأكيد (Acknowledgment Numbers) لإعادة الإرسال عند فقدان البيانات. UDP: بروتوكول غير موجه للاتصال، سريع لكن دون ضمان وصول. QUIC: بروتوكول نقل حديث مبني على UDP، يدمج وظائف النقل الموثوق مع التشفير (مشابهاً لـ TLS) في طبقة واحدة، مما يقلل زمن إنشاء الاتصال (يدعم 0-RTT) ويحسن أداء المواقع الحديثة.

الإنترنت (Internet)

إلى أين نرسل عبر الشبكات؟

العنونة المنطقية وتوجيه الحزم

IPv4، IPv6، ICMP. تضيف رأساً يحوي عنوان المصدر والوجهة، وتحدد المسار عبر الشبكات.

الوصلة (Link)

كيف ننقل عبر الوصلة المحلية؟

تسليم الإطارات على الشبكة المحلية

Ethernet (سلكي)، Wi-Fi (لاسلكي). تضيف عناوين MAC لتحديد الأجهزة على نفس الشبكة المحلية.



1.4 خصائص الطبقات وعلاقاتها

  • وظيفة محددة: كل طبقة مسؤولة عن مهمة واضحة.

  • الاعتماد على الأدنى: تستخدم الطبقة العليا خدمات السفلى دون الاطلاع على تفاصيلها الداخلية (تجريد).

  • خدمة الأعلى: تقدم واجهة استخدام ثابتة ومستقرة للطبقة التي تعلوها.

  • إخفاء التفاصيل: الطبقة الأعلى لا تعرف كيف تنفذ الطبقة السفلى عملها (مثلاً، لا يعرف HTTP كيف يدير TCP نافذة الازدحام).

1.5 التمييز الجوهري بين البروتوكول والطبقة

من الأخطاء الشائعة القول بأن "TCP هو طبقة النقل". الأصح هو أن طبقة النقل هي المستوى الوظيفي، بينما TCP هو مجرد بروتوكول يعمل ضمن هذه الطبقة. هذا التمييز يسمح بوجود بروتوكولات متعددة في الطبقة الواحدة (TCP، UDP، QUIC) ويسمح بتغيير البروتوكول دون تغيير هيكل الطبقة ذاتها.

1.6 المقارنة المعمارية بين TCP/IP ونموذج OSI

من المغالطات اعتبار أن TCP/IP هو مجرد نسخة مختصرة من نموذج OSI ذي السبع طبقات. في الواقع، OSI نموذج مرجعي نظري صُمم ليكون معياراً تعليمياً عاماً، بينما TCP/IP هو إطار عملي تطور مع الإنترنت. تعليمياً، تندمج وظائف طبقات (Presentation, Session) من OSI ضمن طبقة التطبيق في TCP/IP، وتندمج طبقتا (Data Link, Physical) ضمن طبقة الوصلة.


الفصل الثاني: آلية نقل البيانات (التغليف وفك التغليف)

2.1 مفهوم التغليف (Encapsulation)

التغليف هو العملية التي تضيف فيها كل طبقة معلومات تحكم خاصة بها (رأس Header، وأحياناً مذيل Trailer) إلى البيانات القادمة من الطبقة الأعلى، لتتحول البيانات إلى وحدة صالحة للمعالجة في الطبقة الحالية.

بيانات التطبيق ← (إضافة رأس نقل) ← القطعة ← (إضافة رأس إنترنت) ← الحزمة ← (إضافة رأس وصلة) ← الإطار ← Bits

2.2 وحدات البيانات (PDU) عبر الطبقات

  • طبقة التطبيق: بيانات / رسالة (Data / Message).

  • طبقة النقل: قطعة (Segment) في TCP، أو رزمة (Datagram) في UDP.

  • طبقة الإنترنت: حزمة (Packet).

  • طبقة الوصلة: إطار (Frame).

2.3 عملية فك التغليف (Decapsulation) في الطرف المستقبل

عند الطرف المستقبل، تحدث العملية العكسية تماماً. تُزال رؤوس الطبقات بالترتيب المعاكس (الوصلة ← الإنترنت ← النقل ← التطبيق) حتى تصل البيانات الخام إلى التطبيق المستقبل، الذي يقرؤها دون أن يعرف كيف انتقلت فعلياً عبر الشبكة.

2.4 التمييز بين التغليف والتشفير

  • التغليف: إضافة معلومات بروتوكولية للبيانات (رؤوس) بهدف تسهيل معالجتها ونقلها.

  • التشفير: تحويل البيانات إلى صيغة غير مقروءة لا يمكن فهمها دون مفتاح فك. قد يحدثان معاً (كما في HTTPS، حيث تُشفر البيانات ثم تُغلف)، لكنهما وظيفتان مستقلتان ومختلفتان جذرياً.


الفصل الثالث: أنماط الاتصال (من طرف لطرف مقابل خطوة بخطوة)

3.1 المفهومان الأساسيان وتعريف كل منهما

  • من طرف لطرف (End-to-End): علاقة اتصال منطقية تمتد بين الطرفين النهائيين (العميل والخادم)، مثل اتصال TCP أو جلسة TLS.

  • خطوة بخطوة (Hop-by-Hop): العمليات التي تحدث فعلياً على كل وصلة محلية بين جهازين متجاورين، مثل تمرير الإطارات (Frames) عبر المحولات والموجهات.

3.2 توضيح المغزى الحقيقي للاتصال من طرف لطرف

لا يعني هذا المفهوم أن البيانات تنتقل مباشرة دون أجهزة وسيطة. بل يعني أن الأجهزة الوسيطة (كالموجهات) تقوم بتمرير الحزم فقط، ولا تصبح أطرافاً في ذلك الاتصال المنطقي. فاتصال TCP، على سبيل المثال، ينشأ بين المتصفح والخادم حصراً، وليس بين المتصفح والموجه الأول.

3.3 تحديد الأطراف النهائية ومستويات التمييز

  • الجهاز (Device): القطعة المادية (حاسوب، خادم).

  • عنوان IP: يُعرّف الجهاز منطقياً على مستوى الشبكات.

  • المنفذ (Port): يُحدد التطبيق أو الخدمة المطلوبة على الجهاز.

  • نقطة النهاية (Endpoint): هي المزيج (IP + Port).

  • التطبيق (Application): البرنامج الفعلي الذي يستخدم الاتصال (كمتصفح الويب).

3.4 نظرة كل جهاز في الشبكة

  • المتصفح والخادم: يتعاملان مع جميع الطبقات الأربع.

  • الموجه (Router): يعمل أساساً على طبقة الإنترنت (IP) والوصلة، ولا يحتاج لفهم HTTP أو HTML أو محتوى TLS.

  • المبدل (Switch): يعمل على طبقة الوصلة فقط (عناوين MAC).

3.5 توضيح دور الموجه في اتصال TCP

تصور خاطئ: أن كل موجه ينشئ اتصال TCP مع الموجه التالي. التصحيح: اتصال TCP ينشأ لمرة واحدة بين العميل والخادم (عبر المصافحة الثلاثية SYN, SYN-ACK, ACK). الموجهات تتعامل فقط مع حزم IP التي تحمل بيانات TCP داخلها، وتقوم بتمريرها إلى الـ (Next Hop) دون فتح أية اتصالات خاصة بها.

3.6 تأثير الأجهزة الوسيطة

  • NAT: يُغير عناوين IP أو المنافذ أثناء العبور، مما يكسر النقاء النظري للاتصال من طرف لطرف.

  • الجدار الناري (Firewall): يفحص الحزم ويطبق سياسات، لكنه عادة لا ينهي الاتصال.

  • الوكيل (Proxy): ينهي اتصال العميل وينشئ اتصالاً جديداً للخادم، وبالتالي يصبح طرفاً في الاتصال.

  • موازن التحميل (Load Balancer): إما أن يمرر الاتصال (Layer 4) أو ينهيه ويعيد إنشاءه (Layer 7).

3.7 منهجية تحليل أي بنية شبكية

يمكن لأي مهندس تحليل بنية شبكية بسؤال نفسه ستة أسئلة:

  1. من هما الطرفان النهائيان؟

  2. ما الوظيفة التي تمتد بينهما؟

  3. ما الأجهزة الوسيطة الموجودة؟

  4. ماذا تفعل هذه الأجهزة بالضبط؟

  5. هل تقوم بالتمرير (Forwarding) أم بإنهاء وإعادة إنشاء الاتصال؟

  6. هل الاتصال ما زال (من طرف لطرف) أم أصبح اتصالين منفصلين؟


الفصل الرابع: طبقة الإنترنت (العنونة والتوجيه)

4.1 عنوان IP (المفهوم، الخصائص، والمقارنة)

عنوان IP هو معرف منطقي يُستخدم لتحديد واجهة شبكية على مستوى الشبكات.

  • خصائصه: ليس مادياً (كـ MAC)، ولا يحدد التطبيق (كالمنفذ).

  • المقارنة الثلاثية:

    • IP: إلى أي شبكة؟ (Internet Layer)

    • MAC: من على الوصلة الحالية؟ (Link Layer)

    • Port: أي تطبيق/خدمة؟ (Transport Layer)

4.2 نظرة عامة على IPv4 و IPv6

  • IPv4: 32 بت (مثل 192.168.1.10)، يوفر 4.3 مليار عنوان وهو في طريقه للنفاد.

  • IPv6: 128 بت (مثل 2001:db8::1)، يوفر عدداً هائلاً من العناوين وهو الحل المستقبلي.

4.3 العناوين العامة، الخاصة، والنطاق المحلي

  • العام (Public): فريد عالمياً ويمكن الوصول إليه من الإنترنت.

  • الخاص (Private): يُستخدم داخل الشبكات المحلية (النطاقات: 10.x.x.x، 172.16.x.x، 192.168.x.x).

  • النطاق المحلي (localhost): 127.0.0.1 يشير إلى الجهاز نفسه.

4.4 آلية ترجمة العناوين (NAT)

NAT هي آلية تسمح لأجهزة متعددة في شبكة خاصة بمشاركة عنوان عام واحد عند الاتصال بالإنترنت. تقوم بتغيير معلومات العنونة (IP المصدر/المنفذ) أثناء عبور الحزمة، مما يؤثر على مبدأ الاتصال من طرف لطرف.

4.5 التقسيم المنطقي (Subnetting) و CIDR

يستخدم CIDR (التوجيه بين النطاقات غير المصنف) لتمثيل الشبكات بدقة عبر إضافة شرطة مائلة ورقم (مثل /24). الرقم يشير إلى عدد البتات الثابتة في جزء الشبكة. يساعد هذا في تقليل حجم جداول التوجيه وتحسين إدارة العناوين.

4.6 البوابة الافتراضية ودورها

عندما يريد جهاز إرسال حزمة إلى عنوان خارج نطاق شبكته المحلية، فإنه يرسلها إلى البوابة الافتراضية (Default Gateway)، والتي تكون عادةً هي واجهة الموجه المحلي الموصل بالشبكات الخارجية.


الفصل الخامس: آليات التوجيه (بناء وصنع القرار)

5.1 تعريف التوجيه والتمييز بين التخطيط والتنفيذ

  • التوجيه (Routing): عملية تحديد المسار أو المسارات الممكنة للوصول إلى الشبكات الوجهة (التخطيط).

  • التمرير (Forwarding): القرار المحلي الذي يتخذه الموجه عند وصول حزمة، وهو تحديد "الخطوة التالية" (Next Hop) والواجهة الخارجة بناءً على جدول التوجيه (التنفيذ).

5.2 جدول التوجيه: مكوناته وآلية البحث (Lookup)

يتكون كل مدخل في الجدول من:

  1. بادئة الوجهة (Destination Prefix): الشبكة الهدف (مثال: 192.168.1.0/24).

  2. الخطوة التالية (Next Hop): عنوان الموجه التالي.

  3. الواجهة الخارجة (Interface): المنفذ الذي ستخرج منه الحزمة.

  4. المقياس (Metric): قيمة للمفاضلة بين المسارات (كعدد القفزات).

آلية البحث خطوة بخطوة (وصف عمل الـ FIB):

  1. يستقبل الموجه الحزمة ويستخرج عنوان IP الوجهة.

  2. يبدأ بالبحث في جدول التوجيه عن جميع المسارات التي تنطبق على هذا العنوان (أي أن الوجهة تقع ضمن نطاق البادئة).

  3. يقوم بتصفية النتائج حسب الأولوية (المسارات المتصلة مباشرة لها الأولوية العليا، تليها الثابتة ثم الديناميكية).

  4. إذا وجد عدة مسارات بنفس الأولوية والبادئة، يُفاضل بينها باستخدام قيمة الـ (Metric) ويختار الأقل.

  5. الناتج النهائي هو زوج (Next Hop, Interface) الذي سيُستخدم لبناء الإطار الجديد.

5.3 المسار الافتراضي ودوره كحل أخير

المسار الافتراضي (0.0.0.0/0 في IPv4) يطابق أي عنوان وجهة لا يوجد له مسار محدد في الجدول. هو الملاذ الأخير الذي يوجه الحزم عادةً نحو مزود خدمة الإنترنت (ISP).

5.4 قاعدة أطول بادئة مطابقة (Longest Prefix Match) مع مثال خطواتها

عند تطابق عدة مسارات مع عنوان وجهة واحد، تُطبق قاعدة اختيار أطول بادئة، أي المسار الأكثر تحديداً. مثال خطوات التطبيق:

  • الجدول: 10.0.0.0/8 (R1)، 10.20.0.0/16 (R2)، 10.20.30.0/24 (R3).

  • الوجهة الواردة: 10.20.30.45.

  • خطوات المقارنة:

    1. هل تطابق /8؟ نعم (لأن 10.20.30.45 ضمن النطاق 10.0.0.0 - 10.255.255.255).

    2. هل تطابق /16؟ نعم (لأن 10.20.30.45 ضمن النطاق 10.20.0.0 - 10.20.255.255).

    3. هل تطابق /24؟ نعم (لأن 10.20.30.45 ضمن النطاق 10.20.30.0 - 10.20.30.255).

  • القرار النهائي: يُختار المسار 10.20.30.0/24 لأنه صاحب أطول بادئة (/24)، وبالتالي يوجه الحزمة إلى R3، بغض النظر عن المسافة الجغرافية.

5.5 مصادر بناء جدول التوجيه

  1. مسارات متصلة (Connected): تنشأ تلقائياً من الشبكات المتصلة مباشرة بواجهات الموجه.

  2. مسارات ثابتة (Static): يضيفها مسؤول الشبكة يدوياً.

  3. مسارات ديناميكية (Dynamic): تتعلمها الموجهات تلقائياً عبر بروتوكولات التوجيه.

5.6 بروتوكولات التوجيه الديناميكي (لمحة)

  • OSPF: بروتوكول يستخدم داخل النظام المستقل الواحد (IGP) لحساب أفضل مسار بناءً على التكلفة.

  • BGP: بروتوكول يستخدم بين الأنظمة المستقلة (EGP) وهو العمود الفقري لإنترنت العالم، حيث يُفضل المسارات بناءً على سياسات الشبكة وليس فقط على المسافة.


الفصل السادس: طبقة الوصلة والنقل المحلي (من جهاز لآخر)

6.1 الشبكة المحلية (LAN) ومفهومها

هي مجموعة من الأجهزة المتصلة ضمن نطاق فيزيائي محدود (منزل، مكتب، مركز بيانات)، وتستخدم عناوين MAC للتواصل الداخلي.

6.2 عنوان MAC (الخصائص، والفرق الجوهري عن IP)

  • عنوان MAC (مثل 00:1A:2B:3C:4D:5E) هو معرف فريد للواجهة الشبكية على مستوى الوصلة المحلية.

  • الفرق الجوهري: بينما يبقى عنوان IP ثابتاً نسبياً خلال الرحلة من المصدر إلى الوجهة، فإن عنوان MAC يُعاد كتابته في كل قفزة (Hop) ليناسب عنوان الجهاز التالي على الوصلة الحالية.

6.3 تقنيات النقل المحلي: Ethernet و Wi-Fi

  • Ethernet: تقنية سلكية تعتمد على معيار IEEE 802.3، شائعة في المكاتب ومراكز البيانات.

  • Wi-Fi: تقنية لاسلكية تعتمد على معيار IEEE 802.11، شائعة في الأجهزة المحمولة والمنازل. تعمل الطبقات الأعلى (HTTP، TCP، IP) فوق هاتين التقنيتين دون أي تعديل، بفضل التجريد الذي توفره طبقة الوصلة.

6.4 آلية إيجاد العنوان المحلي: بروتوكول ARP

لإرسال إطار على الشبكة المحلية، يحتاج الجهاز إلى معرفة عنوان MAC الخاص بالجهاز التالي (كالبوابة الافتراضية). في IPv4، يقوم بـ ARP (بروتوكول تحليل العناوين) بإرسال طلب بث (Broadcast) يسأل: "من يملك عنوان IP هذا؟"، فيرد الجهاز المعني بعنوان MAC الخاص به.

6.5 الفرق التشغيلي بين المبدل (Switch) والموجه (Router)

  • المبدل (Switch): يعمل في طبقة الوصلة، ويعتمد على عناوين MAC لتوجيه الإطارات بين الأجهزة داخل الشبكة المحلية نفسها.

  • الموجه (Router): يعمل في طبقة الإنترنت، ويعتمد على عناوين IP لتوجيه الحزم بين شبكات مختلفة.


الفصل السابع: دورة حياة الحزمة (الرحلة عبر الشبكة)

7.1 مرحلة إنشاء الاتصال (TCP Three-way Handshake)

قبل إرسال بيانات HTTP الفعلية، يقوم TCP بإنشاء اتصال منطقي بين العميل والخادم عبر ثلاث خطوات (يتم تبادلها عبر حزم IP التي تمر على الموجهات):

  1. SYN: يرسل العميل قطعة بعلامة SYN (مزامنة) ورقم تسلسل ابتدائي (Seq=X) إلى الخادم.

  2. SYN-ACK: يستجيب الخادم بقطعة تحوي SYN و ACK، مع رقم تسلسل جديد (Seq=Y) وتأكيد لرقم العميل (Ack=X+1).

  3. ACK: يرسل العميل تأكيداً نهائياً (Ack=Y+1). عندها يصبح الاتصال مفتوحاً، ويمكن بدء نقل بيانات HTTP.

7.2 ملخص الجدول الدوري: المتغيرات والثوابت عند كل قفزة

العنصر

هل يتغير عند كل قفزة؟

الملاحظة

MAC المصدر والوجهة

يتغيران

يُعاد كتابتهما لكل وصلة جديدة.

الإطار (Frame)

يُستبدل بالكامل

كل وصلة لها إطار خاص بها.

IP المصدر والوجهة

يبقى (عادةً)

إلا في حال وجود NAT.

TTL (مدة البقاء)

ينقص بمقدار 1

لمنع الحلقات اللانهائية.

أرقام تسلسل TCP

تبقى

تبقى ثابتة طوال الرحلة (الموجه لا يعدلها).

بيانات HTTP

تبقى

الموجه لا يعدل محتوى الحزمة الداخلي.



7.3 نموذج تطبيقي لرحلة طلب ويب (مع مرحلة المصافحة)

السيناريو: العميل (MAC: AA، IP: 192.168.1.10) ← موجه أ ← موجه ب ← الخادم (MAC: BB، IP: 203.0.113.20).

  • مرحلة المصافحة (SYN):

    • يرسل العميل قطعة SYN (Seq=X). تُغلف في حزمة IP وتُمرر عبر الموجهات (التي تنقص TTL وتغير MAC فقط) حتى تصل إلى الخادم.

  • مرحلة نقل البيانات (GET request):

    • القفزة الأولى (عميل ← موجه أ):

      • الإطار 1: المصدر AA، الوجهة = MAC(موجه أ). الحزمة: المصدر IP=192.168.1.10، الوجهة IP=203.0.113.20، TTL=64، وتحتوي على قطعة TCP بالبيانات.

    • القفزة الثانية (موجه أ ← موجه ب):

      • يُنقص الموجه أ قيمة TTL إلى 63، ويبني إطاراً 2 جديداً: المصدر = MAC(موجه أ)، الوجهة = MAC(موجه ب).

    • القفزة الثالثة (موجه ب ← الخادم):

      • يُنقص الموجه ب قيمة TTL إلى 62، ويبني إطاراً 3 جديداً: المصدر = MAC(موجه ب)، الوجهة = MAC(الخادم).

7.4 تحليل تفصيلي لما يحدث داخل الموجه عند وصول الحزمة

  1. استقبال الإطار (Frame) من الوصلة الداخلة.

  2. معالجة طبقة الوصلة: نزع رأس Ethernet للوصول إلى حزمة IP.

  3. قراءة عنوان IP الوجهة من الحزمة.

  4. التحقق من TTL: إذا كان TTL = 0، تُسقط الحزمة ويُرسل رسالة ICMP "Time Exceeded" للمصدر. وإلا، يُنقص TTL بمقدار 1.

  5. البحث في جدول التوجيه (FIB):

    • يبحث عن بادئة مطابقة للوجهة.

    • يطبق قاعدة أطول بادئة مطابقة (LPM).

    • يستخرج الـ Next Hop والواجهة الخارجة.

  6. إنشاء إطار جديد للوصلة الخارجة:

    • MAC المصدر الجديد: عنوان واجهة الموجه على الوصلة الخارجة.

    • MAC الوجهة الجديد: عنوان الـ Next Hop (أو عنوان الخادم النهائي إذا كان متصلاً مباشرة).

  7. إرسال الإطار الجديد عبر الواجهة المحددة.


الفصل الثامن: التطبيقات العملية في هندسة الويب

8.1 استخدام النموذج الطبقي في تحليل الأعطال

عند حدوث عطل (مثل "الموقع لا يعمل")، يحدد المهندس الطبقة التي بدأ فيها الفشل:

  • طبقة التطبيق: فشل في حل DNS، أو خطأ في HTTP (كود 500).

  • طبقة النقل: رفض الاتصال (Connection Refused) أثناء المصافحة الثلاثية، أو انتهاء المهلة.

  • طبقة الإنترنت: عدم وصول حزم ICMP (فشل Ping)، أو مسار توجيه خاطئ (TTL منتهي).

  • طبقة الوصلة: عدم وجود اتصال فيزيائي، أو فشل في ARP.

8.2 الأدوات العملية الأساسية

  • curl -v: لمشاهدة خطوات الاتصال (DNS، TLS، المصافحة الثلاثية، إرسال الطلب).

  • nslookup / dig: لتحليل استعلامات DNS.

  • ping: لاختبار وصول حزم ICMP (IP Layer) والتحقق من زمن الاستجابة الأساسي (RTT).

  • traceroute / tracert: لتتبع مسار الحزم وعرض القفزات (Hops) وزمن كل قفزة.

  • ip route / route print: لعرض جدول التوجيه المحلي ومعرفة المسار الافتراضي.

  • Wireshark: لالتقاط الحزم وتحليل الطبقات المختلفة مرئياً، بما في ذلك مشاهدة حزم SYN, SYN-ACK, ACK.

8.3 أثر الفهم المعماري على تصميم البنى التحتية

فهم هذه المفاهيم يمكن مهندس الويب من:

  • تحديد ما إذا كانت مشكلة الأداء (كـ TTFB المرتفع) ناتجة عن الشبكة أم الخادم (بفصل زمن RTT عن زمن معالجة الخادم).

  • تصميم شبكات توزيع محتوى (CDN) وموازنات تحميل (Load Balancers) بكفاءة، مع فهم ما إذا كانت ستعمل في Layer 4 أم Layer 7.

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


الخاتمة والخلاصة النهائية

يمثل نموذج TCP/IP حجر الزاوية لفهم بنية الإنترنت. يمكن تلخيص الرحلة الكاملة لطلب ويب في نقاط جوهرية:

  1. يقوم المتصفح بتجهيز طلب HTTP، ويمر بمرحلة مصافحة TCP ثلاثية (SYN, SYN-ACK, ACK) لإنشاء اتصال موثوق، أو يستخدم QUIC لتقليل زمن البدء.

  2. تُغلف البيانات برأس TCP (المنافذ وأرقام التسلسل)، ثم برأس IP (العناوين المنطقية) الذي يحدد الوجهة النهائية.

  3. تغلف الحزمة في إطار (Frame) يحمل عناوين MAC الخاصة بالوصلة المحلية لترسل إلى البوابة الافتراضية.

  4. عند كل موجه (Router) في الطريق، يُخلع الإطار القديم، وتُفحص حزمة IP (يُخفض TTL)، ويُطبق بحث أطول بادئة مطابقة في جدول التوجيه (FIB) لتحديد الخطوة التالية (Next Hop).

  5. يُنشأ إطار جديد بعناوين MAC جديدة للوصلة التالية، ويُرسل، وتتكرر العملية حتى الوصول إلى شبكة الخادم.

  6. عند الخادم، تُخلع الرؤوس بالترتيب المعاكس لتصل البيانات الخام إلى خادم الويب الذي يجهز الرد.

القاعدة الذهبية: IP يحدد "أين" الوجهة النهائية، MAC يحدد "من" على الوصلة الحالية، والتوجيه يحدد "كيف" للوصول (عبر LPM)، بينما التغليف والتمرير هما آليتا التنفيذ الفعلي.


الملحق: أسئلة الفهم الشاملة

  1. لماذا نحتاج نموذجاً طبقياً لتنظيم الاتصال الشبكي؟

  2. ما المشكلة التي تحلها كل طبقة؟ ولماذا لا ندمج وظائفها في طبقة واحدة؟

  3. لماذا لا يكفي عنوان IP وحده لنقل البيانات بين التطبيقات؟

  4. ما الفرق بين البروتوكول والطبقة؟ أعط مثالاً يوضح ذلك.

  5. وضح آلية المصافحة الثلاثية (Three-way handshake) في TCP.

  6. كيف يختلف بروتوكول QUIC عن TCP من حيث البناء وعدد مرات المصافحة؟

  7. لماذا لا يحتاج الموجه (Router) إلى فهم لغة HTML أو بروتوكول HTTP؟

  8. كيف يمكن لـ HTTP أن يعمل فوق Ethernet و Wi-Fi دون أي تعديل في الكود؟

  9. ما الفرق الجوهري في الطبيعة والغرض بين نموذج TCP/IP ونموذج OSI؟

  10. ما الفرق بين وحدة البيانات (Segment) و (Packet) و (Frame)؟

  11. كيف تتعاون الطبقات الأربع لتوصيل طلب ويب من المتصفح إلى الخادم؟

  12. ما الفرق بين الاتصال من طرف لطرف (End-to-End) والتسليم خطوة بخطوة (Hop-by-Hop)؟

  13. لماذا تتغير عناوين MAC عند كل قفزة بينما يبقى عنوان IP الوجهة ثابتاً عادةً؟

  14. ما الفرق بين مفهومي (Next Hop) و (Destination IP)؟

  15. ما هي وظيفة البوابة الافتراضية (Default Gateway) في الشبكة المنزلية؟

  16. ما الفرق بين التوجيه (Routing) والتمرير (Forwarding)؟

  17. اشرح خطوات البحث في جدول التوجيه عند وصول حزمة IP إلى الموجه.

  18. ما المقصود بقاعدة أطول بادئة مطابقة (Longest Prefix Match) وكيف تطبق؟

  19. لماذا لا يضمن بروتوكول IP وصول الحزمة إلى وجهتها؟

  20. كيف يساعد فهم التوجيه وعناوين IP في تشخيص مشكلة اتصال ويب؟

  21. ما الفرق التشغيلي بين المبدل (Switch) والموجه (Router)؟

  22. ما المقصود بـ MTU، ولماذا هو مهم لأداء الشبكة؟

  23. لماذا قد يكون أمر ping ناجحاً بينما يفشل اتصال HTTPS؟

  24. كيف يوضح مفهوم التغليف (Encapsulation) مبدأ التجريد (Abstraction) في الشبكات؟

  25. اشرح رحلة كاملة من المتصفح إلى الخادم متتبعاً تحول البيانات: (Data → Segment → Packet → Frame)، مع ذكر دور TTL و LPM في هذه الرحلة.

الفصل الأول: الإطار المفاهيمي لنموذج TCP/IP


تمهيد الفصل

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


1.1 تعريف النموذج ومكوناته

1.1.1 المعنى اللغوي والاصطلاحي

TCP/IP هو اختصار لعبارة:

Transmission Control Protocol / Internet Protocol

لكن هذا الاسم قد يوحي بأننا نتحدث عن بروتوكول واحد أو اثنين فقط، وهذا غير دقيق تماماً. في الواقع،当我们 نقول TCP/IP، فإننا نشير إلى مجموعة بروتوكولات مترابطة (Protocol Suite) تعمل معاً لتوفير الاتصال عبر الشبكات.

1.1.2 الفرق بين المصطلحات الأساسية

لفهم النموذج بشكل صحيح، يجب أن نميز بين ثلاثة مفاهيم رئيسية:

المصطلح

المعنى

بروتوكول (Protocol)

مجموعة من القواعد والإجراءات التي تحدد كيفية تبادل البيانات بين جهازين. مثال: TCP هو بروتوكول محدد مسؤول عن النقل الموثوق للبيانات.

مجموعة البروتوكولات (Protocol Suite)

مجموعة متكاملة من البروتوكولات التي تعمل معاً لتحقيق هدف معين. مثال: TCP/IP Suite تشمل HTTP، DNS، TCP، UDP، IP، ICMP، ARP وغيرها.

نموذج (Model)

إطار نظري أو معماري ينظم البروتوكولات حسب وظائفها في طبقات. مثال: نموذج TCP/IP هو الإطار الطبقي الذي يوضح كيف تتفاعل هذه البروتوكولات معاً.



إذن، عندما نقول "TCP/IP" في سياق هذا الكتاب، فإننا غالباً ما نقصد النموذج المعماري الذي ينظم الاتصال، وليس مجرد البروتوكولين المذكورين في الاسم.


1.2 ضرورة التقسيم الطبقي (لماذا الطبقات؟)

1.2.1 تعقيد الاتصال الحقيقي

عندما يرسل المتصفح طلباً إلى خادم، تحدث في وقت واحد تقريباً عمليات متعددة ومعقدة:

  • تجهيز البيانات (تحويل النص إلى تنسيق مفهوم).

  • إنشاء اتصال منطقي مع الخادم.

  • تحديد عنوان الوجهة على الشبكة.

  • إيجاد المسار المناسب للوصول إلى تلك الوجهة.

  • تسليم البيانات عبر الشبكة المحلية.

  • الإرسال الفعلي عبر الوسط الفيزيائي (كابل أو موجات لاسلكية).

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

1.2.2 حل مشكلة التعقيد: التقسيم الطبقي

هنا تأتي فكرة الطبقات (Layers). تقول الفكرة ببساطة:

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

بدلاً من النظر إلى الاتصال باعتباره عملية واحدة ضخمة:

[المتصفح] -------------------- [الخادم]

نقسمه إلى مشاكل أصغر قابلة للحل:

السؤال

الطبقة المعنية

ما البيانات التي تريد تبادلها؟

طبقة التطبيق

كيف ننقلها بين التطبيقات؟

طبقة النقل

إلى أين نرسلها عبر الشبكات؟

طبقة الإنترنت

كيف نرسلها عبر الوصلة المحلية؟

طبقة الوصلة



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

1.2.3 مزايا النموذج الطبقي

  • تبسيط التعقيد: كل طبقة تركز على مهمة محددة، مما يسهل فهمها وتطويرها.

  • المرونة: يمكن تغيير بروتوكول في طبقة معينة (مثل استبدال TCP بـ QUIC) دون التأثير على الطبقات الأخرى، طالما أن الخدمة المقدمة للأعلى ثابتة.

  • التخصص: يمكن لفرق مختلفة تطوير كل طبقة على حدة، باستخدام واجهات محددة للتواصل.

  • التوافق: يسمح النموذج لمنتجات من شركات مختلفة بالعمل معاً، طالما تلتزم بواجهات الطبقات.


1.3 طبقات النموذج الأربع ووظائفها (مع تفاصيل البروتوكولات)

يُقسّم نموذج TCP/IP التعليمي الاتصال إلى أربع طبقات وظيفية، لكل منها مسؤولية محددة. من الأعلى إلى الأسفل:

1.3.1 طبقة التطبيق (Application Layer)

العنصر

الوصف

السؤال الأساسي

ماذا نريد أن نقول؟

الوظيفة

توفير معنى للبيانات المتبادلة، وتحديد كيفية تفسيرها من قبل التطبيقات.

المسؤوليات

تحديد صيغة الرسائل (مثل طلب HTTP)، وإدارة جلسات المستخدم، وتنسيق البيانات.

أمثلة البروتوكولات

HTTP/HTTPS: لنقل صفحات الويب. DNS: لترجمة الأسماء إلى عناوين IP. TLS: لتأمين الاتصال (التشفير والمصادقة).



ملاحظة: لا تقتصر طبقة التطبيق على البروتوكولات المذكورة فقط؛ فهي تشمل كل بروتوكول يقدم خدمة مباشرة للتطبيق المستخدم.

1.3.2 طبقة النقل (Transport Layer)

العنصر

الوصف

السؤال الأساسي

كيف ننقل البيانات بين التطبيقات على أجهزة مختلفة؟

الوظيفة

توفير قناة اتصال منطقية بين التطبيقات، مع ضمان (أو عدم ضمان) وصول البيانات.

المسؤوليات

تقسيم البيانات إلى وحدات مناسبة، إدارة الموثوقية، التحكم في التدفق والازدحام، وتحديد التطبيقات عبر المنافذ (Ports).

البروتوكولات والتفاصيل

TCP (Transmission Control Protocol): - بروتوكول موجه للاتصال، أي أنه ينشئ قناة اتصال منطقية قبل نقل البيانات. - يقوم بـ مصافحة ثلاثية (Three-way Handshake) لفتح الاتصال: (1) يرسل العميل SYN (طلب مزامنة) مع رقم تسلسل ابتدائي. (2) يرد الخادم بـ SYN-ACK (تأكيد مع طلب مزامنة من جانبه). (3) يرسل العميل ACK (تأكيد) ليكتمل الاتصال. - يوفر نقل موثوق ومرتب باستخدام أرقام التسلسل (Sequence Numbers) لترتيب القطع، و أرقام التأكيد (Acknowledgment Numbers) لإعادة الإرسال عند فقدان البيانات. - ينشئ تياراً من البايتات (Byte Stream)، أي أن التطبيق يرسل بيانات متدفقة، ويقوم TCP بتقسيمها إلى قطع (Segments) وإعادة تجميعها في الطرف الآخر. UDP (User Datagram Protocol): - بروتوكول غير موجه للاتصال، لا يقوم بمصافحة أولية. - يوفر نقل غير موثوق، أي أن الحزم قد تصل خارج الترتيب أو تفقد دون إعادة إرسال. - يستخدم في التطبيقات التي تهمها السرعة أكثر من الموثوقية (مثل البث المباشر، VoIP، والألعاب). QUIC (Quick UDP Internet Connections): - بروتوكول نقل حديث مبني على UDP. - يدمج وظائف النقل الموثوق (مشابهاً لـ TCP) مع التشفير الإلزامي (مشابهاً لـ TLS) في طبقة واحدة. - يقلل زمن إنشاء الاتصال بشكل كبير (0-RTT في بعض الحالات) مقارنة بـ TCP+TLS. - يدعم تعدد الإرسال داخل اتصال واحد، مما يمنع مشكلة "حظر رأس الخط" (Head-of-Line Blocking) الموجودة في TCP. - يُستخدم بشكل أساسي مع HTTP/3.



1.3.3 طبقة الإنترنت (Internet Layer)

العنصر

الوصف

السؤال الأساسي

إلى أين نرسل البيانات عبر الشبكات؟

الوظيفة

تحديد عنوان الوجهة النهائية، وإيجاد المسار المناسب عبر شبكات متعددة.

المسؤوليات

العنونة المنطقية (IP Addressing)، وتوجيه الحزم (Routing)، وتمريرها بين شبكات مختلفة.

البروتوكولات

IPv4 / IPv6: بروتوكولات العنونة الأساسية. ICMP (Internet Control Message Protocol) :用于 إرسال رسائل الخطأ والتشخيص (مثل ping و traceroute). IGMP: لإدارة البث المتعدد (Multicast).



1.3.4 طبقة الوصلة (Link Layer)

العنصر

الوصف

السؤال الأساسي

كيف ننقل البيانات عبر الوصلة المحلية (مباشرة)؟

الوظيفة

تسليم الإطارات (Frames) بين الأجهزة على نفس الشبكة المحلية.

المسؤوليات

تأطير البيانات (Framing) بإضافة رأس ومذيل، إضافة عناوين محلية (MAC)، والتحكم في الوصول إلى الوسط الفيزيائي.

التقنيات

Ethernet (سلكي، IEEE 802.3) Wi-Fi (لاسلكي، IEEE 802.11) ARP (Address Resolution Protocol): لربط عناوين IPv4 بعناوين MAC (تمهيدي ضمن هذه الطبقة).



ملاحظة: في النموذج التعليمي رباعي الطبقات، تندمج وظائف الطبقتين الفيزيائية ووصلة البيانات من نموذج OSI ضمن طبقة الوصلة.


1.4 خصائص الطبقات وعلاقاتها

لفهم كيفية تفاعل الطبقات، لا بد من معرفة الخصائص الأساسية التي تحكم علاقاتها:

1.4.1 الخصائص الأربع الأساسية

  1. وظيفة محددة: كل طبقة مسؤولة عن مهمة واضحة ومحددة، ولا تتداخل وظائفها مع الطبقات الأخرى.

  2. تعتمد على الطبقة الأدنى: تستخدم الطبقة العليا خدمات الطبقة التي تحتها، لكنها لا تعرف كيف تُنفذ تلك الخدمات (وهذا ما يُعرف بـ التجريد Abstraction).

  3. تخدم الطبقة الأعلى: تقدم كل طبقة واجهة استخدام مستقرة للطبقة التي تعلوها، بحيث يمكن الاعتماد عليها دون تغيير.

  4. تخفي التفاصيل: الطبقة الأعلى لا تحتاج إلى معرفة التفاصيل الداخلية للطبقة الأدنى. مثال: لا يحتاج تطبيق HTTP إلى معرفة كيف يدير TCP نافذة الازدحام أو يعيد إرسال القطع المفقودة.

1.4.2 تمثيل العلاقة بين الطبقات

يمكن تمثيل العلاقة كالتالي:

┌─────────────────────────────────────┐
طبقة التطبيق │ ← تقدم خدمات لتطبيقات المستخدم
└─────────────────┬───────────────────┘
│ (
تستخدم خدمات النقل)
┌─────────────────▼───────────────────┐
طبقة النقل │ ← توفر نقل موثوق/سريع بين التطبيقات
└─────────────────┬───────────────────┘
│ (
تستخدم خدمات التوجيه)
┌─────────────────▼───────────────────┐
طبقة الإنترنت │ ← توجه الحزم إلى الوجهة المنطقية
└─────────────────┬───────────────────┘
│ (
تستخدم خدمات الوصلة)
┌─────────────────▼───────────────────┐
طبقة الوصلة │ ← تنقل الإطارات على الوصلة المحلية
└─────────────────────────────────────┘

1.4.3 مثال توضيحي للتفاعل

  • طبقة التطبيق (HTTP) تحتاج إلى إرسال بيانات إلى خادم آخر، لكنها لا تعرف:

    • كيف يدير TCP عملية إعادة الإرسال.

    • كيف يتحقق من فقدان البيانات.

    • كيف يتحكم في الازدحام. كل ما تعرفه هو: يمكنني طلب خدمة "نقل موثوق" من طبقة النقل.

  • طبقة النقل (TCP) بدورها لا تعرف:

    • هل البيانات المرسلة هي HTML أم JSON؟

    • ماذا يعني Status Code 404 في HTTP؟ كل ما تعرفه هو: لديّ بيانات يجب نقلها بشكل موثوق إلى نقطة نهاية (Endpoint) محددة.


1.5 التمييز الجوهري بين البروتوكول والطبقة

1.5.1 خطأ شائع يجب تصحيحه

من الأخطاء المنتشرة بين المبتدئين قول عبارات مثل:

  • "TCP هو طبقة النقل."

  • "HTTP هو طبقة التطبيق."

1.5.2 التصحيح الدقيق

العبارة الخاطئة

التصحيح العلمي

"TCP هو طبقة النقل."

"TCP هو بروتوكول يعمل ضمن طبقة النقل."

"HTTP هو طبقة التطبيق."

"HTTP هو بروتوكول يعمل ضمن طبقة التطبيق."

"IP هو طبقة الإنترنت."

"IP هو بروتوكول يعمل ضمن طبقة الإنترنت."



1.5.3 لماذا هذا التمييز مهم؟

هذا التمييز ليس مجرد دقة لغوية، بل له آثار عملية كبيرة:

  1. تعدد البروتوكولات في الطبقة الواحدة: يمكن أن توجد بروتوكولات متعددة تؤدي وظائف مختلفة ضمن نفس الطبقة. ففي طبقة النقل، لدينا TCP (موثوق) و UDP (سريع) و QUIC (مدمج). وفي طبقة التطبيق، لدينا HTTP و DNS و FTP وغيرها.

  2. الاستبدال دون تغيير الهيكل: يمكن تغيير البروتوكول المستخدم في طبقة معينة دون التأثير على الطبقات الأخرى. مثلاً، يمكن استبدال TCP بـ QUIC لنقل HTTP، دون الحاجة لتعديل طبقة التطبيق أو طبقة الإنترنت. هذا ما حدث فعلياً مع HTTP/3 الذي يعمل فوق QUIC بدلاً من TCP.

  3. التطور المستقل: يمكن تطوير بروتوكول جديد في طبقة معينة بشكل مستقل عن باقي الطبقات، طالما يحافظ على الواجهة المطلوبة مع الطبقات المجاورة.


1.6 المقارنة المعمارية بين TCP/IP ونموذج OSI

1.6.1 لماذا نقارن بين النموذجين؟

كثيراً ما يخلط الطلاب والمهندسون المبتدئون بين نموذج TCP/IP ونموذج OSI (المرجعي السباعي الطبقات). قد يسمع أحدهم أن "TCP/IP هو مجرد OSI بأربع طبقات"، وهذا غير دقيق. فهم الفرق بينهما يساعد على تجنب الالتباس ويوضح طبيعة كل نموذج.

1.6.2 جدول المقارنة الأساسي

وجه المقارنة

TCP/IP

OSI

النوع

إطار عملي مع بروتوكولات حقيقية

نموذج مرجعي نظري

الأصل

تطور مع الإنترنت عملياً

صُمم قبل ظهور البروتوكولات كمعيار تعليمي

الغرض

تشغيل الإنترنت الفعلي وتنظيمه

توحيد المفاهيم وتعليمي

عدد الطبقات

4 طبقات (تعليمياً)

7 طبقات

الانتشار

مستخدم فعلياً في كل مكان

تعليمي ونظري، يستخدم كمرجع للفهم



1.6.3 أين تندمج الطبقات؟

في نموذج TCP/IP التعليمي رباعي الطبقات، يتم دمج بعض طبقات OSI كما يلي:

طبقات OSI

ما يقابلها في TCP/IP التعليمي

التطبيق (Application) جلسة (Session) عرض (Presentation)

تندمج ضمن طبقة التطبيق

النقل (Transport)

طبقة النقل (نفسها)

الشبكة (Network)

طبقة الإنترنت

ربط البيانات (Data Link) الفيزيائية (Physical)

تندمج ضمن طبقة الوصلة



1.6.4 لماذا هذا التمييز مهم؟

الفهم الصحيح للفرق بين النموذجين يمنع الوقوع في عدة أخطاء مفاهيمية، منها:

  • اعتبار أن TCP/IP هو مجرد "نسخة مختصرة" من OSI.

  • الخلط بين المصطلحات عند قراءة مراجع مختلفة (بعضها يستخدم مصطلحات OSI، وبعضها يستخدم مصطلحات TCP/IP).

  • توقع أن بروتوكولاً معيناً ينتمي إلى طبقة ثابتة في كلا النموذجين (مثل ARP الذي يصنف أحياناً ضمن طبقة الوصلة وأحياناً ضمن طبقة الإنترنت).

الخلاصة: نموذج OSI هو أداة تعليمية لفهم المفاهيم المجردة، بينما TCP/IP هو النموذج العملي الذي يعمل به الإنترنت الفعلي. يجب على مهندس الويب أن يفهم كليهما، لكنه سيتعامل عملياً مع TCP/IP بشكل أكبر.


خلاصة الفصل

في هذا الفصل، بنينا الأساس النظري لفهم نموذج TCP/IP من خلال:

  1. تعريف النموذج: بأنه مجموعة بروتوكولات مترابطة منظمة في إطار طبقي، وليس بروتوكولاً واحداً.

  2. فلسفة التقسيم الطبقي: ضرورة تقسيم التعقيد الهائل للاتصال إلى مشاكل أصغر لكل طبقة مسؤوليتها.

  3. طبقات النموذج الأربع: فهم وظيفة كل طبقة (التطبيق، النقل، الإنترنت، الوصلة) مع تفصيل خاص للبروتوكولات الأكثر استخداماً (TCP، UDP، QUIC) وآليات عملها.

  4. خصائص العلاقات بين الطبقات: الاعتماد، الخدمة، إخفاء التفاصيل، والتجريد.

  5. التمييز بين البروتوكول والطبقة: تصحيح الخلط الشائع، وفهم أن طبقة النقل قد تحتوي على TCP أو UDP أو QUIC.

  6. المقارنة مع OSI: توضيح أن TCP/IP ليس نسخة مختصرة من OSI، بل نموذج عملي مختلف في الطبيعة والغرض.

هذا الفصل يعد بمثابة خريطة الطريق للفصول القادمة، حيث سنتعمق في كل طبقة على حدة، ونرى كيف تتفاعل معاً لنقل البيانات من متصفح إلى خادم.


انتقال إلى الفصل الثاني: في الفصل القادم، سنرى كيف تتحول هذه الطبقات النظرية إلى عملية فعلية لنقل البيانات، عبر آليات التغليف (Encapsulation) و فك التغليف (Decapsulation)، وكيف تُضاف الرؤوس إلى البيانات في كل طبقة.

الفصل الثاني: آلية نقل البيانات (التغليف وفك التغليف)


تمهيد الفصل

بعد أن تعرفنا في الفصل السابق على البنية المعمارية لنموذج TCP/IP وطبقاته الأربع، يبرز سؤال طبيعي: كيف تنتقل البيانات فعلياً من طبقة إلى أخرى، ومن جهاز إلى آخر عبر الشبكة؟

الإجابة تكمن في آليتين متكاملتين: التغليف (Encapsulation) و فك التغليف (Decapsulation). هاتان الآليتان هما القلب النابض لعمل النموذج الطبقي، حيث تقومان بإضافة معلومات التحكم اللازمة لكل طبقة، ثم إزالتها في الطرف الآخر، لضمان وصول البيانات إلى التطبيق المقصود بالشكل الصحيح.

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


2.1 مفهوم التغليف (Encapsulation)

2.1.1 التعريف اللغوي والاصطلاحي

التغليف (Encapsulation) لغوياً يعني وضع شيء داخل غلاف أو وعاء. أما اصطلاحياً في الشبكات، فهو:

عملية إضافة معلومات تحكم خاصة بكل طبقة (رأس Header، وأحياناً مذيل Trailer) إلى البيانات القادمة من الطبقة الأعلى، بحيث تصبح وحدة البيانات صالحة للمعالجة في الطبقة الحالية.

بمعنى آخر، كل طبقة تأخذ البيانات من الطبقة التي فوقها، وتُضيف عليها "غلافها" الخاص، ثم تمرر الناتج إلى الطبقة التي تحتها. وهكذا حتى تصل البيانات إلى الوسط الفيزيائي.

2.1.2 التشبيه التصوري

يمكن تشبيه التغليف بإرسال رسالة ورقية عبر البريد:

  1. تكتب الرسالة (بيانات التطبيق).

  2. تضعها في ظرف مكتوب عليه اسم المرسل والمستلم (رأس طبقة النقل: المنافذ).

  3. تضع الظرف في طرد مكتوب عليه العنوان البريدي الكامل (رأس طبقة الإنترنت: عناوين IP).

  4. تضع الطرد في صندوق مكتوب عليه عنوان المستودع المحلي (رأس طبقة الوصلة: عناوين MAC).

  5. يسلم الصندوق لسائق الشاحنة الذي ينقلها فعلياً (الطبقة الفيزيائية).

في الطرف الآخر، تُفتح هذه الأغلفة بالترتيب العكسي حتى تصل الرسالة الأصلية إلى المرسل إليه.

2.1.3 الرحلة النموذجية للتغليف

┌─────────────────────────────────────────────────────────────────────┐
جهة الإرسال (العميل) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1.
طبقة التطبيق │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ "GET /index.html HTTP/1.1" │ │
│ │ Host: example.com │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ (
تمرر إلى طبقة النقل) │
│ │
│ 2.
طبقة النقل (TCP) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │
رأس TCP (المنافذ، الأرقام التسلسلية) │ البيانات │ │
│ └─────────────────────────────────────────────────────┘ │
│ ──────── [Segment /
قطعة] ───────── │
│ │ │
│ ▼ (
تمرر إلى طبقة الإنترنت) │
│ │
│ 3.
طبقة الإنترنت (IP) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │
رأس IP (العناوين، TTL) │ قطعة TCP │ │
│ └─────────────────────────────────────────────────────┘ │
│ ──────── [Packet /
حزمة] ───────── │
│ │ │
│ ▼ (
تمرر إلى طبقة الوصلة) │
│ │
│ 4.
طبقة الوصلة (Ethernet) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │
رأس Ethernet (MAC) │ حزمة IP │ مذيل (FCS) │ │
│ └─────────────────────────────────────────────────────┘ │
│ ──────── [Frame /
إطار] ───────── │
│ │ │
│ ▼ │
│ 5.
الطبقة الفيزيائية (ضمن طبقة الوصلة) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Bits (0/1)
على الكابل/الهواء │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘

2.2 وحدات البيانات (PDU) عبر الطبقات

2.2.1 تعريف PDU

PDU اختصار لـ (Protocol Data Unit)، وهو اسم عام لوحدة البيانات التي تتعامل معها طبقة معينة في النموذج.

2.2.2 جدول وحدات البيانات حسب الطبقة

الطبقة

اسم وحدة البيانات (PDU)

مثال

طبقة التطبيق

بيانات / رسالة (Data / Message)

طلب HTTP، استعلام DNS

طبقة النقل

قطعة (Segment) في TCP رزمة (Datagram) في UDP إطار (Frame) في QUIC

قطعة TCP تحتوي على بيانات HTTP

طبقة الإنترنت

حزمة (Packet) أو رزمة (Datagram)

حزمة IP تحوي بداخلها قطعة TCP

طبقة الوصلة

إطار (Frame)

إطار Ethernet يحوي حزمة IP بداخله



2.2.3 تنبيه هام

  • في بعض المراجع: قد يُطلق على وحدة طبقة الإنترنت اسم "رزمة (Datagram)" خاصة في سياق IPv4. لكن في هذا الكتاب، سنستخدم مصطلح حزمة (Packet) للتبسيط التعليمي.

  • UDP: يستخدم مصطلح "رزمة (Datagram)" وليس "قطعة (Segment)"، لأن UDP غير موجه للاتصال ولا يقوم بتقسيم البيانات إلى قطع مرتبة.

  • QUIC: يستخدم مصطلح "إطار (Frame)"، لكنه يختلف عن إطار Ethernet من حيث المحتوى والمعالجة.

2.2.4 الخريطة الذهنية للتحولات

بيانات التطبيق (Data)

▼ (
إضافة رأس طبقة النقل)
قطعة / رزمة (Segment / Datagram)

▼ (
إضافة رأس طبقة الإنترنت)
حزمة (Packet)

▼ (
إضافة رأس ومذيل طبقة الوصلة)
إطار (Frame)

▼ (
تحويل إلى إشارات)
Bits / Signals

2.3 عملية فك التغليف (Decapsulation) في الطرف المستقبل

2.3.1 التعريف

فك التغليف (Decapsulation) هو العملية العكسية تماماً للتغليف. يقوم بها الجهاز المستقبل (الخادم) عند استقبال البيانات من الشبكة، وتتمثل في:

إزالة رؤوس (ومذايل) الطبقات بالترتيب المعاكس، واستخراج البيانات الأصلية التي أرسلها التطبيق المصدر، ثم تمريرها إلى الطبقة الأعلى.

2.3.2 الرحلة العكسية

┌─────────────────────────────────────────────────────────────────────┐
جهة الاستقبال (الخادم) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1.
الطبقة الفيزيائية (ضمن طبقة الوصلة) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │
استقبال Bits من الكابل وتحويلها إلى إطار │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 2.
طبقة الوصلة (Ethernet) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │
التحقق من سلامة الإطار (FCS) │ │
│ │
نزع رأس Ethernet ومذيله │ │
│ │
استخراج حزمة IP │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ (
تمرر إلى طبقة الإنترنت) │
│ │
│ 3.
طبقة الإنترنت (IP) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │
التحقق من أن IP الوجهة هو عنوان الخادم │ │
│ │
نزع رأس IP │ │
│ │
استخراج قطعة TCP │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ (
تمرر إلى طبقة النقل) │
│ │
│ 4.
طبقة النقل (TCP) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │
التحقق من المنفذ الوجهة (المطابقة لخدمة الويب) │ │
│ │
ترتيب القطع حسب الأرقام التسلسلية (إن لزم) │ │
│ │
إرسال تأكيدات (ACK) للقطع المستقبلة │ │
│ │
نزع رأس TCP │ │
│ │
استخراج البيانات الخام (HTTP) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ (
تمرر إلى طبقة التطبيق) │
│ │
│ 5.
طبقة التطبيق (HTTP) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │
قراءة طلب HTTP: "GET /index.html" │ │
│ │
تجهيز الرد (Response) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘

2.3.3 دور كل طبقة في فك التغليف

الطبقة

ماذا تفعل عند الاستقبال؟

الوصلة

تتحقق من سلامة الإطار (باستخدام الـ FCS)، وتنزع رأس Ethernet للوصول إلى حزمة IP.

الإنترنت

تتحقق من أن عنوان IP الوجهة يخص هذا الجهاز، وتنزع رأس IP للوصول إلى قطعة TCP.

النقل

تتحقق من المنفذ الوجهة لتعرف أي تطبيق ينتظر البيانات، وتعيد ترتيب القطع إن لزم، وتنزع رأس TCP لتسليم البيانات الخام.

التطبيق

تقرأ البيانات حسب صيغة البروتوكول (مثل HTTP) وتتصرف بناءً عليها (تجهز رد، أو تعرض صفحة، إلخ).




2.4 التمييز بين التغليف والتشفير (Encapsulation vs Encryption)

2.4.1 مشكلة الخلط الشائعة

قد يظن البعض أن التغليف يعني تشفير البيانات، وهذا غير صحيح. المفهومان مختلفان جذرياً، رغم أنهما قد يحدثان معاً في نفس الرحلة (كما في HTTPS).

2.4.2 جدول المقارنة

وجه المقارنة

التغليف (Encapsulation)

التشفير (Encryption)

الهدف

تمكين المعالجة الطبقية والنقل عبر الشبكة

حماية البيانات من القراءة غير المصرح بها

الآلية

إضافة رؤوس ومذايل معلوماتية حول البيانات

تحويل البيانات إلى صيغة غير مقروءة باستخدام خوارزمية ومفتاح

النتيجة

تظل البيانات الأصلية قابلة للقراءة (إذا وصلت للطبقة الصحيحة)

تصبح البيانات غير قابلة للقراءة دون مفتاح فك التشفير

المستوى

يحدث في كل طبقة من النموذج

يحدث عادةً في طبقة التطبيق (مثل TLS) أو طبقة النقل (مثل QUIC)

الإزالة

تُزال الرؤوس عند كل طبقة في المستقبل (فك تغليف)

لا تُزال إلا بمفتاح فك التشفير في الطرف النهائي



2.4.3 مثال توضيحي (HTTPS)

عندما تتصفح موقعاً باستخدام HTTPS، يحدث التالي:

  1. تشفير (Encryption):

    • يقوم بروتوكول TLS بتشفير بيانات HTTP الخام (الطلب أو الرد) باستخدام مفاتيح جلسة مشتركة.

    • الناتج هو بيانات مشفرة غير مفهومة لأي جهة وسيطة.

  2. تغليف (Encapsulation):

    • تُغلف البيانات المشفرة في قطعة TCP (إضافة رأس TCP).

    • تُغلف قطعة TCP في حزمة IP (إضافة رأس IP).

    • تُغلف حزمة IP في إطار Ethernet (إضافة رأس MAC).

┌─────────────────────────────────────────────────────────────────────┐
│ HTTPS (
تغليف + تشفير) │
├─────────────────────────────────────────────────────────────────────┤
│ │
بيانات HTTP الأصلية: │
│ "GET /index.html" │
│ │ │
│ ▼ (
تشفير عبر TLS) │
بيانات مشفرة: │
│ "a8f3e9c2b1d4..." │
│ │ │
│ ▼ (
تغليف في TCP) │
رأس TCP │ بيانات مشفرة │
│ │ │
│ ▼ (
تغليف في IP) │
رأس IP │ رأس TCP │ بيانات مشفرة │
│ │ │
│ ▼ (
تغليف في Ethernet) │
رأس Ethernet │ حزمة IP │ مذيل │
│ │
└─────────────────────────────────────────────────────────────────────┘

في الطرف الآخر (الخادم):

  • تُزال رؤوس التغليف طبقة فطبقة حتى تصل البيانات المشفرة إلى TLS.

  • يقوم TLS بفك تشفير البيانات لاستخراج طلب HTTP الأصلي.

2.4.4 الخلاصة المفاهيمية

التغليف هو آلية النقل، بينما التشفير هو آلية الأمان. يمكن أن يجتمعا معاً، لكن لكل منهما وظيفته المستقلة تماماً.

2.5 التغليف مقابل التجزئة (Encapsulation vs Fragmentation)

2.5.1 الفرق الأساسي

قد يختلط مفهوم التغليف بمفهوم التجزئة (Fragmentation)، وهما مختلفان أيضاً:

المفهوم

التعريف

متى يحدث؟

التغليف

إضافة رؤوس ومذايل إلى البيانات دون تقسيمها

في كل مرة تمر فيها البيانات من طبقة لأخرى

التجزئة

تقسيم البيانات أو الحزم إلى أجزاء أصغر

عندما يتجاوز حجم الحزمة الحد الأقصى المسموح به للوصلة (MTU)



2.5.2 مثال توضيحي

  • التغليف: تأخذ حزمة IP كاملة (قد تكون كبيرة)، وتضعها داخل إطار Ethernet دون تغيير محتواها، فقط تضيف رأس ومذيل Ethernet.

  • التجزئة: إذا كانت حزمة IP أكبر من MTU = 1500 بايت، يقوم جهاز التوجيه (أو المصدر) بتقسيمها إلى عدة حزم IP صغيرة، كل منها تُغلف في إطار منفصل.

ملاحظة: في هذا الكتاب، نكتفي بذكر هذا التمييز المفاهيمي، وسيأتي تفصيل التجزئة في فصول متقدمة عن IP و TCP.


2.6 الصورة الكاملة: التغليف في رحلة طلب ويب

2.6.1 السيناريو المتكامل

لنأخذ السيناريو الأكثر شيوعاً: مستخدم يكتب example.com في متصفحه، ويصل الطلب إلى الخادم.

مراحل التغليف في جهاز العميل:

  1. تطبيق HTTP:

    • يجهز الطلب: GET /index.html HTTP/1.1\r\nHost: example.com\r\n\r\n.

    • هذه هي بيانات التطبيق (Data).

  2. طبقة النقل (TCP):

    • تُضاف معلومات النقل: منفذ المصدر (عشوائي، مثلاً 49152)، منفذ الوجهة (443 للـ HTTPS).

    • تُضاف أرقام تسلسلية لتتبع القطع.

    • الناتج: قطعة TCP (Segment).

  3. طبقة الإنترنت (IP):

    • تُضاف معلومات العنونة: IP المصدر (عنوان العميل)، IP الوجهة (عنوان الخادم الذي حصلنا عليه من DNS).

    • يُضاف TTL (مثلاً 64).

    • الناتج: حزمة IP (Packet).

  4. طبقة الوصلة (Ethernet):

    • تُضاف معلومات الوصلة: MAC المصدر (عنوان بطاقة الشبكة في الجهاز)، MAC الوجهة (عنوان البوابة الافتراضية / Router المحلي).

    • يُضاف مذيل FCS للتحقق من السلامة.

    • الناتج: إطار Ethernet (Frame).

  5. الطبقة الفيزيائية:

    • يُحوّل الإطار إلى نبضات كهربائية (في Ethernet) أو موجات راديوية (في Wi-Fi) وتُرسل عبر الوسط.

2.6.2 ما يحدث عند كل موجه (Router) في الطريق

عندما يصل الإطار إلى الموجه الأول، لا يحدث تغليف جديد بالمعنى الكامل، بل إعادة تغليف:

  1. يستقبل الموجه الإطار من الوصلة الداخلة.

  2. تنزع طبقة الوصلة (Ethernet) رأس ومذيل الإطار، وتستخرج حزمة IP.

  3. تقرأ طبقة الإنترنت عنوان IP الوجهة، وتحدد الـ Next Hop عبر جدول التوجيه.

  4. تنقص قيمة TTL بمقدار 1.

  5. تعيد طبقة الوصلة تغليف حزمة IP في إطار جديد مناسب للوصلة الخارجة، مع عناوين MAC جديدة (المصدر = واجهة الموجه الخارجة، الوجهة = عنوان الـ Next Hop أو الخادم النهائي).

إذاً: الـ IP Packet تبقى نفسها (مع تغيير TTL)، بينما الـ Frame يتغير بالكامل في كل قفزة (Hop).

2.6.3 فك التغليف في الخادم

عند وصول الإطار إلى الخادم، تتم العملية العكسية:

  1. طبقة الوصلة: تنزع رأس Ethernet، تتحقق من FCS، وتستخرج حزمة IP.

  2. طبقة الإنترنت: تتحقق أن IP الوجهة يخص الخادم، تنزع رأس IP، وتستخرج قطعة TCP.

  3. طبقة النقل: تتحقق من المنفذ (443)، ترتب القطع (إن لزم)، ترسل تأكيدات (ACK)، تنزع رأس TCP، وتستخرج بيانات HTTP المشفرة (في HTTPS).

  4. طبقة التطبيق: يفك TLS تشفير البيانات، ويقرأ طلب HTTP، ويجهز الرد.


2.7 ماذا يرى كل جهاز في الشبكة؟

2.7.1 جدول الرؤية حسب الجهاز

الجهاز

يرى هذه الطبقات

لا يرى هذه الطبقات

الملاحظة

المتصفح

التطبيق، النقل، الإنترنت، الوصلة

تفاصيل فيزيائية العمق

يقرأ HTTP ويكتبه

الموجه (Router)

الإنترنت (IP)، الوصلة (MAC)

التطبيق، النقل (TCP/UDP) غالباً

لا يفهم HTTP، ولا يعدل TCP

المبدل (Switch)

الوصلة فقط (MAC)

الإنترنت، النقل، التطبيق

يعتمد على عناوين MAC فقط

الخادم

التطبيق، النقل، الإنترنت، الوصلة

تفاصيل العميل العميقة

يقرأ HTTP، يدير TCP



2.7.2 مثال تطبيقي

إذا كان هناك عطل في الاتصال، يمكن للمهندس تحديد الطبقة التي حدث فيها الخلل بناءً على ما يراه كل جهاز:

  • المتصفح يرى خطأ في HTTP (كود 500).

  • الموجه يرى حزم IP تصل وتُمرر دون مشكلة.

  • الخادم لا يرى طلب HTTP يصل، مما يشير إلى أن المشكلة في طبقة النقل أو الإنترنت.


2.8 الخلاصة: نقاط جوهرية عن التغليف وفك التغليف

النقطة

الشرح

التغليف هو إضافة الرؤوس

كل طبقة تضيف رأسها الخاص إلى البيانات القادمة من الأعلى.

التغليف عكوس

في الطرف الآخر، تُزال الرؤوس بنفس الترتيب (فك تغليف).

كل طبقة تهتم بما يخصها فقط

طبقة النقل تهتم بالمنافذ والأرقام التسلسلية، طبقة الإنترنت تهتم بالعناوين، إلخ.

التغليف ليس تشفيراً

التغليف يضيف معلومات، التشفير يغير البيانات ذاتها.

التغليف يتكرر عند كل Hop

في كل موجه، يُزال الإطار القديم ويُبنى إطار جديد للوصلة التالية، بينما تبقى حزمة IP (مع تعديل TTL).

التغليف يمكّن التجريد

طبقة التطبيق لا تعرف كيف تنتقل البيانات فعلياً؛ كل ما تعرفه أنها تسلم البيانات لطبقة النقل وتستلمها منها.




2.9 أسئلة فهم الفصل

  1. ما المشكلة الأساسية التي يحلها التغليف في نموذج TCP/IP؟

  2. ما الفرق بين البيانات (Data) والقطعة (Segment) والحزمة (Packet) والإطار (Frame)؟

  3. لماذا تُضاف رؤوس مختلفة في كل طبقة، بدلاً من استخدام رأس واحد موحد؟

  4. ما الذي يحدث للإطار (Frame) عندما يمر عبر موجه (Router)؟ وهل يبقى نفس الإطار طوال الرحلة؟

  5. ما الفرق بين التغليف (Encapsulation) وفك التغليف (Decapsulation)؟ ومتى يحدث كل منهما؟

  6. كيف يختلف التغليف عن التشفير (Encryption)؟ أعط مثالاً على تطبيقهما معاً.

  7. ما الفرق بين التغليف والتجزئة (Fragmentation)؟

  8. لماذا لا يحتاج الموجه (Router) إلى فك تغليف طبقة التطبيق (مثل HTTP)؟

  9. في أي طبقة تُضاف عناوين MAC؟ وفي أي طبقة تُضاف عناوين IP؟ ولماذا؟

  10. اشرح رحلة بيانات HTTP من المتصفح إلى الخادم باستخدام مصطلحات التغليف وفك التغليف، مع ذكر كل طبقة ودورها.


انتقال إلى الفصل الثالث: في الفصل القادم، سنتوسع في مفهوم آخر محوري لفهم الشبكات، وهو الفرق بين الاتصال المنطقي (End-to-End) و التسليم الفعلي (Hop-by-Hop)، وكيف أن التغليف الذي درسناه هنا يربط بين هذين المستويين.

الفصل الثالث: أنماط الاتصال (من طرف لطرف مقابل خطوة بخطوة)


تمهيد الفصل

بعد أن فهمنا في الفصلين السابقين البنية المعمارية للنموذج (الفصل الأول) وآلية نقل البيانات عبر التغليف وفك التغليف (الفصل الثاني)، نصل الآن إلى سؤال محوري:

عندما تنتقل البيانات من المتصفح إلى الخادم، هل هي رحلة واحدة متصلة منطقياً، أم أنها سلسلة من الرحلات الصغيرة المستقلة؟

الإجابة: كلاهما معاً. هناك بعدان لهذه الرحلة:

  • بعد منطقي: يمتد من الطرف الأول إلى الطرف الأخير (المتصفح ↔ الخادم).

  • بعد فيزيائي: يتكرر على كل وصلة بين جهازين متجاورين (المتصفح ← الموجه أ ← الموجه ب ← الخادم).

هذا الفصل مخصص لفهم هذين البعدين، وكيف يتفاعلان، ولماذا يمثل هذا التمييز أحد أهم مفاهيم هندسة الشبكات والويب.


3.1 المفهومان الأساسيان وتعريف كل منهما

3.1.1 الاتصال من طرف لطرف (End-to-End)

التعريف: هو العلاقة المنطقية التي تمتد بين الطرفين النهائيين في الاتصال (العميل والخادم)، دون أن تصبح الأجهزة الوسيطة أطرافاً فيها.

أمثلة:

  • اتصال TCP: ينشأ بين المتصفح والخادم، ويحافظ على حالته (أرقام تسلسلية، نوافذ ازدحام) عبر الرحلة بأكملها.

  • جلسة TLS: التشفير والمصادقة يحدثان بين المتصفح والخادم مباشرة.

  • طلب HTTP: المتصفح يطلب صفحة، والخادم يرد بها، دون أن يفهم الـ Router محتوى الطلب.

تمثيل:

[المتصفح] ════════════════════ [الخادم]
(
اتصال TCP منطقي)

3.1.2 التسليم خطوة بخطوة (Hop-by-Hop)

التعريف: هو العمليات التي تحدث فعلياً على كل وصلة محلية بين جهازين متجاورين، وتتكرر في كل قفزة (Hop) من الرحلة.

أمثلة:

  • تمرير الإطارات (Frames): كل إطار Ethernet يُرسل من جهاز إلى الجهاز التالي على نفس الشبكة المحلية.

  • قرارات التوجيه (Routing): كل موجه يقرر إلى أين يرسل الحزمة بناءً على جدول توجيهه المحلي.

  • تغيير عناوين MAC: تُعاد كتابة عناوين MAC في كل Hop.

تمثيل:

[العميل] ── Hop 1 ──► [موجه أ] ── Hop 2 ──► [موجه ب] ── Hop 3 ──► [الخادم]
(
إطار 1) (إطار 2) (إطار 3)

3.1.3 جدول المقارنة الأساسي

وجه المقارنة

من طرف لطرف (End-to-End)

خطوة بخطوة (Hop-by-Hop)

النطاق

بين الطرفين النهائيين

بين كل جهازين متجاورين

الوظيفة

اتصال منطقي، معنى البيانات

تسليم محلي، تمرير فعلي

الأمثلة

TCP، TLS، HTTP

Ethernet Frames، Routing Decisions

الأطراف

العميل والخادم فقط

كل جهاز في المسار

المدة

يستمر طوال الرحلة

يتكرر في كل قفزة

الرؤية

تراه التطبيقات

تراه الأجهزة الوسيطة




3.2 توضيح المغزى الحقيقي للاتصال من طرف لطرف

3.2.1 مفهوم خاطئ شائع

قد يظن البعض أن "من طرف لطرف" يعني أن البيانات تنتقل مباشرة من العميل إلى الخادم دون أجهزة وسيطة، وكأن هناك قناة خاصة بينهما.

3.2.2 التصحيح

End-to-End لا يعني عدم وجود أجهزة وسيطة. بل يعني أن هذه الأجهزة الوسيطة (كالمجاه) تقوم بالتمرير فقط، ولا تصبح أطرافاً في الاتصال المنطقي.

مثال توضيحي:

  • عند إرسال رسالة بريدية، تمر الرسلة عبر عدة مكاتب بريد وسيطة.

  • لكن الرسالة موجهة من المرسل إلى المستقبل فقط.

  • المكاتب الوسيطة لا تفتح الظرف، ولا تقرأ المحتوى، ولا تغير المرسل أو المستقبل.

في الشبكات:

  • حزم IP تمر عبر عدة موجّهات.

  • الموجّهات تقرأ عنوان IP الوجهة فقط لتقرر أين ترسل الحزمة بعد ذلك.

  • الموجّهات لا تفتح محتوى TCP، ولا تقرأ بيانات HTTP، ولا تغير عنوان IP الوجهة (إلا في حالات خاصة كـ NAT).

3.2.3 التمثيل الصحيح

[المتصفح] ═══════════ (TCP Connection) ═══════════ [الخادم]
↑ ↑ ↑
[
موجه أ] [موجه ب] [موجه ج]
(
يمرر فقط) (يمرر فقط) (يمرر فقط)

الخط المنقط (═══) يمثل الاتصال المنطقي المستمر بين الطرفين. الموجّهات ليست نقاطاً في هذا الخط، بل هي مجرد محطات تمرير.


3.3 تحديد الأطراف النهائية ومستويات التمييز

3.3.1 من هو "الطرف"؟

الطرف النهائي في الاتصال ليس مجرد جهاز مادي، بل هو تطبيق يستخدم الشبكة. لكن يجب التمييز بين عدة مستويات:

المستوى

التعريف

مثال

الجهاز (Device)

القطعة المادية

الحاسوب، الخادم، الهاتف

نظام التشغيل

البرنامج الذي يدير الجهاز

Windows، Linux، macOS

عنوان IP

المعرف المنطقي للجهاز على الشبكة

192.168.1.10

المنفذ (Port)

المعرف الذي يحدد التطبيق/الخدمة

443 (HTTPS)، 80 (HTTP)

نقطة النهاية (Endpoint)

IP + Port

192.168.1.10:443

التطبيق (Application)

البرنامج الذي يستخدم الاتصال

متصفح، خادم ويب، تطبيق جوال



3.3.2 مثال تطبيقي

عندما تتصفح example.com:

  • الجهاز: حاسوبك الشخصي.

  • نظام التشغيل: يوفر واجهة برمجة (Socket API) للاتصال.

  • IP المصدر: عنوان حاسوبك على الشبكة (مثل 192.168.1.10).

  • المنفذ المصدر: رقم عشوائي تحدده نظام التشغيل (مثل 49152).

  • IP الوجهة: عنوان خادم example.com (مثل 203.0.113.10).

  • المنفذ الوجهة: 443 (لـ HTTPS).

  • نقطة النهاية الوجهة: 203.0.113.10:443.

  • التطبيق: متصفحك (Chrome، Firefox، إلخ) من جهة، وخادم الويب (Apache، Nginx) من جهة أخرى.

الطرفان النهائيان هما التطبيقان (المتصفح وخادم الويب)، وليس الجهازين فقط.


3.4 نظرة كل جهاز في الشبكة

3.4.1 ماذا يرى كل جهاز؟

الجهاز

الطبقات التي يتعامل معها

لا يحتاج إلى فهم

السبب

المتصفح (العميل)

التطبيق، النقل، الإنترنت، الوصلة

تفاصيل التوجيه الداخلية

دوره هو إرسال الطلب وعرض الرد

الخادم

التطبيق، النقل، الإنترنت، الوصلة

تفاصيل العميل العميقة

دوره هو استقبال الطلب وإرسال الرد

الموجه (Router)

الإنترنت (IP)، الوصلة (MAC)

HTTP، HTML، TLS، محتوى TCP

وظيفته تمرير الحزم فقط

المبدل (Switch)

الوصلة فقط (MAC)

IP، HTTP

وظيفته تمرير الإطارات محلياً



3.4.2 مثال توضيحي: ماذا يرى الموجه؟

عندما يصل إطار إلى موجه، يقوم الموجه بالخطوات التالية:

  1. ينزع رأس Ethernet (طبقة الوصلة) ليصل إلى حزمة IP.

  2. يقرأ عنوان IP الوجهة من رأس IP.

  3. يبحث في جدول التوجيه عن المسار المناسب.

  4. يحدد الـ Next Hop والواجهة الخارجة.

  5. يبني إطاراً جديداً بعناوين MAC جديدة ويرسله.

الموجه لا يحتاج إلى معرفة:

  • أن البيانات الموجودة داخل حزمة IP هي طلب HTTP.

  • ما هي رؤوس TCP (المنافذ، الأرقام التسلسلية).

  • ما هو محتوى TLS المشفر.

  • ما هي لغة HTML أو JSON.

لماذا؟ لأن وظيفة الموجه هي التوجيه على مستوى الشبكة (IP)، وليس فهم التطبيقات.


3.5 توضيح دور الموجه في اتصال TCP

3.5.1 تصور خاطئ شائع

قد يظن البعض أن اتصال TCP يمر عبر كل موجه، وأن كل موجه ينشئ اتصال TCP مع الموجه التالي:

[العميل] ←─ TCP ─→ [موجه أ] ←─ TCP ─→ [موجه ب] ←─ TCP ─→ [الخادم]

3.5.2 التصحيح

هذا التصور خاطئ تماماً. اتصال TCP ينشأ لمرة واحدة بين العميل والخادم، ولا تشارك فيه الموجّهات كأطراف.

الرسم الصحيح:

[العميل] ════════════ (اتصال TCP واحد) ════════════ [الخادم]
↑ ↑
[
موجه أ] [موجه ب]
(
يمرر حزم IP فقط) (يمرر حزم IP فقط)

3.5.3 ماذا تفعل الموجّهات بحزم TCP؟

  • الموجّهات تستقبل حزمة IP التي تحوي بداخلها قطعة TCP.

  • تنظر إلى عنوان IP الوجهة في رأس IP (وليس إلى رأس TCP).

  • تقرر أين ترسل الحزمة بناءً على جدول التوجيه.

  • لا تفتح قطعة TCP، ولا تقرأ المنافذ، ولا تعدل الأرقام التسلسلية.

إذن: الموجّهات تتعامل مع حزم IP، وليس مع اتصال TCP. هي مجرد "سعاة بريد" ينقلون الحزم دون فتحها.

3.5.4 استثناءات

هناك حالات قد تتدخل فيها أجهزة وسيطة في اتصال TCP:

  • جدار ناري (Firewall): قد يفحص رؤوس TCP (مثل المنافذ) ويطبق سياسات.

  • موازن تحميل (Load Balancer) من Layer 4: قد يعيد توجيه الحزم بناءً على منافذ TCP.

  • Proxy: قد ينهي اتصال TCP من العميل وينشئ اتصالاً جديداً مع الخادم.

لكن هذه استثناءات وليست القاعدة. في الحالة العادية، الموجّهات لا تشارك في اتصال TCP.


3.6 تأثير الأجهزة الوسيطة على الاتصال من طرف لطرف

في الشبكات الحديثة، قد توجد أجهزة وسيطة تؤثر على نقاء مبدأ End-to-End. من المهم فهم كل جهاز ودوره.

3.6.1 الجدول الشامل للأجهزة الوسيطة

الجهاز

المستوى

الوظيفة الأساسية

هل ينهي الاتصال؟

التأثير على End-to-End

الموجه (Router)

الإنترنت (IP)

توجيه الحزم بين الشبكات

لا (عادةً)

لا يؤثر (يمرر فقط)

المبدل (Switch)

الوصلة (MAC)

تمرير الإطارات محلياً

لا

لا يؤثر (يمرر فقط)

الجدار الناري (Firewall)

الإنترنت، النقل، أحياناً التطبيق

فحص الحزم وتطبيق سياسات أمنية

لا (عادةً)

قد يمنع أو يعدل بعض الحزم

NAT

الإنترنت (IP)

ترجمة العناوين الخاصة إلى عامة

لا (لكنه يعدل العناوين)

يكسر End-to-End جزئياً

الوكيل (Proxy)

التطبيق، النقل

وسيط بين العميل والخادم

نعم (ينهي اتصال العميل)

يكسر End-to-End تماماً

موازن التحميل (Load Balancer)

النقل (Layer 4) أو التطبيق (Layer 7)

توزيع الطلبات على خوادم متعددة

قد ينهي (Layer 7) أو لا (Layer 4)

قد يكسر أو يحافظ حسب النوع



3.6.2 شرح مفصل لكل جهاز

أ. الموجه (Router)

  • المستوى: طبقة الإنترنت (IP) والوصلة.

  • الوظيفة: يقرر أين يرسل الحزمة التالية بناءً على عنوان IP الوجهة.

  • التأثير على End-to-End: لا يؤثر. يمرر الحزم دون تغيير المحتوى (عدا TTL).

  • مثال: جهاز التوجيه المنزلي الذي يوصل شبكتك بالإنترنت.

ب. المبدل (Switch)

  • المستوى: طبقة الوصلة (MAC).

  • الوظيفة: يمرر الإطارات بين الأجهزة على نفس الشبكة المحلية بناءً على عناوين MAC.

  • التأثير على End-to-End: لا يؤثر. يمرر الإطارات دون تغيير محتوى حزمة IP.

  • مثال: مبدل Ethernet في المكتب.

ج. الجدار الناري (Firewall)

  • المستوى: غالباً طبقة الإنترنت والنقل، وأحياناً التطبيق.

  • الوظيفة: يفحص الحزم الواردة والصادرة، ويطبق سياسات أمنية (مثل منع منافذ معينة، أو حظر عناوين IP).

  • التأثير على End-to-End: قد يؤثر إذا منع أو عدل الحزم، لكنه عادة لا ينهي الاتصال.

  • مثال: جدار ناري في شبكة الشركة يمنع الوصول إلى منافذ معينة.

د. NAT (ترجمة العناوين)

  • المستوى: طبقة الإنترنت (IP).

  • الوظيفة: يحول عناوين IP الخاصة (مثل 192.168.x.x) إلى عناوين عامة عند الخروج إلى الإنترنت.

  • التأثير على End-to-End: يكسر المبدأ جزئياً، لأنه يغير عنوان IP المصدر والمنفذ أثناء العبور، مما يجعل الخادم يرى عنواناً مختلفاً عن عنوان العميل الحقيقي.

  • مثال: جهاز التوجيه المنزلي الذي يستخدم NAT لتسمح لأجهزة متعددة بمشاركة عنوان عام واحد.

هـ. الوكيل (Proxy)

  • المستوى: طبقة التطبيق أو النقل.

  • الوظيفة: يعمل كوسيط بين العميل والخادم. يستقبل طلبات العميل، ويرسلها إلى الخادم، ويعيد الرد إلى العميل.

  • التأثير على End-to-End: يكسر المبدأ تماماً، لأنه ينهي اتصال العميل وينشئ اتصالاً جديداً مع الخادم.

  • مثال: وكيل ويب في شركة يستخدم للتصفية أو التخزين المؤقت.

التمثيل:

[العميل] ═══ (اتصال 1) ═══ [الوكيل] ═══ (اتصال 2) ═══ [الخادم]

هنا لم يعد هناك اتصال واحد من طرف لطرف؛ بل اتصالان منفصلان.

و. موازن التحميل (Load Balancer)

  • المستوى:

    • Layer 4: يعمل على مستوى النقل (TCP/UDP)، ويمرر الحزم بناءً على المنافذ دون فتحها.

    • Layer 7: يعمل على مستوى التطبيق (HTTP)، ويمكنه فحص الطلبات وتوزيعها بناءً على المسار أو الرأس.

  • التأثير على End-to-End:

    • Layer 4: يحافظ على End-to-End (يمرر فقط).

    • Layer 7: يكسر End-to-End (ينهي الاتصال ويعيد إنشاءه).

  • مثال: موازن تحميل في مركز بيانات لتوزيع حركة المرور على خوادم ويب متعددة.


3.7 منهجية تحليل أي بنية شبكية

3.7.1 الأسئلة الستة الذهبية

عند مواجهة أي بنية شبكية (مهما كانت معقدة)، يمكن للمهندس استخدام هذه الأسئلة لفهمها:

  1. من هما الطرفان النهائيان؟

    • حدد التطبيقات التي تتواصل (مثل متصفح ↔ خادم ويب).

  2. ما الوظيفة التي تمتد بينهما؟

    • هل هي اتصال TCP؟ جلسة TLS؟ طلب HTTP؟

  3. ما الأجهزة الوسيطة الموجودة؟

    • حدد كل جهاز بين الطرفين (موجهات، جدران نارية، وكلاء، موازنات تحميل).

  4. ماذا تفعل هذه الأجهزة بالضبط؟

    • هل تمرر فقط؟ هل تفحص؟ هل تعدل؟ هل تترجم؟

  5. هل الوسيط يقوم بـ Forwarding أم Connection Termination؟

    • هل يمرر الحزم دون تغيير (يمرر)؟ أم ينهي اتصالاً وينشئ آخر (إنهاء)؟

  6. هل الاتصال ما زال End-to-End أم أصبح اتصالين منفصلين (1+2)؟

    • بناءً على الإجابة السابقة، حدد ما إذا كان المبدأ الأصلي محفوظاً أم مكسوراً.

3.7.2 مثال تطبيقي

السيناريو: مستخدم في شركة يستخدم متصفحاً للوصول إلى تطبيق ويب خارجي. البنية كالتالي:

[المتصفح] → [جدار ناري] → [وكيل] → [موازن تحميل Layer 7] → [خادم الويب]

التطبيق:

  1. من هما الطرفان؟

    • المتصفح (العميل) وخادم الويب (الخادم).

  2. ما الوظيفة؟

    • طلب HTTP عبر TLS (HTTPS).

  3. ما الأجهزة الوسيطة؟

    • جدار ناري، وكيل، موازن تحميل Layer 7.

  4. ماذا تفعل؟

    • الجدار الناري: يفحص الحزم ويطبق سياسات.

    • الوكيل: ينهي اتصال TLS من العميل، ويفحص الطلب، وينشئ اتصالاً جديداً مع موازن التحميل.

    • موازن التحميل Layer 7: ينهي اتصال TLS من الوكيل، ويوزع الطلب على خادم ويب محدد.

  5. Forwarding أم Connection Termination؟

    • الوكيل: Connection Termination (ينهي الاتصال).

    • موازن التحميل: Connection Termination (ينهي الاتصال).

  6. هل الاتصال End-to-End؟

    • لا. الاتصال الأصلي بين المتصفح والخادم مكسور. لدينا ثلاثة اتصالات منفصلة:

      • المتصفح ↔ الوكيل

      • الوكيل ↔ موازن التحميل

      • موازن التحميل ↔ خادم الويب


3.8 الصورة الكاملة: ربط End-to-End و Hop-by-Hop مع التغليف

3.8.1 النموذج المتكامل

الآن يمكننا ربط كل ما تعلمناه في نموذج واحد:

┌─────────────────────────────────────────────────────────────────────────────┐
│ END-TO-END (
منطقي) │
│ │
│ [
المتصفح] ═══════════════════════════════════ [الخادم] │
│ (TCP/TLS/HTTP
منطقياً) │
│ │
├─────────────────────────────────────────────────────────────────────────────┤
│ HOP-BY-HOP (
فعلي) │
│ │
│ Hop 1 Hop 2 Hop 3 Hop 4 │
عميل → موجه أ → موجه ب → موجه ج → خادم │
│ │
إطار 1 إطار 2 إطار 3 إطار 4 │
│ (MAC:
عميل→أ) (MAC:أ→ب) (MAC:ب→ج) (MAC:ج→خادم) │
│ │
حزمة IP (نفسها مع تغيير TTL) ← تبقى من طرف لطرف │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

3.8.2 ما يبقى وما يتغير

المستوى

ما يبقى ثابتاً

ما يتغير

End-to-End

عناوين IP المصدر والوجهة (عادةً)، أرقام تسلسل TCP، بيانات HTTP/TLS

-

Hop-by-Hop

-

عناوين MAC، الإطارات، TTL (ينقص)



3.8.3 دور التغليف في ربط المستويين

  • التغليف هو الآلية التي تسمح بوجود هذين البعدين معاً.

  • الطبقات العليا (التطبيق، النقل) تهتم بالاتصال المنطقي (End-to-End).

  • الطبقات الدنيا (الإنترنت، الوصلة) تهتم بالتسليم الفعلي (Hop-by-Hop).

  • التغليف يحافظ على معلومات End-to-End داخل الحزمة، بينما تُعاد كتابة معلومات Hop-by-Hop في كل قفزة.


3.9 خلاصة الفصل

النقطة

الشرح

End-to-End هو المنطق، Hop-by-Hop هو الفيزياء

الأول يصف العلاقة بين التطبيقات، والثاني يصف الآلية الفعلية للنقل.

End-to-End لا يعني عدم وجود أجهزة وسيطة

بل يعني أن هذه الأجهزة لا تصبح أطرافاً في الاتصال المنطقي.

الموجهات لا تشارك في اتصال TCP

تتعامل مع حزم IP فقط، ولا تفتح قطعات TCP.

بعض الأجهزة تكسر End-to-End

مثل Proxy و NAT و Load Balancer Layer 7.

التحليل المنهجي

استخدم الأسئلة الستة لفهم أي بنية شبكية.

التغليف يربط المستويين

الطبقات العليا تهتم بـ End-to-End، والدنيا بـ Hop-by-Hop.




3.10 أسئلة فهم الفصل

  1. ما الفرق بين الاتصال من طرف لطرف (End-to-End) والتسليم خطوة بخطوة (Hop-by-Hop)؟

  2. لماذا لا يعني End-to-End عدم وجود أجهزة وسيطة في المسار؟

  3. ما هي مستويات تعريف "الطرف" في الاتصال (جهاز، IP، منفذ، تطبيق)؟ أعط مثالاً لكل منها.

  4. لماذا لا يحتاج الموجه (Router) إلى فهم محتوى HTTP أو HTML؟

  5. ما هو التصور الخاطئ حول دور الموجه في اتصال TCP، وما هو التصحيح؟

  6. كيف يؤثر NAT على مبدأ End-to-End؟

  7. ما الفرق بين الوكيل (Proxy) والموجه (Router) من حيث تأثيرهما على End-to-End؟

  8. كيف يختلف موازن التحميل Layer 4 عن Layer 7 من حيث الحفاظ على End-to-End؟

  9. ما هي الأسئلة الستة التي يمكن استخدامها لتحليل أي بنية شبكية؟

  10. في بنية تحتوي على: متصفح ← جدار ناري ← موازن تحميل Layer 7 ← خادم، هل الاتصال End-to-End؟ وضح ذلك.

  11. كيف يرتبط التغليف (Encapsulation) بمفهومي End-to-End و Hop-by-Hop؟

  12. ما الذي يبقى ثابتاً عبر الرحلة بأكملها، وما الذي يتغير عند كل Hop؟


انتقال إلى الفصل الرابع: في الفصل القادم، سنتعمق في طبقة الإنترنت، حيث ندرس آليات العنونة (IP Addressing) والتوجيه (Routing) التي تمثل العمود الفقري لاتصال End-to-End. سنتعرف على عناوين IPv4 و IPv6، والفرق بين العناوين العامة والخاصة، ودور NAT، ومفهوم البوابة الافتراضية.

الفصل الرابع: طبقة الإنترنت (العنونة والتوجيه)


تمهيد الفصل

بعد أن تعرفنا في الفصول السابقة على البنية العامة للنموذج (الفصل الأول)، وآلية نقل البيانات (الفصل الثاني)، وأنماط الاتصال (الفصل الثالث)، ننتقل الآن إلى طبقة الإنترنت، التي تمثل قلب نموذج TCP/IP النابض.

هذه الطبقة هي المسؤولة عن العنونة المنطقية و التوجيه، أي تحديد "إلى أين" يجب أن تذهب البيانات، وكيف تجد طريقها عبر شبكات متعددة ومترابطة.

سنتعرف في هذا الفصل على:

  • عنوان IP ومكوناته.

  • الفروق بين IPv4 و IPv6.

  • أنواع العناوين واستخداماتها.

  • NAT ودورها في الشبكات الحديثة.

  • التقسيم المنطقي للشبكات (Subnetting) و CIDR.

  • البوابة الافتراضية ودورها المحوري.

هذه المفاهيم هي العمود الفقري الذي يقوم عليه اتصال الإنترنت بأكمله، وفهمها ضروري لأي مهندس ويب.


4.1 عنوان IP (المفهوم، الخصائص، والمقارنة)

4.1.1 تعريف عنوان IP

عنوان IP (Internet Protocol Address) هو معرف منطقي يُستخدم لتحديد واجهة شبكية ضمن نظام عنونة IP، ويساعد بروتوكول IP في توجيه الحزم نحو وجهتها الصحيحة عبر الشبكات المترابطة.

4.1.2 خصائص عنوان IP الأساسية

  1. عنوان منطقي وليس مادياً: على عكس عنوان MAC، لا يرتبط IP بالعتاد بشكل دائم. يمكن تغييره بسهولة، ويمكن لجهاز واحد أن يحمل عدة عناوين IP (عبر واجهات متعددة).

  2. يعمل على مستوى الشبكة: يُستخدم في طبقة الإنترنت لتحديد الوجهة بين الشبكات، وليس داخل الشبكة المحلية فقط.

  3. لا يحدد التطبيق: IP يحدد الجهاز أو الواجهة الشبكية، بينما المنفذ (Port) هو الذي يحدد التطبيق المطلوب على ذلك الجهاز.

  4. قد يكون خاصاً أو عاماً: بعض العناوين صالحة للاستخدام على الإنترنت العالمي (عامة)، والبعض الآخر مخصص للاستخدام داخل الشبكات المحلية فقط (خاصة).

  5. قد يتغير أثناء الرحلة: بفضل تقنيات مثل NAT، يمكن أن يُترجم عنوان IP المصدر أو الوجهة أثناء عبور الحزمة للشبكة.

4.1.3 المقارنة الثلاثية الأساسية (IP - MAC - Port)

لفهم دور IP بشكل كامل، لا بد من مقارنته بمفهومين آخرين مهمين: MAC و Port.

المعيار

عنوان IP

عنوان MAC

المنفذ (Port)

المستوى

طبقة الإنترنت (Internet)

طبقة الوصلة (Link)

طبقة النقل (Transport)

الوظيفة

تحديد الوجهة الشبكية

التسليم على الوصلة المحلية

تحديد التطبيق/الخدمة

النطاق

بين الشبكات (من طرف لطرف)

الوصلة المحلية (Hop-by-Hop)

نقطة النهاية على الجهاز

التغيير أثناء الرحلة

قد يتغير (مع NAT)

يتغير في كل Hop

قد يتغير (مع NAT)

المثال

192.168.1.10

00:1A:2B:3C:4D:5E

443 (HTTPS)

السؤال الذي يجيب عنه

إلى أي شبكة/جهاز؟

من على هذه الوصلة؟

أي تطبيق/خدمة؟



الخريطة الذهنية للتمييز:

┌─────────────────────────────────────────────────────────────────┐
إلى أين تذهب البيانات؟ │
├─────────────────────────────────────────────────────────────────┤
│ │
│ IP Address →
أي جهاز على الشبكات؟ (العنونة المنطقية) │
│ Port →
أي تطبيق على هذا الجهاز؟ (تحديد الخدمة) │
│ MAC Address →
أي جهاز على هذه الوصلة المحلية؟ (العنونة │
الفيزيائية المحلية) │
│ │
└─────────────────────────────────────────────────────────────────┘

4.1.4 لماذا لا يكفي عنوان IP وحده؟

قد يتساءل البعض: إذا كان IP يحدد الجهاز، فلماذا نحتاج إلى المنفذ (Port) أيضاً؟

الجواب: لأن الجهاز الواحد قد يشغل عدة خدمات في نفس الوقت. على سبيل المثال، خادم ويب واحد قد يشغل:

  • خدمة HTTP على المنفذ 80.

  • خدمة HTTPS على المنفذ 443.

  • خدمة SSH على المنفذ 22.

  • خدمة قاعدة بيانات على المنفذ 3306.

عنوان IP وحده يوصلك إلى الجهاز، لكن المنفذ هو الذي يحدد أي تطبيق على ذلك الجهاز يجب أن يستقبل البيانات.


4.2 نظرة عامة على IPv4 و IPv6

4.2.1 IPv4 (الإصدار الرابع)

IPv4 هو الإصدار الأقدم والأكثر انتشاراً من بروتوكول الإنترنت، وقد صُمم في السبعينيات.

الخاصية

التفاصيل

حجم العنوان

32 بت (4 بايتات)

التمثيل العشري المنقط

192.168.1.10 (كل جزء 8 بت، من 0 إلى 255)

عدد العناوين

2³² ≈ 4.3 مليار عنوان

الحالة

لا يزال مستخدماً على نطاق واسع، لكنه في طريقه للنفاد

مشكلة أساسية

ندرة العناوين (تم استنفاد الكتل الرئيسية في 2011)

الحلول

NAT، CIDR، التوجه إلى IPv6



مثال:

  • عنوان عام: 203.0.113.10

  • عنوان خاص: 192.168.1.10

  • عنوان النطاق المحلي: 127.0.0.1

4.2.2 IPv6 (الإصدار السادس)

IPv6 هو الإصدار الأحدث، صُمم لحل مشكلة ندرة العناوين في IPv4، ويوفر عدداً هائلاً من العناوين.

الخاصية

التفاصيل

حجم العنوان

128 بت (16 بايت)

التمثيل السداسي عشري

2001:db8::1 (ثماني مجموعات من 16 بت، مفصولة بنقطتين)

عدد العناوين

2¹²⁸ ≈ 3.4 × 10³⁸ (عدد هائل لا ينفد)

الحالة

قيد النشر التدريجي، لكن اعتماده لا يزال محدوداً

مميزات إضافية

أمان مدمج (IPsec)، تحسينات في التوجيه، إلغاء الحاجة لـ NAT

التمثيل المختصر

يمكن حذف الأصفار المتتالية (مثل ::) لتبسيط الكتابة



مثال:

  • عنوان كامل: 2001:0db8:85a3:0000:0000:8a2e:0370:7334

  • عنوان مختصر: 2001:db8:85a3::8a2e:370:7334

4.2.3 مقارنة سريعة بين IPv4 و IPv6

وجه المقارنة

IPv4

IPv6

حجم العنوان

32 بت

128 بت

عدد العناوين

4.3 مليار

3.4 × 10³⁸

التمثيل

عشري منقط (مثل 192.168.1.1)

سداسي عشري (مثل 2001:db8::1)

NAT

شائع الاستخدام

غير مطلوب (لكل جهاز عنوان فريد)

الأمان

اختياري (IPsec خارجي)

مدمج (IPsec أساسي)

التوجيه

جداول توجيه أكبر

جداول توجيه أصغر بفضل التجميع الهرمي

الانتشار

مستخدم في كل مكان

قيد النشر التدريجي




4.3 العناوين العامة، الخاصة، والنطاق المحلي

4.3.1 العنوان العام (Public IP)

التعريف: عنوان فريد عالمياً، يمكن الوصول إليه من أي مكان على الإنترنت.

الخصائص:

  • يُخصص من قبل هيئة الإنترنت للأرقام المخصصة (IANA) عبر مزودي خدمة الإنترنت (ISPs).

  • يجب أن يكون فريداً على مستوى العالم.

  • يُستخدم للخوادم والأجهزة التي تحتاج إلى اتصال مباشر من الإنترنت.

مثال: 203.0.113.10 (عنوان خادم ويب عام).

4.3.2 العنوان الخاص (Private IP)

التعريف: عنوان مخصص للاستخدام داخل الشبكات المحلية (LANs) فقط، ولا يمكن الوصول إليه مباشرة من الإنترنت.

الخصائص:

  • محجوز بواسطة IANA ولا يُستخدم على الإنترنت العام.

  • يمكن لأي شبكة محلية استخدام نفس النطاقات الخاصة دون تعارض (لأنها غير متصلة مباشرة).

  • يحتاج إلى NAT للاتصال بالإنترنت.

النطاقات الخاصة في IPv4:

النطاق

القناع الافتراضي

عدد العناوين

10.0.0.0 - 10.255.255.255

/8 (255.0.0.0)

16,777,216

172.16.0.0 - 172.31.255.255

/12 (255.240.0.0)

1,048,576

192.168.0.0 - 192.168.255.255

/16 (255.255.0.0)

65,536



مثال: 192.168.1.10 (عنوان جهاز في شبكة منزلية).

4.3.3 النطاق المحلي (Loopback)

التعريف: عنوان خاص يشير إلى الجهاز نفسه، يُستخدم للاختبار والتواصل الداخلي.

الخصائص:

  • يبدأ بـ 127.xxx.xxx.xxx في IPv4.

  • أشهر عنوان هو 127.0.0.1 (ويُعرف أيضاً بـ localhost).

  • لا يغادر الجهاز أبداً؛ أي حزمة موجهة إليه تعود إلى نفس الجهاز.

  • يُستخدم لاختبار خدمات الشبكة محلياً دون الحاجة لشبكة فعلية.

مثال: 127.0.0.1 (الجهاز نفسه).

4.3.4 تطبيقات عملية للعناوين في هندسة الويب

  • التطوير المحلي: استخدام localhost أو 127.0.0.1 لتشغيل خادم ويب محلي (مثل XAMPP أو Node.js) دون الحاجة لشبكة خارجية.

  • الشبكات المنزلية: استخدام عناوين خاصة (مثل 192.168.1.x) لأجهزة المنزل، وتقوم NAT بترجمتها إلى عنوان عام عند الخروج للإنترنت.

  • الخوادم العامة: تحتاج إلى عنوان عام ثابت (أو يتم توجيهها عبر DNS) لتكون متاحة للجميع على الإنترنت.


4.4 آلية ترجمة العناوين (NAT) وتأثيرها

4.4.1 تعريف NAT

NAT اختصار لـ (Network Address Translation)، وهي آلية تسمح لأجهزة متعددة في شبكة خاصة (بعناوين خاصة) بمشاركة عنوان عام واحد عند الاتصال بالإنترنت.

4.4.2 كيف تعمل NAT؟

┌─────────────────────────────────────────────────────────────────────┐
كيف تعمل NAT │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1.
جهاز في الشبكة الداخلية (192.168.1.10:49152) يريد الاتصال │
بخادم عام (203.0.113.10:443). │
│ │
│ 2.
تمر الحزمة عبر جهاز NAT (الراوتر المنزلي). │
│ │
│ 3.
يقوم NAT بتعديل الحزمة: │
│ -
يستبدل عنوان IP المصدر الخاص بعنوان عام (مثل 1.2.3.4). │
│ -
يستبدل المنفذ المصدر بمنفذ جديد (مثل 54321). │
│ -
يحتفظ بجدول لربط العنوان الداخلي بالعنوان الخارجي. │
│ │
│ 4.
يرسل الحزمة إلى الإنترنت مع العنوان العام. │
│ │
│ 5.
عندما يعود الرد من الخادم، يقرأ NAT الجدول، ويستبدل │
عنوان الوجهة العام والعام بالعنوان الخاص الأصلي. │
│ │
└─────────────────────────────────────────────────────────────────────┘

التمثيل المبسط:

قبل NAT:  [192.168.1.10:49152] → [203.0.113.10:443]
بعد NAT: [1.2.3.4:54321] → [203.0.113.10:443]

4.4.3 أنواع NAT

النوع

الوصف

Static NAT

عنوان خاص يُترجم إلى عنوان عام ثابت (1:1). نادر في الشبكات المنزلية.

Dynamic NAT

عنوان خاص يُترجم إلى عنوان عام من مجموعة متاحة (لا يُستخدم كثيراً حالياً).

PAT / NAT Overload

الأكثر شيوعاً. عناوين خاصة متعددة تشترك في عنوان عام واحد، مع تمييزها بالمنافذ (Ports).



4.4.4 تأثير NAT على مبدأ End-to-End

  • يكسر NAT مبدأ End-to-End: لأن الخادم لا يرى عنوان IP الحقيقي للعميل، بل يرى عنوان جهاز NAT.

  • يؤثر على بعض البروتوكولات: بعض البروتوكولات (مثل FTP، SIP، بعض الألعاب) تتطلب عناوين IP حقيقية، وقد تتعطل مع NAT ما لم تُستخدم تقنيات إضافية (مثل ALG أو STUN).

  • يوفر أماناً إضافياً: لأنه يخفي البنية الداخلية للشبكة عن الإنترنت.

مقارنة مع IPv6: في IPv6، لا تحتاج إلى NAT لأن كل جهاز يمكن أن يحصل على عنوان عام فريد. هذا يعيد مبدأ End-to-End النقي إلى الشبكة.

4.4.5 NAT وتطبيقات الويب

  • تحديد المستخدم الحقيقي: قد تحتاج تطبيقات الويب إلى معرفة IP العميل الحقيقي (للتحليل الأمني، أو التخصيص الجغرافي). لكن NAT يجعل هذا صعباً، وتُستخدم بدائل مثل:

    • رأس X-Forwarded-For في HTTP (عند وجود وكيل).

    • استخدام تقنيات WebRTC أو JavaScript للحصول على IP محلي (مع قيود).

  • الاختبار المحلي: في بيئات التطوير، قد يكون NAT عائقاً إذا كنت تحتاج إلى الوصول إلى خادم محلي من الإنترنت، وتستخدم تقنيات مثل Port Forwarding لتوجيه المنافذ العامة إلى أجهزة داخلية.


4.5 التقسيم المنطقي (Subnetting) و CIDR

4.5.1 لماذا نحتاج إلى التقسيم المنطقي؟

الشبكات الكبيرة تحتاج إلى تقسيم داخلي لتحسين:

  • الإدارة: فصل الأقسام (مثل قسم الموارد البشرية، قسم التقنية).

  • الأمان: عزل الشبكات الحساسة وتطبيق سياسات مختلفة.

  • الأداء: تقليل حركة البث (Broadcast) التي تستهلك عرض النطاق.

4.5.2 مفهوم Subnetting

التقسيم المنطقي (Subnetting) هو عملية تقسيم شبكة IP كبيرة إلى شبكات فرعية (Subnets) أصغر، كل منها لها نطاق عناوين خاص بها.

التمثيل:

شبكة كبيرة: 192.168.0.0/16

├──
الشبكة الفرعية 1: 192.168.1.0/24
├──
الشبكة الفرعية 2: 192.168.2.0/24
├──
الشبكة الفرعية 3: 192.168.3.0/24
└── ...

4.5.3 CIDR (Classless Inter-Domain Routing)

CIDR هو نظام تمثيل العناوين الذي يستخدم الشرطة المائلة لتحديد طول جزء الشبكة.

الصيغة: العنوان/عدد_البتات

مثال: 192.168.1.0/24:

  • /24 يعني أن أول 24 بت (أي 3 بايتات) هي جزء الشبكة.

  • البتات المتبقية (8 بت) هي جزء المضيف (Host).

  • القناع المكافئ: 255.255.255.0.

قائمة الأمثلة:

CIDR

القناع

عدد المضيفين

مثال الاستخدام

/8

255.0.0.0

16,777,214

نطاقات عامة ضخمة

/16

255.255.0.0

65,534

شبكات متوسطة (مثل 192.168.x.x)

/24

255.255.255.0

254

الشبكات المنزلية والمكاتب الصغيرة

/30

255.255.255.252

2

وصلات نقطة إلى نقطة (بين موجهين)

/32

255.255.255.255

1

عنوان مضيف وحيد (Host)



4.5.4 كيفية تحديد ما إذا كانت الوجهة محلية أم خارجية

يستخدم الجهاز القناع (Subnet Mask) لتحديد ما إذا كانت الوجهة داخل شبكته المحلية أم لا:

  1. يقوم الجهاز بعملية AND منطقية بين عنوانه وعنوان الوجهة والقناع.

  2. إذا تطابق جزء الشبكة، فالوجهة محلية.

  3. إذا اختلف، فالوجهة خارجية وتُرسل إلى البوابة الافتراضية.

مثال:

  • الجهاز: 192.168.1.10/24 (قناع: 255.255.255.0)

  • الوجهة: 192.168.1.20 → جزء الشبكة متطابق → محلية.

  • الوجهة: 203.0.113.10 → جزء الشبكة مختلف → خارجية → تُرسل إلى البوابة الافتراضية.


4.6 البوابة الافتراضية ودورها في إخراج الحزم

4.6.1 تعريف البوابة الافتراضية

البوابة الافتراضية (Default Gateway) هي عنوان IP للجهاز (عادةً موجه) الذي يُستخدم لإرسال الحزم التي وجهتها ليست ضمن الشبكة المحلية.

4.6.2 دورها الأساسي

عندما يريد جهاز إرسال حزمة:

  1. يفحص عنوان IP الوجهة.

  2. يطبق القناع للتحقق مما إذا كانت الوجهة محلية أم خارجية.

  3. إذا كانت محلية: يرسل الحزمة مباشرة إلى الجهاز الوجهة باستخدام ARP (لإيجاد MAC).

  4. إذا كانت خارجية: يرسل الحزمة إلى البوابة الافتراضية، التي تتولى إيصالها إلى خارج الشبكة.

4.6.3 مثال عملي

السيناريو:

  • الجهاز: 192.168.1.10/24، البوابة الافتراضية: 192.168.1.1

  • الوجهة: 203.0.113.10 (خادم ويب على الإنترنت)

الخطوات:

  1. يفحص الجهاز الوجهة: 203.0.113.10 ليست ضمن 192.168.1.0/24.

  2. يقرر إرسال الحزمة إلى البوابة الافتراضية 192.168.1.1.

  3. يحتاج إلى معرفة MAC الخاص بالبوابة الافتراضية لإرسال الإطار.

  4. يستخدم ARP (بروتوكول تحليل العناوين) ليسأل: "من يملك عنوان IP 192.168.1.1؟".

  5. ترد البوابة بعنوان MAC الخاص بها.

  6. يُبنى الإطار بـ (MAC المصدر = الجهاز، MAC الوجهة = البوابة) ويُرسل.

4.6.4 ما يحدث عند البوابة الافتراضية

عندما تستقبل البوابة الافتراضية (الموجه) الإطار:

  1. تنزع رأس Ethernet، وتستخرج حزمة IP.

  2. تقرأ عنوان IP الوجهة (203.0.113.10).

  3. تبحث في جدول التوجيه الخاص بها عن المسار المناسب.

  4. تحدد الـ Next Hop التالي (موجه آخر، أو الشبكة المحلية للخادم).

  5. تبني إطاراً جديداً بعناوين MAC جديدة، وتُرسله.

  6. تتكرر العملية حتى تصل الحزمة إلى الخادم الوجهة.

4.6.5 أهمية البوابة الافتراضية في هندسة الويب

  • الوصول إلى الإنترنت: بدون بوابة افتراضية صحيحة، لن يتمكن الجهاز من الوصول إلى أي عنوان خارج شبكته المحلية، وبالتالي لن يعمل المتصفح.

  • تحديد مصدر المشكلة: إذا كان الجهاز يتصل بالأجهزة المحلية لكنه لا يستطيع الوصول إلى الإنترنت، فالمشكلة غالباً في البوابة الافتراضية (عنوان خاطئ، أو الموجه معطل).

  • اختبار البوابة: يمكن استخدام أمر ping لاختبار الاتصال بالبوابة الافتراضية (ping 192.168.1.1) كخطوة أولى في تشخيص الأعطال.


4.7 الصورة المتكاملة: طبقة الإنترنت في سياق النموذج

4.7.1 العلاقة مع الطبقات الأخرى

┌─────────────────────────────────────────────────────────────────────┐
نموذج TCP/IP المتكامل │
├─────────────────────────────────────────────────────────────────────┤
│ │
طبقة التطبيق → ترى البيانات (HTTP)، ولا تعرف عن IP. │
│ │ │
│ ▼ (
تمرر البيانات إلى طبقة النقل) │
طبقة النقل → تضيف المنافذ (Ports)، ولا تعرف عن IP. │
│ │ │
│ ▼ (
تمرر القطعة إلى طبقة الإنترنت) │
طبقة الإنترنت → تُضيف عناوين IP (المصدر والوجهة)، وتُحدد │
المسار (Routing). │
│ │ │
│ ▼ (
تمرر الحزمة إلى طبقة الوصلة) │
طبقة الوصلة → تُضيف عناوين MAC، وترسل عبر الوصلة المحلية. │
│ │
└─────────────────────────────────────────────────────────────────────┘

4.7.2 أسئلة تجيب عنها طبقة الإنترنت

السؤال

الإجابة

من هو المرسل؟

عنوان IP المصدر.

من هو المستقبل النهائي؟

عنوان IP الوجهة.

هل الوجهة محلية أم خارجية؟

يُحدد باستخدام القناع (Subnet Mask).

أين أرسل الحزم الخارجية؟

إلى البوابة الافتراضية (Default Gateway).

كيف أجد المسار؟

باستخدام جدول التوجيه (Routing Table).



4.7.3 ربط IPv4 و IPv6 ببقية النموذج

  • IPv4: لا يزال الأكثر استخداماً، لكنه يعاني من ندرة العناوين، مما يستدعي استخدام NAT و CIDR.

  • IPv6: يقدم حلاً طويل الأمد بفضل وفرة العناوين، ويعيد نقاء مبدأ End-to-End، ويُستخدم بشكل متزايد مع HTTP/3 و QUIC.


4.8 خلاصة الفصل

النقطة

الشرح

IP هو العنوان المنطقي

يُستخدم لتحديد الأجهزة على مستوى الشبكات، وليس على الوصلة المحلية.

التمييز بين IP و MAC و Port

IP يحدد الجهاز، MAC يحدد الواجهة على الوصلة، Port يحدد التطبيق.

IPv4 و IPv6

IPv4 (32 بت) ينفد، IPv6 (128 بت) هو الحل المستقبلي.

العناوين العامة والخاصة

العامة فريدة عالمياً، الخاصة تُستخدم داخل الشبكات المحلية.

NAT

تسمح لأجهزة متعددة بمشاركة عنوان عام واحد، لكنها تكسر End-to-End.

Subnetting و CIDR

تقسيم الشبكات إلى أجزاء أصغر لتحسين الإدارة والأداء.

البوابة الافتراضية

الوجهة التي تُرسل إليها الحزم الموجهة خارج الشبكة المحلية.




4.9 أسئلة فهم الفصل

  1. ما هو عنوان IP، وما الفرق بينه وبين عنوان MAC والمنفذ (Port)؟

  2. لماذا لا يكفي عنوان IP وحده لتحديد تطبيق معين على جهاز؟

  3. ما الفرق بين IPv4 و IPv6 من حيث الحجم، التمثيل، وعدد العناوين؟

  4. ما هي نطاقات العناوين الخاصة في IPv4، ولماذا نستخدمها؟

  5. ما هو 127.0.0.1 أو localhost، وفيما يُستخدم؟

  6. كيف تعمل تقنية NAT، وما هو تأثيرها على مبدأ End-to-End؟

  7. ما هو التقسيم المنطقي (Subnetting)، ولماذا نحتاج إليه؟

  8. ما هو CIDR، وكيف يُستخدم لتمثيل العناوين؟ أعط مثالاً.

  9. ما هي البوابة الافتراضية (Default Gateway)، ومتى يُستخدم عنوانها؟

  10. كيف يحدد الجهاز ما إذا كانت الوجهة محلية أم خارجية؟

  11. ما هي مشكلة ندرة عناوين IPv4، وما الحلول المقترحة لها؟

  12. كيف ترتبط طبقة الإنترنت بطبقة النقل من الأعلى وطبقة الوصلة من الأسفل؟

  13. في شبكة منزلية (192.168.1.0/24)، ما هي البوابة الافتراضية النموذجية؟

  14. كيف يمكن اختبار اتصال الجهاز بالبوابة الافتراضية؟

  15. لماذا يُعد فهم العناوين العامة والخاصة مهماً لمهندس الويب عند استضافة تطبيق؟


انتقال إلى الفصل الخامس: في الفصل القادم، سنتعمق في آليات التوجيه، وسنتعرف على كيفية بناء جداول التوجيه، وكيف تختار الموجهات المسار المناسب عبر قاعدة أطول بادئة مطابقة (Longest Prefix Match)، وسنفرق بين التوجيه الثابت والديناميكي، ونلقي نظرة على بروتوكولات التوجيه الأساسية مثل OSPF و BGP.

الفصل الخامس: آليات التوجيه (بناء وصنع القرار)


تمهيد الفصل

في الفصل الرابع، تعرفنا على عنوان IP باعتباره الهوية المنطقية التي تحدد "أين" يجب أن تصل الحزمة في نهاية المطاف. لكن السؤال الأكثر إلحاحاً يبقى: كيف تعرف الحزمة الطريق الذي تسلكه للوصول إلى هناك؟

هنا يأتي دور التوجيه (Routing). التوجيه هو آلية الملاحة في عالم الشبكات؛ فهو يحدد المسار الذي ستسلكه الحزمة عبر شبكات متعددة، مروراً بمجموعة من الموجهات (Routers)، حتى تصل إلى وجهتها النهائية.

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


5.1 تعريف التوجيه والتمييز بين التخطيط والتنفيذ (Routing vs Forwarding)

لفهم آلية عمل الشبكة، يجب علينا أولاً التمييز بين مفهومين متكاملين لكنهما مختلفان جوهرياً: التوجيه (Routing) و التمرير (Forwarding).

5.1.1 التوجيه (Routing) - التخطيط الاستراتيجي

  • التعريف: هو عملية تحديد المسار أو المسارات الممكنة للوصول إلى شبكات الوجهة المختلفة.

  • النطاق: يعمل على مستوى الشبكة بالكامل، ويتضمن تبادل المعلومات بين الموجهات لبناء صورة شاملة (أو جزئية) عن طوبولوجيا الشبكة.

  • التوقيت: يحدث بشكل مستمر في الخلفية، وليس عند وصول كل حزمة.

  • الناتج: ينتج عنه جدول توجيه (Routing Table) أو قاعدة معلومات توجيه (RIB - Routing Information Base) تحتوي على جميع المسارات الممكنة.

5.1.2 التمرير (Forwarding) - التنفيذ التكتيكي

  • التعريف: هو القرار المحلي الذي يتخذه الموجه عند وصول حزمة، وهو تحديد "الخطوة التالية (Next Hop)" والواجهة الخارجة التي يجب إرسال الحزمة من خلالها.

  • النطاق: يحدث محلياً داخل الموجه الواحد، ويعتمد فقط على المعلومات المخزنة في جدول التوجيه.

  • التوقيت: يحدث فوراً مع وصول كل حزمة، ويكون سريعاً للغاية.

  • الناتج: عملية تنفيذية تنقل الحزمة من واجهة إلى أخرى.

5.1.3 التشبيه التصوري

  • التوجيه (Routing): كتخطيط رحلة على خرائط جوجل. تقوم بدراسة الطرق، واختيار أفضل مسار بناءً على حركة المرور والمسافة.

  • التمرير (Forwarding): كاتباع إشارات الطريق أثناء القيادة. عند كل تقاطع، تنظر إلى اللافتة (جدول التوجيه) وتتخذ القرار الفوري: "يساراً إلى الطريق السريع".

5.1.4 الخريطة المفاهيمية

بروتوكولات التوجيه ← تتبادل المعلومات


خوارزمية التوجيه ← تحسب أفضل المسارات


جدول التوجيه (RIB) ← يخزن جميع المسارات الممكنة

▼ (
تُستخرج المعلومات الأكثر أهمية)
جدول التمرير (FIB) ← يحتوي على المعلومات اللازمة للقرار السريع


التمرير (Forwarding) ← عند وصول الحزمة: ابحث في FIB، وحدد الـ Next Hop، وأرسلها.

5.2 جدول التوجيه: مكوناته وآلية البحث (Lookup)

5.2.1 ما هو جدول التوجيه؟

جدول التوجيه (Routing Table) هو قاعدة بيانات موجودة في كل جهاز موجه (وربما في أنظمة التشغيل العادية)، تحوي معلومات عن الشبكات المعروفة وكيفية الوصول إليها.

5.2.2 المكونات الأساسية لأي مدخل (Route Entry)

المكون

الوصف

مثال

بادئة الوجهة (Destination Prefix)

الشبكة أو عنوان الوجهة التي ينطبق عليها هذا المسار.

192.168.1.0/24

الخطوة التالية (Next Hop)

عنوان IP للموجه التالي الذي يجب إرسال الحزمة إليه.

192.168.1.1

الواجهة الخارجة (Outgoing Interface)

المنفذ الفيزيائي أو المنطقي الذي ستخرج منه الحزمة.

eth0، GigabitEthernet0/1

المقياس (Metric)

قيمة رقمية تستخدم للمفاضلة بين المسارات (مثل عدد القفزات، التكلفة، عرض النطاق).

10، 100

المصدر (Source/Protocol)

كيف تعلم الموجه بهذا المسار (مباشر، ثابت، OSPF، BGP).

Connected، Static، OSPF



5.2.3 آلية البحث في جدول التوجيه (خطوات Lookup)

عندما تصل حزمة IP إلى الموجه، يقوم بالخطوات التالية بترتيب محدد:

  1. استخراج عنوان الوجهة: يقرأ حقل Destination IP Address من رأس الحزمة.

  2. البحث عن تطابق (Route Lookup):

    • يبحث في جدول التوجيه عن جميع المسارات التي تنطبق على هذا العنوان (أي أن الوجهة تقع ضمن نطاق البادئة).

  3. تطبيق قاعدة أطول بادئة مطابقة (Longest Prefix Match):

    • إذا وجد عدة مسارات مطابقة، يختار المسار ذا البادئة الأطول (الأكثر تحديداً).

  4. المفاضلة بين المسارات المتساوية (إذا لزم الأمر):

    • إذا كان هناك أكثر من مسار بنفس البادئة ونفس الأولوية، يُفاضل بينها باستخدام الـ (Metric) ويختار الأقل قيمة (الأفضل).

  5. تحديد الـ Next Hop والواجهة:

    • يستخرج عنوان الـ Next Hop والواجهة الخارجة من المدخل المختار.

  6. إعادة تغليف الحزمة وإرسالها:

    • يبني إطاراً جديداً للوصلة الخارجة بعناوين MAC جديدة، وينقص TTL، ويرسل الحزمة.


5.3 المسار الافتراضي ودوره كحل أخير

5.3.1 تعريف المسار الافتراضي

المسار الافتراضي (Default Route) هو مسار خاص يطابق أي عنوان وجهة ليس له مسار أكثر تحديداً في جدول التوجيه. يُستخدم كحل أخير (Gate of Last Resort) لإرسال الحزم التي لا يعرف الموجه وجهتها.

5.3.2 كيفية كتابته

  • في IPv4: يُكتب على هيئة 0.0.0.0/0. البادئة /0 تعني أن صفر بت من العنوان تُستخدم للمقارنة، أي أنه يطابق كل العناوين.

  • في IPv6: يُكتب على هيئة ::/0.

5.3.3 دوره العملي

في شبكة منزلية نموذجية، يحتوي جهاز التوجيه (Router) على مسار افتراضي يشير إلى مزود خدمة الإنترنت (ISP). كل الحزم المتجهة إلى الإنترنت (أي خارج الشبكة المنزلية 192.168.1.0/24) تُرسل عبر هذا المسار الافتراضي.

مثال:

جدول توجيه موجه منزلي:
- 192.168.1.0/24 →
مباشر (eth0)
- 0.0.0.0/0 → Next Hop: 203.0.113.1 (
عنوان بوابة الـ ISP)

عندما تصل حزمة موجهة إلى 8.8.8.8، لا يجدها الموجه في أي مسار محدد، فيرسلها عبر الـ Default Route إلى الـ ISP الذي يتولى إيصالها.


5.4 قاعدة أطول بادئة مطابقة (Longest Prefix Match) مع مثال خطواتها

5.4.1 لماذا نحتاج إلى هذه القاعدة؟

في جداول التوجيه الكبيرة، قد تتطابق عدة مسارات مع عنوان وجهة واحد. مثلاً، عنوان 10.20.30.45 يطابق:

  • 10.0.0.0/8

  • 10.20.0.0/16

  • 10.20.30.0/24

كيف يختار الموجه المسار الصحيح؟ هنا تأتي قاعدة Longest Prefix Match (LPM)، والتي تنص على:

عند تطابق عدة مسارات، يُختار المسار ذو أطول بادئة (أكبر رقم بعد الشرطة المائلة)، لأنه الأكثر تحديداً.

5.4.2 مثال خطوات التطبيق (شرح تفصيلي)

السيناريو: موجه لديه جدول التوجيه التالي:

بادئة الوجهة

الخطوة التالية (Next Hop)

0.0.0.0/0 (افتراضي)

ISP-Router

10.0.0.0/8

R1

10.20.0.0/16

R2

10.20.30.0/24

R3



الحدث: تصل حزمة بعنوان وجهة 10.20.30.45.

خطوات القرار داخل الموجه:

  1. الخطوة 1: البحث عن جميع التطابقات.

    • هل تطابق /0؟ نعم، لأن /0 يطابق كل شيء.

    • هل تطابق /8؟ نعم، لأن 10.x.x.x يقع ضمن النطاق 10.0.0.0 إلى 10.255.255.255.

    • هل تطابق /16؟ نعم، لأن 10.20.x.x يقع ضمن النطاق 10.20.0.0 إلى 10.20.255.255.

    • هل تطابق /24؟ نعم، لأن 10.20.30.x يقع ضمن النطاق 10.20.30.0 إلى 10.20.30.255.

  2. الخطوة 2: مقارنة أطوال البادئات.

    • لدينا: /0 (طول 0)، /8 (طول 8)، /16 (طول 16)، /24 (طول 24).

  3. الخطوة 3: اختيار الأطول.

    • أطول بادئة بينهم هي /24.

  4. الخطوة 4: تنفيذ القرار.

    • يُختار المسار 10.20.30.0/24، وتُرسل الحزمة إلى R3.

الدرس المستفاد: المسار المُختار ليس بالضرورة الأقصر جغرافياً أو الأسرع، بل هو الأكثر تحديداً للوجهة المعنية. بهذه الطريقة، يمكن للشبكات الكبيرة أن تمتلك مسارات عامة (مثل /8) ومسارات أكثر تحديداً (مثل /24) للتحكم الدقيق في حركة المرور.

5.4.3 الإستثناءات والحالات الخاصة

  • المسارات المتصلة مباشرة: لها أولوية عليا حتى لو كانت البادئة أقصر، لكن عادةً ما تكون البادئة متساوية أو مفصلة.

  • التعادل في البادئة: إذا تطابق مساران بنفس البادئة (مثل طريقين إلى /24)، يُستخدم الـ Metric للمفاضلة (يُختار الأقل).


5.5 مصادر بناء جدول التوجيه

من أين تأتي كل هذه المسارات في جدول التوجيه؟ هناك ثلاثة مصادر رئيسية:

5.5.1 المسارات المتصلة مباشرة (Connected Routes)

  • المصدر: تنشأ تلقائياً عند تفعيل واجهة شبكية على الموجه وتزويدها بعنوان IP.

  • الآلية: يضيف الموجه تلقائياً مساراً للشبكة التي تنتمي إليها هذه الواجهة.

  • المثال: إذا كانت الواجهة eth0 تحمل عنوان 192.168.1.1/24، سيضيف الموجه تلقائياً مساراً إلى 192.168.1.0/24، ويكون الـ Next Hop هو "مباشر (Direct)".

  • الأولوية: الأعلى على الإطلاق (لا يُستبدل إلا إذا تعطلت الواجهة).

5.5.2 المسارات الثابتة (Static Routes)

  • المصدر: يضيفها مسؤول الشبكة يدوياً.

  • الآلية: يستخدم المسؤول الأمر المناسب (مثل ip route في لينكس) لإدخال مسار محدد.

  • المميزات: بسيطة، آمنة (لا تستهلك عرض نطاق للتبادل)، وتستخدم في الشبكات الصغيرة أو لتحديد مسارات معينة (مثل مسار افتراضي إلى بوابة ISP).

  • العيوب: غير مرنة؛ إذا تغيرت البنية التحتية للشبكة، يجب على المسؤول تحديثها يدوياً.

  • الأولوية: عالية جداً (تأتي بعد المسارات المتصلة مباشرة).

5.5.3 المسارات الديناميكية (Dynamic Routes)

  • المصدر: تتعلمها الموجهات تلقائياً من بعضها البعض عبر بروتوكولات التوجيه الديناميكي.

  • الآلية: تتبادل الموجهات رسائل عن الشبكات التي تعرفها، وتستخدم خوارزميات لحساب أفضل المسارات.

  • المميزات: مرنة وتتكيف مع تغيرات الشبكة (مثل تعطل رابط) تلقائياً.

  • العيوب: تستهلك عرض نطاق وقدرة معالجة، وقد تكون معقدة في التكوين.

  • الأولوية: تأتي بعد المسارات الثابتة (يمكن تعديلها، لكنها عادةً أقل من الثابتة).


5.6 بروتوكولات التوجيه الديناميكي (لمحة عن OSPF و BGP)

عندما نتحدث عن الإنترنت أو الشبكات الكبيرة، تصبح المسارات الثابتة مستحيلة الإدارة. هنا تظهر بروتوكولات التوجيه الديناميكي.

5.6.1 التصنيف الأساسي لبروتوكولات التوجيه

التصنيف

النوع

أمثلة

الاستخدام

IGP (Interior Gateway Protocol)

داخل نظام مستقل واحد (داخل شبكة شركة واحدة)

OSPF، IS-IS، RIP

توجيه حركة المرور داخل المنظمة.

EGP (Exterior Gateway Protocol)

بين أنظمة مستقلة (بين شبكات شركات مختلفة أو بين مزودي الخدمة)

BGP (الوحيد المستخدم حالياً)

توجيه حركة المرور على الإنترنت العالمي.



5.6.2 OSPF (Open Shortest Path First) - لمحة عامة

  • النوع: IGP (داخل النظام المستقل).

  • الخوارزمية: تستخدم خوارزمية حالة الرابط (Link-State). كل موجه يبني خريطة كاملة لطوبولوجيا الشبكة، ثم يحسب أقصر مسار إلى كل وجهة باستخدام خوارزمية ديكسترا.

  • المقياس (Metric): يعتمد على التكلفة (Cost)، والتي ترتبط عادةً بعرض النطاق الترددي للواجهة (كلما كان العرض أكبر، قلت التكلفة).

  • المميزات: سريعة التقارب، قابلة للتوسع، وتدعم التقسيم إلى مناطق (Areas).

  • الاستخدام الشائع: الشبكات الداخلية للشركات ومراكز البيانات الكبيرة.

5.6.3 BGP (Border Gateway Protocol) - لمحة عامة

  • النوع: EGP (بين الأنظمة المستقلة).

  • الخوارزمية: تعتمد على مسار المتجه (Path Vector)، وهو تطور لخوارزمية متجه المسافات.

  • المقياس (Metric): لا يعتمد على مقياس عددي بسيط مثل OSPF. يعتمد على قائمة من السمات (Attributes) مثل عدد القفزات (AS Path)، والسياسات (Policies)، وقرارات الشركات.

  • المميزات: شديد المرونة؛ يسمح لمشغلي الشبكات بتحديد السياسات (مثل: "لا ترسل حركة مروري عبر شبكة المزود X"، أو "فضل هذا المسار لأنه أرخص").

  • الاستخدام الشائع: العمود الفقري للإنترنت. تستخدمه مزودو خدمة الإنترنت (ISPs) والشركات الكبيرة لتبادل معلومات التوجيه بين الشبكات المستقلة (Autonomous Systems).

مقارنة سريعة:

الميزة

OSPF (IGP)

BGP (EGP)

النطاق

داخل شبكة واحدة (داخل شركة)

بين شبكات مختلفة (بين شركات / على الإنترنت)

الهدف

العثور على أسرع مسار

العثور على أفضل مسار وفقاً للسياسات

المقياس

التكلفة (Cost)

السمات والسياسات (AS Path, Local Pref, إلخ)

التعقيد

متوسط إلى عالي

عالي جداً

التقارب

سريع

بطيء (لضمان استقرار الإنترنت)



ملاحظة: لا يحتاج مهندس الويب عادةً إلى تكوين BGP، لكن فهم وجوده يساعد في تفسير سبب اختلاف أوقات الاستجابة أو مسارات البيانات في أجزاء مختلفة من العالم.


5.7 الصورة المتكاملة: كيف يعمل التوجيه عملياً؟

5.7.1 المخطط الانسيابي لقرار التوجيه

                    ┌─────────────────────┐
وصول حزمة IP جديدة │
└──────────┬──────────┘


┌─────────────────────┐
استخراج عنوان IP │
الوجهة │
└──────────┬──────────┘


┌──────────────────────────────────────────────────────────────────────┐
│ 1.
البحث في جدول التوجيه عن جميع المسارات المطابقة │
مثال: الوجهة 10.20.30.45 تطابق: /0, /8, /16, /24 │
└──────────────────────────────┬───────────────────────────────────────┘


┌──────────────────────────────────────────────────────────────────────┐
│ 2.
تطبيق قاعدة أطول بادئة مطابقة (LPM) │
اختر المسار صاحب البادئة الأطول (/24 ← الأكثر تحديداً) │
└──────────────────────────────┬───────────────────────────────────────┘


┌──────────────────────────────────────────────────────────────────────┐
│ 3. (
إن وجد تعادل) المقارنة باستخدام الـ Metric │
اختر المسار صاحب أقل قيمة للمقياس │
└──────────────────────────────┬───────────────────────────────────────┘


┌──────────────────────────────────────────────────────────────────────┐
│ 4.
استخراج معلومات التمرير (Next Hop, Interface) │
└──────────────────────────────┬───────────────────────────────────────┘


┌──────────────────────────────────────────────────────────────────────┐
│ 5.
بناء إطار جديد للوصلة الخارجة، وإنقاص TTL، وإرسال الحزمة │
└──────────────────────────────────────────────────────────────────────┘

5.7.2 العلاقة بطبقة الوصلة (Link Layer)

بعد اختيار الـ Next Hop، يأتي دور طبقة الوصلة. يحتاج الموجه إلى معرفة عنوان MAC الخاص بالـ Next Hop ليتمكن من بناء الإطار الجديد وإرساله. يستخدم بروتوكول ARP (في IPv4) أو Neighbor Discovery (في IPv6) لتحويل عنوان IP للـ Next Hop إلى عنوان MAC محلي.


5.8 خلاصة الفصل

النقطة

الشرح

التوجيه (Routing) هو التخطيط، والتمرير (Forwarding) هو التنفيذ

الأول يبني خريطة المسارات، والثاني ينفذ القرار عند كل حزمة.

جدول التوجيه

يحتوي على بادئات الوجهة، الـ Next Hop، الواجهة، والمقياس.

المسار الافتراضي (0.0.0.0/0)

الملاذ الأخير؛ يُستخدم عندما لا يوجد مسار محدد للوجهة.

أطول بادئة مطابقة (LPM)

القاعدة الأساسية لاختيار المسار: اختر الأكثر تحديداً، وليس الأقصر.

مصادر المسارات

متصلة (تلقائية)، ثابتة (يدوية)، ديناميكية (تتعلم عبر البروتوكولات).

OSPF

بروتوكول توجيه داخلي (IGP) يعتمد على حالة الرابط (Link-State) ويستخدم التكلفة كمقياس.

BGP

بروتوكول توجيه خارجي (EGP) يعتمد على السياسات، وهو العمود الفقري للإنترنت.




5.9 أسئلة فهم الفصل

  1. ما الفرق بين التوجيه (Routing) والتمرير (Forwarding)؟ وكيف يرتبطان ببعضهما؟

  2. ما هي المكونات الأساسية لأي مدخل في جدول التوجيه (Routing Table)؟

  3. كيف يبحث الموجه في جدول التوجيه عند وصول حزمة جديدة؟ صف الخطوات.

  4. ما هو المسار الافتراضي (Default Route)، وكيف يُكتب في IPv4؟ وما دوره؟

  5. اشرح قاعدة "أطول بادئة مطابقة" (Longest Prefix Match) بمثال توضيحي.

  6. لماذا لا يختار الموجه المسار الأقصر جغرافياً دائماً؟ وما الذي يحدد اختياره؟

  7. ما هي المصادر الثلاثة التي يمكن لجدول التوجيه أن يستقي منها المسارات؟

  8. ما الفرق بين المسار الثابت (Static Route) والمسار الديناميكي (Dynamic Route)؟

  9. ما هو الفرق الجوهري بين بروتوكول توجيه داخلي (IGP) مثل OSPF وبروتوكول توجيه خارجي (EGP) مثل BGP؟

  10. في جدول توجيه يحتوي على المسارات التالية: 10.0.0.0/8، 10.10.0.0/16، 0.0.0.0/0، أي مسار سيُختار لحزمة موجهة إلى 10.10.5.1؟ ولماذا؟

  11. كيف يستخدم الموجه معلومات الـ Next Hop بعد تحديدها؟

  12. لماذا تُعتبر OSPF مناسبة للشبكات الداخلية للشركات، بينما يُستخدم BGP على الإنترنت العالمي؟

  13. إذا كان هناك مساران متطابقان في البادئة (/24) ولكن بقيم Metric مختلفة (مثلاً 10 و 20)، أيهما يُختار؟

  14. كيف ترتبط آلية التوجيه (هذا الفصل) بطبقة الوصلة (الفصل السادس) في عملية الإرسال النهائية؟

  15. لماذا يحتاج مهندس الويب إلى فهم أساسيات التوجيه حتى لو كان لا يقوم بتكوين الموجهات بنفسه؟


انتقال إلى الفصل السادس: في الفصل القادم، سننتقل من عالم الشبكات الواسع إلى التفاصيل الدقيقة للوصلة المحلية. سنتعرف على طبقة الوصلة (Link Layer)، وكيف تعمل تقنيات Ethernet و Wi-Fi، وما هو عنوان MAC، وكيف يعمل بروتوكول ARP لربط العناوين المنطقية (IP) بالعناوين الفيزيائية المحلية (MAC) لتمكين التمرير الفعلي بين الأجهزة المتجاورة.

الفصل السادس: طبقة الوصلة والنقل المحلي (من جهاز لآخر)


تمهيد الفصل

بعد أن تعرفنا في الفصل الخامس على كيفية توجيه الحزم عبر الشبكات، نصل الآن إلى السؤال الأكثر عملية: كيف تنتقل البيانات فعلياً من جهاز إلى آخر على نفس الشبكة المحلية؟

هذا هو دور طبقة الوصلة (Link Layer)، وهي الطبقة الأدنى في نموذج TCP/IP التعليمي. بينما تهتم طبقة الإنترنت (الفصلان الرابع والخامس) بالاتصال بين الشبكات (End-to-End)، تهتم طبقة الوصلة بالاتصال محلياً (Hop-by-Hop)؛ أي نقل الإطارات بين الأجهزة المتجاورة على نفس الوصلة.

في هذا الفصل، سنتعرف على:

  • مفهوم الشبكة المحلية (LAN).

  • عنوان MAC: هوية الوصلة المحلية.

  • تقنيات النقل المحلي: Ethernet و Wi-Fi.

  • آلية ربط العناوين المنطقية بالمحلية: ARP.

  • الفرق بين المبدل (Switch) والموجه (Router).

هذه المفاهيم تمثل الطبقة المادية التي تتحرك عليها البيانات فعلياً، وفهمها يكمل الصورة الكاملة لرحلة الحزمة من المصدر إلى الوجهة.


6.1 الشبكة المحلية (LAN) ومفهومها

6.1.1 تعريف الشبكة المحلية

LAN اختصار لـ (Local Area Network)، وهي شبكة تربط مجموعة من الأجهزة داخل نطاق جغرافي محدود (منزل، مكتب، مبنى، أو مركز بيانات).

6.1.2 خصائص الشبكة المحلية

الخاصية

الوصف

النطاق الجغرافي

محدود (عادةً بضعة أمتار إلى بضعة كيلومترات).

الملكية

عادةً ما تكون مملوكة لجهة واحدة (فرد، شركة، مؤسسة).

السرعة

عالية جداً (مقارنة بالشبكات الواسعة)، تصل إلى عدة جيجابت في الثانية.

التقنيات

Ethernet (سلكي)، Wi-Fi (لاسلكي).

التكلفة

منخفضة نسبياً.

التوجيه

لا تحتاج إلى توجيه معقد؛ التواصل مباشر عبر عناوين MAC.



6.1.3 أمثلة على الشبكات المحلية

  • الشبكة المنزلية: تجمع بين أجهزة الحاسوب، الهواتف الذكية، الطابعات، وأجهزة التلفزيون الذكية عبر راوتر لاسلكي.

  • شبكة المكتب: تربط أجهزة الموظفين، الخوادم، والطابعات عبر مفاتيح (Switches) وكابلات Ethernet.

  • شبكة مركز البيانات: شبكة عالية السرعة تربط مئات الخوادم داخل مبنى واحد.

التمثيل المبسط:

┌─────────────────────────────────────────────────────┐
الشبكة المحلية (LAN) │
│ │
│ [
حاسوب] ───┐ │
│ │ │
│ [
هاتف] ───┼── [راوتر/مبدل] ─── [الإنترنت] │
│ │ │
│ [
طابعة] ───┘ │
│ │
جميع الأجهزة تتواصل عبر عناوين MAC محلياً │
└─────────────────────────────────────────────────────┘

6.2 عنوان MAC (الخصائص، والفرق الجوهري عن IP)

6.2.1 تعريف عنوان MAC

MAC اختصار لـ (Media Access Control) ويُعرف أيضاً بـ العنوان الفيزيائي أو عنوان الأجهزة. هو معرف فريد يُخصص لواجهة الشبكة (بطاقة الشبكة) من قبل الشركة المصنعة، ويُستخدم للتعرف على الأجهزة داخل الشبكة المحلية.

6.2.2 خصائص عنوان MAC

الخاصية

الوصف

الحجم

48 بت (6 بايتات).

التمثيل

12 خانة سداسية عشرية، مفصولة بنقطتين أو واصلات أو بدون فواصل.

المثال

00:1A:2B:3C:4D:5E أو 00-1A-2B-3C-4D-5E أو 001A.2B3C.4D5E.

التوزيع

يُخصص من قبل معهد مهندسي الكهرباء والإلكترونيات (IEEE)، حيث تمتلك كل شركة مصنعة نطاقاً خاصاً بها.

الفرادة

يجب أن يكون فريداً على مستوى العالم (نظرياً، لكن يمكن تغييره برمجياً في بعض الأنظمة).

الثبات

مرتبط بالعتاد (بطاقة الشبكة)، ونادراً ما يتغير (ما لم يُغير المستخدم عنوانه يدوياً).

المستوى

يعمل في طبقة الوصلة (Link Layer).

النطاق

محلي فقط؛ لا يُستخدم للتوجيه عبر الإنترنت.



تنبيه دقيق: لا تقل بصورة مطلقة "العنوان الفيزيائي للجهاز"، لأن:

  • الجهاز قد يملك عدة واجهات شبكية (سلكية، لاسلكية، Bluetooth)، لكل واحدة عنوان MAC مختلف.

  • الواجهة قد تستخدم أكثر من عنوان في بعض السياقات (مثل العناوين المؤقتة في Wi-Fi).

  • بعض التقنيات تختلف في طبيعة العنونة.

الأدق: عنوان MAC هو معرف لواجهة الشبكة على مستوى طبقة الوصلة ضمن التقنية المستخدمة.

6.2.3 المقارنة الجوهرية بين IP و MAC

وجه المقارنة

عنوان IP

عنوان MAC

المستوى

طبقة الإنترنت (Internet Layer)

طبقة الوصلة (Link Layer)

الوظيفة

تحديد الوجهة الشبكية (أين؟)

تحديد الجهاز على الوصلة المحلية (من؟)

النطاق

بين الشبكات (End-to-End)

الوصلة المحلية (Hop-by-Hop)

التغيير أثناء الرحلة

قد يتغير (مع NAT)

يتغير في كل Hop

المصدر

يُخصص من قبل مسؤول الشبكة أو الـ ISP

يُخصص من قبل الشركة المصنعة للعتاد

المثال

192.168.1.10

00:1A:2B:3C:4D:5E

الاستمرارية

قد يتغير عند تغيير الشبكة

ثابت (مرتبط بالعتاد)



الخريطة الذهنية:

┌─────────────────────────────────────────────────────────────────────┐
│ IP vs MAC
في رحلة الحزمة │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ IP Address: │
│ -
يساعد الحزمة على الوصول إلى الشبكة الوجهة النهائية. │
│ -
يبقى ثابتاً طوال الرحلة (عادةً). │
│ │
│ MAC Address: │
│ -
يساعد الحزمة على الانتقال من جهاز إلى جهاز على الوصلة │
المحلية. │
│ -
يُعاد كتابته في كل قفزة (Hop). │
│ │
العلاقة: IP يوصل الحزمة إلى البوابة الصحيحة، وMAC ينقلها │
عبر الوصلة إلى هناك. │
│ │
└─────────────────────────────────────────────────────────────────────┘

6.3 تقنيات النقل المحلي: Ethernet و Wi-Fi

6.3.1 Ethernet (الشبكات السلكية)

التعريف: Ethernet هي مجموعة من تقنيات الشبكات السلكية التي تُستخدم على نطاق واسع في الشبكات المحلية، وتحدد كيفية بناء الإطارات (Frames) ونقلها عبر الكابلات.

الخاصية

الوصف

المعيار

IEEE 802.3

الوسط

كابلات نحاسية (زوج مجدول)، أو كابلات ألياف بصرية.

السرعة

من 10 ميجابت/ثانية (قديماً) إلى 400 جيجابت/ثانية (حديثاً).

الإطار (Frame)

يحتوي على رأس (MAC المصدر والوجهة، النوع)، والحمولة (حزمة IP)، ومذيل (FCS للتحقق من الأخطاء).

الاستخدام الشائع

المكاتب، مراكز البيانات، الشبكات الثابتة.



مثال على إطار Ethernet مبسط:

┌──────────────┬──────────────┬──────────────┬──────────────┬──────────────┐
رأس Ethernet │ │ │ │ مذيل │
│ (MAC
مصدر، │ حزمة IP │ (بيانات) │ (بيانات) │ (FCS) │
│ MAC
وجهة) │ │ │ │ │
└──────────────┴──────────────┴──────────────┴──────────────┴──────────────┘

6.3.2 Wi-Fi (الشبكات اللاسلكية)

التعريف: Wi-Fi هي مجموعة من تقنيات الشبكات اللاسلكية التي تُستخدم في الشبكات المحلية، وتستند إلى عائلة معايير IEEE 802.11.

الخاصية

الوصف

المعيار

IEEE 802.11 (بإصداراته: a, b, g, n, ac, ax, be).

الوسط

موجات راديوية (ترددات 2.4 جيجاهرتز، 5 جيجاهرتز، 6 جيجاهرتز).

السرعة

من 11 ميجابت/ثانية (قديماً) إلى عدة جيجابت/ثانية (حديثاً مع Wi-Fi 7).

الإطار (Frame)

مشابه لإطار Ethernet لكنه يحتوي على حقول إضافية لإدارة الشبكات اللاسلكية.

الاستخدام الشائع

الأجهزة المحمولة (هواتف، حواسيب محمولة)، الشبكات المنزلية، الأماكن العامة.



6.3.3 العلاقة بين HTTP و Ethernet/Wi-Fi

سؤال مهم: كيف يمكن لـ HTTP أن يعمل فوق Ethernet و Wi-Fi دون تغيير؟

الجواب: بفضل التجريد (Abstraction) الذي توفره الطبقات الدنيا.

HTTP (طبقة التطبيق)

▼ (
لا يهمه أي تقنية وصلة)
TCP (
طبقة النقل)


IP (
طبقة الإنترنت)


طبقة الوصلة (Ethernet / Wi-Fi / Fiber / أي تقنية)

طبقة الوصلة تقدم خدمة موحدة للطبقة الأعلى (IP): "استلم هذه الحزمة وأوصلها إلى الجهاز التالي على هذه الوصلة". سواء كانت الوصلة سلكية أم لاسلكية، تظل الخدمة نفسها. هذا يسمح للتطبيقات بالعمل دون تعديل على أي نوع من الشبكات.

مثال: المتصفح على حاسوب محمول يعمل عبر Wi-Fi في المنزل، وعبر Ethernet في المكتب، دون أن يتغير أي شيء في كود المتصفح أو في بروتوكول HTTP.


6.4 آلية إيجاد العنوان المحلي: بروتوكول ARP

6.4.1 المشكلة التي يحلها ARP

لدينا حزمة IP جاهزة للإرسال. نعرف عنوان IP للجهة التالية (مثل البوابة الافتراضية)، لكن طبقة الوصلة تحتاج إلى عنوان MAC لبناء الإطار وإرساله فعلياً.

السؤال: كيف نحصل على عنوان MAC المقابل لعنوان IP معين على الشبكة المحلية؟

الجواب: باستخدام بروتوكول ARP (Address Resolution Protocol).

6.4.2 آلية عمل ARP (خطوات مبسطة)

  1. الجهاز المصدر يريد إرسال حزمة إلى عنوان IP معين (مثل البوابة الافتراضية 192.168.1.1).

  2. يتحقق أولاً من جدول ARP Cache المحلي:

    • إذا كان العنوان موجوداً مسبقاً، يستخدم عنوان MAC المخزن فوراً.

    • إذا لم يكن موجوداً، يرسل طلب ARP.

  3. إرسال طلب ARP (ARP Request):

    • يُرسل إطار بث (Broadcast) إلى جميع الأجهزة على الشبكة المحلية.

    • السؤال: "من يملك عنوان IP 192.168.1.1؟ أرجو إخباري بعنوان MAC الخاص بك."

  4. استقبال الرد (ARP Reply):

    • الجهاز الذي يملك عنوان IP المطلوب (الـ Gateway) يرد برسالة Unicast (موجهة مباشرة) تحتوي على عنوان MAC الخاص به.

  5. تحديث جدول ARP Cache:

    • يخزن الجهاز المصدر الرد في جدوله المؤقت (ARP Cache) لاستخدامه مستقبلاً.

    • الجدول له فترة صلاحية (عادةً بضع دقائق) ثم تنتهي، ويُطلب العنوان مرة أخرى إذا لزم.

6.4.3 التمثيل البياني لعملية ARP

┌─────────────────────────────────────────────────────────────────────┐
عملية ARP (مثال) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1.
الجهاز (192.168.1.10): "من يملك 192.168.1.1؟" │
│ ──────── (
بث إلى جميع الأجهزة في الشبكة) ────────→ │
│ │
│ 2.
البوابة (192.168.1.1): "أنا أملكه، عنوان MAC الخاص بي هو │
│ AA:BB:CC:DD:EE:FF." │
│ ←─────── (
رد مباشر إلى 192.168.1.10) ──────── │
│ │
│ 3.
يخزن الجهاز في جدول ARP Cache: │
│ 192.168.1.1 → AA:BB:CC:DD:EE:FF │
│ │
└─────────────────────────────────────────────────────────────────────┘

6.4.4 ARP Cache وجدول ARP

  • ARP Cache: جدول مؤقت في كل جهاز يربط عناوين IP بعناوين MAC على الشبكة المحلية.

  • مثال (من نظام Linux):

    $ arp -a
    gateway (192.168.1.1) at aa:bb:cc:dd:ee:ff [ether] on eth0
    laptop (192.168.1.20) at 11:22:33:44:55:66 [ether] on eth0
  • فائدته: يقلل حركة البث (Broadcast) على الشبكة، ويُسرع عملية الإرسال.

6.4.5 ARP في IPv6 (تمهيد)

في IPv6، لا يُستخدم ARP. بدلاً من ذلك، تُستخدم آلية Neighbor Discovery (ND) المبنية على بروتوكول ICMPv6، والتي تقدم وظائف مشابهة مع تحسينات في الأمان والكفاءة.


6.5 الفرق التشغيلي بين المبدل (Switch) والموجه (Router)

6.5.1 لماذا نحتاج إلى التمييز بينهما؟

كثيراً ما يُخلط بين المبدل (Switch) والموجه (Router) في الشبكات المنزلية، خاصةً أن العديد من أجهزة الراوتر المنزلية تحتوي على مبدل مدمج. لكنهما جهازان مختلفان جوهرياً في الوظيفة والمستوى التشغيلي.

6.5.2 جدول المقارنة الأساسي

وجه المقارنة

المبدل (Switch)

الموجه (Router)

المستوى الأساسي

طبقة الوصلة (Layer 2)

طبقة الإنترنت (Layer 3)

يعتمد على

عناوين MAC

عناوين IP

الوظيفة

تمرير الإطارات (Frames) بين الأجهزة على نفس الشبكة المحلية

توجيه الحزم (Packets) بين شبكات مختلفة

المجال

الشبكة المحلية (LAN) فقط

بين الشبكات (LAN ↔ WAN، أو LAN ↔ LAN)

القرار

أي منفذ أرسل إليه الإطار بناءً على عنوان MAC الوجهة؟

أي واجهة أرسل إليها الحزمة بناءً على عنوان IP الوجهة (وجداول التوجيه)

التعلم

يتعلم عناوين MAC من الإطارات الواردة ويبني جدولاً (MAC Address Table)

يستخدم جداول توجيه (Routing Tables) مبنية يدوياً أو عبر بروتوكولات

البث (Broadcast)

يمرر إطارات البث إلى جميع المنافذ (في الشبكة المحلية)

لا يمرر البث عادةً بين الشبكات

الاستخدام الشائع

داخل غرفة الخوادم، أو في المكاتب لتوصيل الأجهزة

بوابة الشبكة إلى الإنترنت، أو بين شبكات الشركة



6.5.3 التمثيل البياني للتمييز

┌─────────────────────────────────────────────────────────────────────┐
│ Switch vs Router │
├─────────────────────────────────────────────────────────────────────┤
│ │
المبدل (Switch): يعمل في طبقة الوصلة │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │
الإطار (Frame) → يقرأ MAC الوجهة → يرسل إلى المنفذ المناسب│ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
الموجه (Router): يعمل في طبقة الإنترنت │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │
الحزمة (Packet) → يقرأ IP الوجهة → يبحث في جدول التوجيه │ │
│ │ →
يحدد الـ Next Hop → يرسل │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
في الشبكات المنزلية: غالباً ما يكون الجهاز مبدلاً + موجهاً │
معاً (راوتر لاسلكي). │
│ │
└─────────────────────────────────────────────────────────────────────┘

6.5.4 مثال تطبيقي للتمييز

السيناريو: مستخدم في شبكة منزلية (192.168.1.0/24) يريد الوصول إلى خادم ويب على الإنترنت (203.0.113.10).

  1. المبدل (Switch) المدمج في الراوتر:

    • يرى الإطار المرسل من الحاسوب إلى البوابة الافتراضية (192.168.1.1).

    • يقرأ عنوان MAC الوجهة، ويتحقق من أنه عنوان البوابة، ويرسل الإطار إلى المنفذ المتصل بالبوابة.

    • لا يهتم بعنوان IP.

  2. الموجه (Router) المدمج في الراوتر:

    • يستقبل الإطار من المبدل، ويزيل رأس Ethernet ليصل إلى حزمة IP.

    • يقرأ عنوان IP الوجهة (203.0.113.10).

    • يبحث في جدول التوجيه الخاص به.

    • يجد أن الوجهة ليست محلية، فيرسلها عبر المسار الافتراضي إلى مزود خدمة الإنترنت (ISP).

    • لا يهتم بعنوان MAC (باستثناء إعادة بناء الإطار للوصلة التالية).


6.6 الصورة المتكاملة: طبقة الوصلة في سياق النموذج

6.6.1 العلاقة مع الطبقات الأخرى

┌─────────────────────────────────────────────────────────────────────┐
نموذج TCP/IP المتكامل │
├─────────────────────────────────────────────────────────────────────┤
│ │
طبقة التطبيق → HTTP، TLS (لا تعرف عن MAC أو Ethernet). │
│ │ │
│ ▼ │
طبقة النقل → TCP، UDP (لا تعرف عن MAC أو Ethernet). │
│ │ │
│ ▼ │
طبقة الإنترنت → IP (تعرف عناوين IP، وتطلب من الوصلة إيصال │
الحزمة إلى الـ Next Hop). │
│ │ │
│ ▼ (
تمرر حزمة IP إلى طبقة الوصلة) │
طبقة الوصلة → تحويل حزمة IP إلى إطار (إضافة رأس MAC) │
واستخدام ARP لإيجاد MAC الوجهة، وإرسال │
الإطار عبر Ethernet أو Wi-Fi. │
│ │ │
│ ▼ │
الطبقة الفيزيائية → تحويل الإطار إلى نبضات/موجات وإرسالها. │
│ │
└─────────────────────────────────────────────────────────────────────┘

6.6.2 ما الذي يحدث عند إرسال طلب ويب من جهاز عبر Wi-Fi؟

  1. المتصفح يجهز طلب HTTP.

  2. TCP يضيف رأس النقل (المنافذ، الأرقام التسلسلية).

  3. IP يضيف رأس الإنترنت (عناوين IP المصدر والوجهة).

  4. طبقة الوصلة (Wi-Fi):

    • تتحقق مما إذا كانت الوجهة (عنوان IP الخاص بالخادم) محلية أم لا.

    • تكتشف أنها ليست محلية، فتحتاج إلى إرسال الحزمة إلى البوابة الافتراضية.

    • تستخدم ARP للحصول على عنوان MAC الخاص بالبوابة الافتراضية.

    • تبني إطار Wi-Fi مع MAC المصدر (الجهاز) وMAC الوجهة (البوابة).

    • تحول الإطار إلى موجات راديوية وترسله عبر الهواء.


6.7 خلاصة الفصل

النقطة

الشرح

طبقة الوصلة (Link Layer)

مسؤولة عن نقل البيانات بين الأجهزة المتجاورة على نفس الشبكة المحلية.

الشبكة المحلية (LAN)

شبكة داخل نطاق محدود (منزل، مكتب) تستخدم عناوين MAC للتواصل.

عنوان MAC

معرف فريد لواجهة الشبكة على مستوى الوصلة المحلية، يتغير في كل Hop.

Ethernet

تقنية سلكية للشبكات المحلية (IEEE 802.3).

Wi-Fi

تقنية لاسلكية للشبكات المحلية (IEEE 802.11).

ARP

بروتوكول يحول عناوين IPv4 إلى عناوين MAC على الشبكة المحلية.

ARP Cache

جدول مؤقت يخزن العلاقة بين IP و MAC لتسريع الاتصالات المستقبلية.

المبدل (Switch)

جهاز يعمل في طبقة الوصلة، يمرر الإطارات داخل الشبكة المحلية.

الموجه (Router)

جهاز يعمل في طبقة الإنترنت، يوجه الحزم بين شبكات مختلفة.




6.8 أسئلة فهم الفصل

  1. ما هي الشبكة المحلية (LAN)؟ وما هي خصائصها الأساسية؟

  2. ما هو عنوان MAC؟ وما الفرق الجوهري بينه وبين عنوان IP؟

  3. لماذا يتغير عنوان MAC في كل قفزة (Hop)، بينما يبقى عنوان IP ثابتاً عادةً؟

  4. ما هي تقنية Ethernet، وفي أي طبقة تعمل؟ وما هو معيارها؟

  5. ما هي تقنية Wi-Fi، وفي أي طبقة تعمل؟ وما هو معيارها؟

  6. كيف يمكن لـ HTTP أن يعمل فوق Ethernet و Wi-Fi دون أي تعديل في الكود؟

  7. ما هي المشكلة التي يحلها بروتوكول ARP؟

  8. اشرح خطوات عمل ARP بالتفصيل.

  9. ما هو ARP Cache، ولماذا هو مفيد؟

  10. ما الفرق بين المبدل (Switch) والموجه (Router) من حيث المستوى والوظيفة؟

  11. في شبكة منزلية (192.168.1.0/24)، كيف يعرف الجهاز عنوان MAC الخاص بالبوابة الافتراضية؟

  12. لماذا لا يحتاج المبدل (Switch) إلى فهم عناوين IP؟

  13. كيف ترتبط طبقة الوصلة بطبقة الإنترنت من الأعلى وبالطبقة الفيزيائية من الأسفل؟

  14. ما هو الفرق بين ARP في IPv4 وآلية Neighbor Discovery في IPv6؟

  15. إذا كان الجهاز يستطيع الاتصال بالأجهزة الأخرى على نفس الشبكة المحلية لكنه لا يستطيع الوصول إلى الإنترنت، فما هو السبب المحتمل على مستوى طبقة الوصلة؟


انتقال إلى الفصل السابع: في الفصل القادم، سنقوم بربط جميع المفاهيم التي تعلمناها في الفصول السابقة من خلال متابعة دورة حياة الحزمة (Packet) من المتصفح إلى الخادم. سنرى كيف تنتقل البيانات عبر الطبقات المختلفة، وكيف تتغير الإطارات والحزم في كل قفزة، وسنتعرف على مرحلة إنشاء اتصال TCP (المصافحة الثلاثية) وكيفية عملها عملياً.



الفصل السابع: دورة حياة الحزمة (الرحلة عبر الشبكة)


تمهيد الفصل

بعد أن قطعنا شوطاً طويلاً في فهم النموذج الطبقي (الفصل الأول)، وآلية التغليف (الفصل الثاني)، وأنماط الاتصال (الفصل الثالث)، وعنونة IP والتوجيه (الفصلان الرابع والخامس)، وطبقة الوصلة (الفصل السادس)، حان الوقت لتجميع كل هذه المفاهيم في رحلة واحدة متكاملة، من لحظة كتابة المستخدم لعنوان ويب في المتصفح إلى لحظة وصول الطلب إلى الخادم وعودة الرد.

هذا الفصل هو تتويج لكل ما سبق. سنتتبع حزمة البيانات خطوة بخطوة، ونرى كيف تتغير (وما الذي يبقى ثابتاً) في كل طبقة وفي كل قفزة (Hop)، مع التركيز العملي على ما يحدث داخل الموجه (Router) عند معالجة الحزمة. سنبدأ بمرحلة إنشاء الاتصال (TCP Handshake) قبل انتقال البيانات الفعلية، ثم نتابع الرحلة الكاملة مع مثال رقمي تفصيلي.


7.1 مرحلة إنشاء الاتصال (TCP Three-way Handshake)

قبل أن يتمكن المتصفح من إرسال طلب HTTP الفعلي، يجب أولاً إنشاء اتصال TCP مع الخادم. هذا الاتصال هو القناة المنطقية التي ستُنقل عبرها البيانات. تتم عملية الإنشاء عبر ثلاث خطوات تُعرف بـ المصافحة الثلاثية (Three-way Handshake).

7.1.1 لماذا نحتاج إلى المصافحة الثلاثية؟

  • تزامن الأرقام التسلسلية: يختار كل طرف رقماً تسلسلياً ابتدائياً (Initial Sequence Number - ISN) لترتيب القطع وإعادة تجميعها.

  • فتح الاتصال ثنائي الاتجاه: يضمن أن كلا الطرفين جاهزان للاستقبال والإرسال.

  • تأكيد الجاهزية: يتحقق من أن الخادم يعمل ويستمع على المنفذ المطلوب.

7.1.2 خطوات المصافحة بالتفصيل

الخطوة

المرسل

الرسالة

المحتوى

النتيجة

1

العميل

SYN

رقم تسلسلي ابتدائي Seq = X (رقم عشوائي).

العميل يقول: "أريد الاتصال، هذا هو رقمي التسلسلي".

2

الخادم

SYN-ACK

Seq = Y (رقم عشوائي جديد)، Ack = X+1.

الخادم يقول: "أوافق على الاتصال، هذا هو رقمي، وأكدت استلام SYN الخاص بك".

3

العميل

ACK

Seq = X+1 (أول بايت سيرسل)، Ack = Y+1.

العميل يقول: "أكدت استلام SYN-ACK الخاص بك، الاتصال الآن مفتوح".



بعد هذه الخطوات الثلاث، يصبح الاتصال مفتوحاً، ويمكن بدء نقل البيانات (مثل طلب HTTP).

التمثيل البياني:

[العميل]                                    [الخادم]
│ │
│─────── 1. SYN (Seq = X) ──────────────────→│
│ │
│←───── 2. SYN-ACK (Seq = Y, Ack = X+1) ────│
│ │
│─────── 3. ACK (Ack = Y+1) ────────────────→│
│ │
│══════════
الاتصال مفتوح ════════════════════│
│ │
│─────── 4.
بيانات HTTP (GET /) ────────────→│
│ │

7.1.3 ما يحدث خلال المصافحة على مستوى الشبكة

  • كل رسالة من هذه الرسائل الثلاث تُغلف كقطعة TCP، ثم تُغلف في حزمة IP، ثم في إطار، وتنتقل عبر الموجهات بنفس آلية نقل أي حزمة IP أخرى (انظر القسم 7.3 و 7.4).

  • الموجهات لا تشارك في المصافحة؛ هي فقط تمرر الحزم التي تحمل قطع TCP هذه.

  • زمن المصافحة (RTT - Round Trip Time) يُضاف إلى زمن تحميل الصفحة. بروتوكولات مثل QUIC (المستخدم في HTTP/3) تقلل هذا الزمن باستخدام 0-RTT أو 1-RTT.


7.2 ملخص الجدول الدوري: المتغيرات والثوابت عند كل قفزة (Hop)

أثناء انتقال الحزمة من المصدر إلى الوجهة، تمر عبر عدة قفزات (Hops). في كل قفزة، تتغير بعض العناصر وتبقى أخرى ثابتة. هذا الجدول يلخص ما يحدث:

العنصر

هل يتغير عند كل Hop؟

لماذا؟

ملاحظة

عنوان MAC المصدر

يتغير

ليصبح عنوان واجهة الموجه على الوصلة الحالية.

يُعاد كتابته في كل Hop.

عنوان MAC الوجهة

يتغير

ليصبح عنوان الجهة التالية (Next Hop) على الوصلة الحالية.

يُعاد كتابته في كل Hop.

الإطار (Frame)

يُستبدل بالكامل

كل وصلة لها إطار خاص بها (رأس ومذيل مختلفان).

يُنشأ إطار جديد في كل Hop.

عنوان IP المصدر

يبقى (عادةً)

يحدد هوية المرسل النهائية.

قد يتغير مع NAT.

عنوان IP الوجهة

يبقى (عادةً)

يحدد الوجهة النهائية، وهي ما يحتاجه الموجه للتوجيه.

قد يتغير مع NAT.

TTL (Time To Live)

ينقص بمقدار 1

لمنع الحلقات اللانهائية (Routing Loops).

إذا وصل إلى 0، تُسقط الحزمة.

أرقام تسلسل TCP

تبقى

تحافظ على تتابع القطع بين العميل والخادم.

الموجه لا يعدلها.

بيانات HTTP/TLS

تبقى

المحتوى الفعلي الذي يريد التطبيق إرساله.

الموجه لا يقرؤها ولا يعدلها.

المنافذ (Ports)

تبقى (عادةً)

تحدد التطبيق على الجهازين.

قد تتغير مع NAT.




7.3 نموذج تطبيقي لرحلة طلب ويب (مثال خطوة بخطوة)

7.3.1 السيناريو

  • العميل (المتصفح):

    • عنوان IP: 192.168.1.10/24

    • عنوان MAC: AA:AA:AA:AA:AA:AA

    • البوابة الافتراضية: 192.168.1.1 (جهاز التوجيه المنزلي)

  • الخادم (Web Server):

    • عنوان IP: 203.0.113.20

    • عنوان MAC: BB:BB:BB:BB:BB:BB

  • المسار:

    • Hop 1: العميل → الموجه A (المنزلي).

    • Hop 2: الموجه A → الموجه B (مزود الخدمة).

    • Hop 3: الموجه B → الخادم.

7.3.2 ما يحدث في كل خطوة

أ. قبل الإرسال: إنشاء اتصال TCP (المصافحة الثلاثية)

  • يرسل العميل قطعة SYN (المصافحة 1). تُغلف وتُرسل عبر المسار نفسه الذي سنراه في نقل البيانات، وتعود قطعة SYN-ACK من الخادم (المصافحة 2)، ثم يرسل العميل ACK (المصافحة 3). بعدها يكون الاتصال مفتوحاً.

ب. إرسال طلب HTTP (GET /index.html)

عند العميل (قبل Hop 1):

  1. يجهز المتصفح طلب HTTP: GET /index.html HTTP/1.1\r\nHost: example.com\r\n\r\n.

  2. تمرر بيانات HTTP إلى TCP، التي تضيف رأسها (المنافذ: مصدر عشوائي 49152، وجهة 443، أرقام تسلسلية، إلخ) → قطعة TCP.

  3. تمرر قطعة TCP إلى IP، التي تضيف رأسها (المصدر: 192.168.1.10، الوجهة: 203.0.113.20، TTL: 64) → حزمة IP.

  4. تمرر حزمة IP إلى طبقة الوصلة (Ethernet)، التي:

    • تتحقق من أن الوجهة (203.0.113.20) ليست محلية (ليست ضمن 192.168.1.0/24).

    • تقرر إرسال الحزمة إلى البوابة الافتراضية (192.168.1.1).

    • تستخدم ARP للحصول على MAC الخاص بالبوابة (لنفترض CC:CC:CC:CC:CC:CC).

    • تبني الإطار: المصدر AA:AA:AA:AA:AA:AA، الوجهة CC:CC:CC:CC:CC:CC، الحمولة = حزمة IP.

    • → إطار 1.

Hop 1: العميل → الموجه A:

  • يُرسل الإطار 1 عبر كابل Ethernet أو Wi-Fi إلى الموجه A.

  • ما يحدث في الإطار 1:

    ┌──────────────────────────────────────────────────────────────────────┐
    إطار 1 (Ethernet) │
    ├──────────────────────────────────────────────────────────────────────┤
    │ MAC
    المصدر: AA:AA:AA:AA:AA:AA (العميل) │
    │ MAC
    الوجهة: CC:CC:CC:CC:CC:CC (الموجه A) │
    ├──────────────────────────────────────────────────────────────────────┤
    حزمة IP │
    │ IP
    المصدر: 192.168.1.10 │
    │ IP
    الوجهة: 203.0.113.20 │
    │ TTL: 64 │
    ├──────────────────────────────────────────────────────────────────────┤
    قطعة TCP (SYN أو بيانات HTTP) │
    └──────────────────────────────────────────────────────────────────────┘

Hop 2: الموجه A → الموجه B (معالجة داخل الموجه A):

  1. يستقبل الموجه A الإطار 1 من الوصلة الداخلة.

  2. تنزع طبقة الوصلة رأس Ethernet، وتستخرج حزمة IP.

  3. تقرأ طبقة الإنترنت:

    • عنوان IP الوجهة = 203.0.113.20.

    • TTL = 64تُنقص إلى 63 (صالح).

  4. تبحث في جدول التوجيه (FIB) عن مسار للوجهة.

    • تجد أن الوجهة ليست محلية (ليست 192.168.1.0/24).

    • تجد مساراً افتراضياً (0.0.0.0/0) يشير إلى Next Hop = 198.51.100.1 (عنوان الموجه B) عبر واجهة eth1.

  5. تحتاج إلى إرسال الحزمة إلى Next Hop (198.51.100.1). تستخدم ARP للحصول على MAC الخاص بالموجه B (لنفترض DD:DD:DD:DD:DD:DD).

  6. تبني إطاراً جديداً (إطار 2) للوصلة الخارجة:

    • MAC المصدر: عنوان واجهة eth1 في الموجه A (لنفترض EE:EE:EE:EE:EE:EE).

    • MAC الوجهة: DD:DD:DD:DD:DD:DD (الموجه B).

    • الحمولة: حزمة IP نفسها (مع TTL = 63).

  7. ترسل الإطار 2 عبر الوصلة الخارجة.

┌──────────────────────────────────────────────────────────────────────┐
إطار 2 (Ethernet) │
├──────────────────────────────────────────────────────────────────────┤
│ MAC
المصدر: EE:EE:EE:EE:EE:EE (الموجه A - واجهة الخروج) │
│ MAC
الوجهة: DD:DD:DD:DD:DD:DD (الموجه B) │
├──────────────────────────────────────────────────────────────────────┤
حزمة IP (نفسها، مع تغيير TTL) │
│ IP
المصدر: 192.168.1.10 │
│ IP
الوجهة: 203.0.113.20 │
│ TTL: 63 │
├──────────────────────────────────────────────────────────────────────┤
قطعة TCP (نفسها) │
└──────────────────────────────────────────────────────────────────────┘

Hop 3: الموجه B → الخادم (معالجة داخل الموجه B):

  1. يستقبل الموجه B الإطار 2 من الوصلة الداخلة.

  2. تنزع طبقة الوصلة رأس Ethernet، وتستخرج حزمة IP.

  3. تقرأ طبقة الإنترنت:

    • عنوان IP الوجهة = 203.0.113.20.

    • TTL = 63تُنقص إلى 62.

  4. تبحث في جدول التوجيه عن مسار للوجهة.

    • تجد أن 203.0.113.20 يقع ضمن الشبكة 203.0.113.0/24، وهي متصلة مباشرة بواجهة eth2.

  5. تحتاج إلى إرسال الحزمة مباشرة إلى الخادم. تستخدم ARP للحصول على MAC الخاص بالخادم (BB:BB:BB:BB:BB:BB).

  6. تبني إطاراً جديداً (إطار 3) للوصلة الخارجة:

    • MAC المصدر: عنوان واجهة eth2 في الموجه B (لنفترض FF:FF:FF:FF:FF:FF).

    • MAC الوجهة: BB:BB:BB:BB:BB:BB (الخادم).

    • الحمولة: حزمة IP نفسها (مع TTL = 62).

  7. ترسل الإطار 3 عبر الوصلة الخارجة إلى الخادم.

┌──────────────────────────────────────────────────────────────────────┐
إطار 3 (Ethernet) │
├──────────────────────────────────────────────────────────────────────┤
│ MAC
المصدر: FF:FF:FF:FF:FF:FF (الموجه B - واجهة الخروج) │
│ MAC
الوجهة: BB:BB:BB:BB:BB:BB (الخادم) │
├──────────────────────────────────────────────────────────────────────┤
حزمة IP (نفسها، مع تغيير TTL) │
│ IP
المصدر: 192.168.1.10 │
│ IP
الوجهة: 203.0.113.20 │
│ TTL: 62 │
├──────────────────────────────────────────────────────────────────────┤
قطعة TCP (نفسها) │
└──────────────────────────────────────────────────────────────────────┘

عند الخادم (بعد Hop 3):

  1. يستقبل الخادم الإطار 3 من الوصلة الداخلة (الشبكة المحلية للخادم).

  2. تنزع طبقة الوصلة رأس Ethernet، وتستخرج حزمة IP.

  3. تتحقق طبقة الإنترنت من أن عنوان IP الوجهة (203.0.113.20) يطابق عنوان الخادم، وتستخرج قطعة TCP.

  4. تتحقق طبقة النقل من أن المنفذ الوجهة (443) يطابق خدمة HTTPS المفتوحة، وتعيد ترتيب القطع (إن لزم)، وترسل تأكيدات (ACKs).

  5. تنزع رأس TCP، وتستخرج البيانات (المشفرة في HTTPS).

  6. تمرر البيانات إلى طبقة التطبيق (TLS) التي تفك تشفيرها، ثم إلى خادم الويب الذي يقرأ طلب HTTP ويجهز الرد.


7.4 تحليل تفصيلي لما يحدث داخل الموجه عند وصول الحزمة

7.4.1 المخطط الانسيابي الكامل داخل الموجه

                    ┌─────────────────────────────────────────┐
│ 1.
استقبال الإطار من الوصلة │
│ (Incoming Frame) │
└─────────────────┬───────────────────────┘


┌─────────────────────────────────────────┐
│ 2.
معالجة طبقة الوصلة │
│ -
التحقق من سلامة الإطار (FCS). │
│ -
نزع رأس Ethernet (MAC). │
│ -
استخراج حزمة IP. │
└─────────────────┬───────────────────────┘


┌─────────────────────────────────────────┐
│ 3.
معالجة طبقة الإنترنت (IP) │
│ -
قراءة Destination IP. │
│ -
التحقق من TTL: │
│ •
إذا كان 0: تُسقط الحزمة، │
ويرسل ICMP Time Exceeded. │
│ •
وإلا: يُنقص TTL بمقدار 1. │
└─────────────────┬───────────────────────┘


┌─────────────────────────────────────────┐
│ 4.
البحث في جدول التوجيه (FIB) │
│ -
البحث عن مسارات مطابقة. │
│ -
تطبيق Longest Prefix Match. │
│ - (
إن وجد تعادل) اختيار الأقل │
│ Metric. │
│ -
استخراج Next Hop والواجهة │
الخارجة. │
└─────────────────┬───────────────────────┘


┌──────────────────────────────────────────────────────────────────────┐
│ 5.
التحضير للإرسال على الوصلة الخارجة │
│ -
استخدام ARP (أو Neighbor Discovery) للحصول على MAC الخاص │
بالـ Next Hop (أو الوجهة النهائية إذا كانت متصلة مباشرة). │
│ -
بناء إطار جديد للوصلة الخارجة: │
│ • MAC
المصدر: عنوان واجهة الموجه على الوصلة الخارجة. │
│ • MAC
الوجهة: عنوان الـ Next Hop (أو الوجهة النهائية). │
│ •
الحمولة: حزمة IP (المعدلة TTL). │
│ - (
اختياري) إضافة مذيل FCS للتحقق من السلامة. │
└──────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────┐
│ 6.
إرسال الإطار الجديد │
│ (Outgoing Frame) │
└─────────────────────────────────────────┘

7.4.2 ملاحظات مهمة حول معالجة الموجه

  1. الموجه لا يفتح قطعة TCP: لا يقرأ المنافذ، ولا الأرقام التسلسلية، ولا محتوى البيانات. هذا يجعل عملية التوجيه سريعة وفعالة.

  2. الموجه لا يفهم HTTP أو TLS: لا يفرق بين طلب HTTP وصورة أو فيديو؛ كلها مجرد حمولة (Payload) داخل حزمة IP.

  3. TTL هو خط الدفاع الأخير: إذا حدث خطأ في التوجيه وتشكلت حلقة (Loop)، ستنقص TTL في كل دورة حتى تصل إلى 0، فتُسقط الحزمة ويمنع استهلاك الموارد إلى الأبد.

  4. إعادة بناء الإطار (Frame): هذا هو جوهر Hop-by-Hop. الإطار القديم يُتلف، ويُبنى إطار جديد مناسب للوصلة التالية. هذا يسمح باستخدام تقنيات وصلة مختلفة في كل جزء من الرحلة (مثلاً Ethernet في المنزل، Fiber في مزود الخدمة، Wi-Fi في مقهى).


7.5 خلاصة الفصل

النقطة

الشرح

المصافحة الثلاثية (TCP 3-Way Handshake)

الخطوات الأولى لفتح اتصال TCP: SYN، SYN-ACK، ACK.

الاتصال المفتوح

بعد المصافحة، يمكن نقل البيانات (مثل HTTP).

الجدول الدوري

عناوين MAC والإطارات تتغير في كل Hop؛ عناوين IP والبيانات تبقى (عادةً).

الموجه يعالج IP فقط

لا يفتح TCP، ولا يقرأ HTTP، ولا يعدل البيانات.

TTL

يُنقص في كل Hop لمنع الحلقات اللانهائية.

إعادة بناء الإطار

كل وصلة لها إطارها الخاص بعناوين MAC محلية.




7.6 أسئلة فهم الفصل

  1. ما هي المصافحة الثلاثية (Three-way Handshake) في TCP؟ وما الغرض منها؟

  2. ما هي الرسائل الثلاث المتبادلة في المصافحة، وما محتوى كل منها؟

  3. لماذا لا تشارك الموجهات في المصافحة الثلاثية؟

  4. ما الذي يتغير في الحزمة عند كل Hop؟ وما الذي يبقى ثابتاً؟

  5. لماذا تتغير عناوين MAC في كل Hop، بينما تبقى عناوين IP (عادةً)؟

  6. ما هي وظيفة حقل TTL في رأس IP، وماذا يحدث عندما يصل إلى 0؟

  7. صف بالتفصيل ما يحدث داخل الموجه عند وصول حزمة جديدة (خطوة بخطوة).

  8. لماذا يُعاد بناء الإطار (Frame) بالكامل في كل Hop؟

  9. في مثالنا العملي (العميل 192.168.1.10 ← الخادم 203.0.113.20)، كم مرة تغير عنوان MAC المصدر؟ وكم مرة تغير عنوان IP المصدر؟

  10. هل يقرأ الموجه محتوى قطعة TCP (مثل المنافذ أو الأرقام التسلسلية)؟ ولماذا؟

  11. كيف يحدد الموجه Next Hop المناسب عند وصول حزمة؟

  12. كيف يستخدم الموجه ARP في عملية الإرسال، ومتى يحتاج إليها؟

  13. ماذا يحدث إذا وجد الموجه أن TTL = 0 عند وصول الحزمة؟

  14. كيف يرتبط ما تعلمناه في هذا الفصل بمفهوم End-to-End من الفصل الثالث؟

  15. إذا كنت تتبع حزمة من متصفحك إلى خادم بعيد، كيف يمكنك استخدام traceroute لمعرفة عدد الـ Hops التي تمر بها الحزمة؟


انتقال إلى الفصل الثامن (الخاتمة): بعد هذه الرحلة الطويلة عبر طبقات النموذج، وآليات التغليف، والتوجيه، والوصلة، نصل إلى الفصل الختامي حيث سنلخص كل ما تعلمناه في نموذج واحد متكامل، ونقدم تطبيقات عملية لمهندس الويب، ونضع خريطة ذهنية نهائية للرحلة الكاملة من المتصفح إلى الخادم.

الفصل الثامن: الخاتمة – النموذج المتكامل والتطبيقات العملية


تمهيد الفصل

وصلنا إلى المحطة الأخيرة في رحلتنا عبر نموذج TCP/IP. بدأنا بفهم الإطار النظري للطبقات، ثم تتبعنا البيانات أثناء تغليفها وفك تغليفها، وفرقنا بين الاتصال المنطقي والتسليم الفعلي، ثم تعمقنا في عنونة IP وتوجيه الحزم، وانتهينا بطبقة الوصلة وآليات النقل المحلي. وفي الفصل السابع، تابعنا رحلة حزمة كاملة من المتصفح إلى الخادم، خطوة بخطوة، ورأينا كيف تتفاعل كل طبقة في كل قفزة.

الآن حان وقت تجميع كل هذه القطع في صورة واحدة متكاملة، وتقديم أدوات عملية يمكن لمهندس الويب استخدامها في عمله اليومي، واستعراض منهجية تحليل الأعطال باستخدام النموذج الطبقي، وأخيراً خريطة ذهنية نهائية تلخص الرحلة بأكملها.


8.1 النموذج المتكامل: من المتصفح إلى الخادم (رحلة كاملة)

8.1.1 المخطط الانسيابي الشامل

┌─────────────────────────────────────────────────────────────────────────────┐
رحلة طلب ويب كاملة (TCP/IP) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ [
المستخدم] يكتب example.com في المتصفح │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة التطبيق (Application) │ │
│ │ -
المتصفح يطلب DNS لترجمة example.com إلى IP. │ │
│ │ -
المتصفح يجهز طلب HTTP (GET /). │ │
│ │ - (
في HTTPS) تمرر البيانات إلى TLS لتشفيرها. │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة النقل (Transport) │ │
│ │ - TCP:
يقوم بالمصافحة الثلاثية (SYN, SYN-ACK, ACK) مع الخادم. │ │
│ │ -
بعد فتح الاتصال، يضيف رأس TCP (المنافذ، الأرقام التسلسلية). │ │
│ │ -
يُقسم البيانات إلى قطع (Segments). │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة الإنترنت (Internet) │ │
│ │ -
يضيف رأس IP: IP المصدر (العميل)، IP الوجهة (الخادم)، TTL=64. │ │
│ │ -
يُشكل حزمة IP (Packet). │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة الوصلة (Link) │ │
│ │ -
يحدد أن الوجهة ليست محلية، فيرسل إلى البوابة الافتراضية. │ │
│ │ -
يستخدم ARP للحصول على MAC الخاص بالبوابة. │ │
│ │ -
يبني إطار (Frame) مع MAC المصدر (الجهاز) و MAC الوجهة (البوابة).│ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ═══════════════════════════════════════════════════════════════════════ │
│ [
ترسل الإشارات عبر الوسط الفيزيائي (Ethernet/Wi-Fi)] │
│ ═══════════════════════════════════════════════════════════════════════ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Hop 1:
العميل ←→ الموجه A (الراوتر المنزلي) │ │
│ │ -
يستقبل الموجه الإطار، ينزع MAC، يستخرج حزمة IP. │ │
│ │ -
يقرأ IP الوجهة، يبحث في جدول التوجيه (LPM). │ │
│ │ -
يحدد Next Hop (الموجه B)، وينقص TTL. │ │
│ │ -
يبني إطاراً جديداً بعناوين MAC جديدة ويرسله. │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Hop 2:
الموجه A ←→ الموجه B (مزود الخدمة) │ │
│ │ -
نفس العملية: ينزع الإطار، يقرأ IP، يبحث، يحدد Next Hop │ │
│ │ (
الخادم أو موجه آخر)، ينقص TTL، يبني إطاراً جديداً. │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Hop 3:
الموجه B ←→ الخادم (الشبكة المحلية للخادم) │ │
│ │ -
يجد الموجه أن الوجهة موجودة على شبكته المحلية. │ │
│ │ -
يستخدم ARP للحصول على MAC الخاص بالخادم. │ │
│ │ -
يبني إطاراً جديداً بـ MAC المصدر (الموجه) و MAC الوجهة (الخادم). │ │
│ │ -
يرسل الإطار إلى الخادم. │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ [
يصل الإطار إلى الخادم] │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة الوصلة (في الخادم) │ │
│ │ -
ينزع رأس Ethernet، ويستخرج حزمة IP. │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة الإنترنت (في الخادم) │ │
│ │ -
يتحقق من أن IP الوجهة يطابق عنوان الخادم. │ │
│ │ -
ينزع رأس IP، ويستخرج قطعة TCP. │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة النقل (في الخادم) │ │
│ │ -
يتحقق من المنفذ الوجهة (443)، ويرتب القطع (إن لزم). │ │
│ │ -
يرسل تأكيدات (ACKs) للقطع المستقبلة. │ │
│ │ -
ينزع رأس TCP، ويستخرج البيانات (المشفرة في HTTPS). │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة التطبيق (في الخادم) │ │
│ │ - TLS
يفك تشفير البيانات، ويستخرج طلب HTTP الخام. │ │
│ │ -
خادم الويب يقرأ الطلب (GET /index.html) ويجهز الرد. │ │
│ │ -
يمرر الرد عبر نفس الطبقات (بترتيب عكسي) ليعود إلى المتصفح. │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

8.1.2 الجدول التلخيصي النهائي للطبقات والمفاهيم

الطبقة

السؤال الأساسي

الوظيفة

البروتوكولات/التقنيات

وحدة البيانات

العنونة

التطبيق

ماذا نريد أن نقول؟

معنى البيانات، تشفير (TLS)، ترجمة الأسماء (DNS).

HTTP، DNS، TLS

رسالة (Data)

-

النقل

كيف ننقل بين التطبيقات؟

اتصال موثوق (TCP) أو سريع (UDP)، تحديد الخدمة بالمنافذ.

TCP، UDP، QUIC

قطعة (Segment)

المنافذ (Ports)

الإنترنت

إلى أين نرسل؟

العنونة المنطقية (IP)، التوجيه بين الشبكات.

IPv4، IPv6، ICMP

حزمة (Packet)

عناوين IP

الوصلة

كيف ننقل محلياً؟

تسليم الإطارات على الشبكة المحلية، عنونة MAC.

Ethernet، Wi-Fi، ARP

إطار (Frame)

عناوين MAC




8.2 تطبيقات عملية لمهندس الويب

8.2.1 استخدام النموذج الطبقي في تحليل الأعطال

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

منهجية التحليل خطوة بخطوة:

  1. هل المشكلة في طبقة التطبيق؟

    • فشل في حل DNS (الموقع لا يُترجم إلى IP).

    • خطأ في HTTP (كود 404، 500، 503).

    • شهادة TLS منتهية أو غير موثوقة.

    • أدوات التشخيص: curl -v، nslookup، متصفح (F12).

  2. هل المشكلة في طبقة النقل؟

    • رفض الاتصال (Connection Refused) – المنفذ مغلق أو خادم لا يستمع.

    • انتهاء المهلة (Timeout) – قد يكون بسبب جدار ناري يمنع الحزم.

    • فقدان حزم عالي – يؤدي إلى إعادة إرسال متكررة وبطء.

    • أدوات التشخيص: telnet، nc، tcpdump، مراقبة معدل فقدان الحزم.

  3. هل المشكلة في طبقة الإنترنت؟

    • ping يفشل (ICMP محجوب أو مسار غير موجود).

    • traceroute يظهر توقفاً في نقطة معينة (Router معطل، أو مسار خاطئ).

    • مسار غير صحيح (Routing Loop، أو غياب مسار افتراضي).

    • أدوات التشخيص: ping، traceroute، ip route، route print.

  4. هل المشكلة في طبقة الوصلة؟

    • لا يوجد اتصال فيزيائي (كابل مفصول، Wi-Fi غير متصل).

    • فشل ARP (لا يمكن العثور على MAC للبوابة).

    • سرعة منخفضة جداً على الوصلة (ازدحام أو خلل في العتاد).

    • أدوات التشخيص: arp -a، ipconfig /all، فحص الكابلات/الإشارة.

مثال تطبيقي:

  • السيناريو: المستخدم يقول "الموقع لا يعمل".

  • التحليل:

    1. جرب nslookup example.comيعمل (DNS سليم).

    2. جرب curl -v https://example.comيتوقف عند TLS handshake.

    3. جرب ping example.comناجح (IP يعمل، لكن المنفذ 443 قد يكون محجوباً).

    4. جرب telnet example.com 443يفشل (المنفذ 443 لا يستجيب).

    5. الاستنتاج: المشكلة في طبقة النقل (الخادم لا يستمع على 443، أو جدار ناري يمنع الوصول).

8.2.2 الأدوات العملية الأساسية (ملخص سريع)

الأداة

الغرض

الأمر النموذجي

المعلومات التي تقدمها

curl

اختبار طلبات HTTP/HTTPS

curl -v https://example.com

مراحل الاتصال (DNS، TLS، نقل البيانات)، رؤوس الطلب والرد، أكواد HTTP.

nslookup / dig

استعلام DNS

nslookup example.com

عنوان IP المرتبط بالاسم، ومعلومات أخرى عن DNS.

ping

اختبار وصول ICMP

ping example.com

تأكيد وصول ICMP (IP Layer)، زمن الاستجابة (RTT)، معدل فقدان الحزم.

traceroute / tracert

تتبع المسار

traceroute example.com

عدد القفزات (Hops)، عناوين IP لكل موجه، زمن الاستجابة لكل Hop.

ip route / route print

عرض جدول التوجيه

ip route (Linux), route print (Windows)

المسارات المعروفة، البوابة الافتراضية، الواجهات.

arp -a

عرض جدول ARP

arp -a

عناوين MAC المقابلة لعناوين IP على الشبكة المحلية.

netstat / ss

عرض الاتصالات النشطة

netstat -an, ss -tuln

المنافذ المفتوحة، الاتصالات الجارية، حالة المقابس.

Wireshark

تحليل الحزم بالتفصيل

(تشغيل الواجهة)

مشاهدة كل طبقة (Ethernet, IP, TCP, HTTP, TLS)، تحليل شامل.

tcpdump

التقاط الحزم من سطر الأوامر

tcpdump -i eth0 port 443

التقاط الحزم المتعلقة بمنفذ معين، وتحليلها لاحقاً.

ifconfig / ip addr

معلومات الواجهات

ip addr, ifconfig

عناوين IP، MAC، حالة الواجهة.



8.2.3 نصائح عملية لاستكشاف الأخطاء

  1. ابدأ من الأعلى: تحقق من المتصفح أولاً، ثم طبقة التطبيق، ثم النقل، ثم الإنترنت، ثم الوصلة. هذا يوفر وقتاً لأنه يحصر المشكلة.

  2. استخدم curl -v كأداة أولى: يعطيك نظرة شاملة على مراحل الاتصال.

  3. لا تنسَ الجدران النارية والوكلاء: قد تكون في منتصف الطريق وتقطع الاتصال. استخدم curl -x لتحديد وكيل، أو تحقق من سياسات الجدار الناري.

  4. تتبع المسار باستمرار: traceroute يساعد في معرفة أين تتوقف الحزمة بالضبط.

  5. راقب الأداء: استخدم أدوات مثل ping لقياس RTT، و traceroute لقياس زمن كل Hop لتحديد مصدر البطء.

  6. تذكر NAT: قد يخفي NAT عنوان العميل الحقيقي، مما يؤثر على تحليلات الأمان أو تحديد الموقع الجغرافي.


8.3 الخريطة الذهنية النهائية (ملخص كل الفصول)

┌─────────────────────────────────────────────────────────────────────────────────────┐
نموذج TCP/IP – الخريطة الذهنية الكاملة │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة التطبيق │ │
│ │ •
البيانات: معنى الطلب (HTTP, DNS, TLS). │ │
│ │ •
السؤال: ماذا نريد أن نقول؟ │ │
│ │ •
الأجهزة: المتصفح، الخادم. │ │
│ └───────────────────────────────────────────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة النقل │ │
│ │ •
القطعة (Segment): رأس TCP (المنافذ، الأرقام التسلسلية). │ │
│ │ •
السؤال: كيف ننقل بين التطبيقات؟ │ │
│ │ •
البروتوكولات: TCP (موثوق، متصل)، UDP (سريع، غير متصل)، QUIC (مدمج). │ │
│ │ •
المصافحة الثلاثية: SYN, SYN-ACK, ACK. │ │
│ └───────────────────────────────────────────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة الإنترنت │ │
│ │ •
الحزمة (Packet): رأس IP (المصدر، الوجهة، TTL). │ │
│ │ •
السؤال: إلى أين نرسل؟ │ │
│ │ •
التوجيه: Routing (تخطيط) → Forwarding (تنفيذ). │ │
│ │ • LPM:
أطول بادئة مطابقة تختار المسار الأكثر تحديداً. │ │
│ │ •
المسار الافتراضي: 0.0.0.0/0 (لكل ما لا يُعرف). │ │
│ │ •
العناوين: IPv4 (32 بت، ينفد)، IPv6 (128 بت، وفير). │ │
│ └───────────────────────────────────────────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
│ │
طبقة الوصلة │ │
│ │ •
الإطار (Frame): رأس Ethernet (MAC المصدر، MAC الوجهة). │ │
│ │ •
السؤال: كيف ننقل محلياً؟ │ │
│ │ •
التقنيات: Ethernet (سلكي)، Wi-Fi (لاسلكي). │ │
│ │ • MAC:
عنوان محلي فريد، يتغير في كل Hop. │ │
│ │ • ARP:
يحول IP إلى MAC على الشبكة المحلية. │ │
│ └───────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ═════════════════════════════════════════════════════════════════════════════════╗ │
│ ║
الرحلة الكاملة: ║ │
│ ║
المتصفح ← (التطبيق ← النقل ← الإنترنت ← الوصلة) ← الإطار ← Hop1 ← Hop2 ← ║ │
│ ║ HopN ← (
الوصلة ← الإنترنت ← النقل ← التطبيق) ← الخادم. ║ │
│ ║ ║ │
│ ║
يتغير في كل Hop: MAC، الإطار، TTL. ║ │
│ ║
يبقى ثابتاً (عادةً): IP، المنافذ، البيانات، TCP State. ║ │
│ ╚════════════════════════════════════════════════════════════════════════════════╝ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘

8.4 خلاصة الكتاب – الدروس المستفادة

لقد قطعنا معاً رحلة طويلة عبر بنية الإنترنت، بدءاً من الفكرة المجردة لطبقات الاتصال وصولاً إلى التفاصيل الدقيقة لنقل البتات عبر الكابلات والموجات. يمكننا تلخيص أهم الدروس في النقاط التالية:

  1. نموذج TCP/IP هو العمود الفقري: كل ما يحدث على الإنترنت يُفسر من خلال هذا النموذج. فهمه ليس ترفاً أكاديمياً، بل ضرورة عملية لكل مهندس ويب.

  2. التقسيم الطبقي هو مفتاح البساطة: بدلاً من مواجهة تعقيد لا يُطاق، يقوم النموذج بتقسيم المشكلة إلى قطع صغيرة يمكن فهم كل منها على حدة.

  3. التغليف هو لغة التواصل بين الطبقات: كل طبقة تضيف معلوماتها دون أن تفهم تفاصيل الطبقة الأخرى. هذا التجريد يسمح بتطور كل طبقة بشكل مستقل.

  4. الاتصال بين طرفين (End-to-End) يختلف عن التسليم المحلي (Hop-by-Hop): الأول منطقي ويربط التطبيقات، والثاني فيزيائي ويتكرر في كل قفزة. الموجهات تهتم بالثاني، بينما التطبيقات تهتم بالأول.

  5. التوجيه هو نظام الملاحة في الشبكة: كل موجه يتخذ قراراً محلياً باستخدام جدول توجيه وقاعدة أطول بادئة مطابقة، ليقود الحزمة خطوة بخطوة نحو وجهتها.

  6. عنوان IP هو الوجهة النهائية، وعنوان MAC هو العنوان المحلي: IP يبقى ثابتاً (عادةً) طوال الرحلة، بينما MAC يُعاد كتابته في كل Hop.

  7. الأدوات العملية هي امتداد للنموذج: كل أداة (مثل ping، traceroute، curl) تختبر طبقة معينة أو مجموعة طبقات، وفهم ذلك يساعد في التشخيص الدقيق.

  8. الإنترنت ليس مثالياً: توجد وسائط (مثل NAT، Proxies، Firewalls) قد تكسر نقاء مبدأ End-to-End، ويجب على المهندس أن يكون واعياً بوجودها وتأثيرها.

  9. التطور مستمر: بينما لا يزال IPv4 و TCP هما السائدان، فإن IPv6 و QUIC و HTTP/3 يغيرون الصورة تدريجياً، ويجب مواكبة هذه التطورات.

  10. الفهم العميق يمنح القوة: عندما تفهم كيف تعمل الشبكة فعلياً، تصبح قادراً على حل المشكلات التي تبدو مستعصية، وتصميم أنظمة أكثر كفاءة وأمناً.


8.5 كلمة أخيرة

نأمل أن يكون هذا الكتاب قد وفّر لك أساساً متيناً لفهم نموذج TCP/IP، ليس كمجرد مصطلحات نظرية، بل كأداة عملية لتحليل وتصميم وتشخيص تطبيقات الويب.

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

نتمنى لك رحلة ممتعة في عالم الشبكات، ونسأل الله أن يكون هذا الكتاب سبباً في زيادة علمك وفهمك.

والسلام ختام.


8.6 مراجع للاستزادة (مقترحة)

  • TCP/IP Illustrated, Volume 1 – W. Richard Stevens (المرجع الكلاسيكي).

  • Computer Networking: A Top-Down Approach – Kurose & Ross (نهج تعليمي ممتاز).

  • RFC 791 – Internet Protocol (الوثيقة الأصلية لـ IPv4).

  • RFC 8200 – Internet Protocol Version 6 (IPv6).

  • RFC 793 – Transmission Control Protocol (TCP).

  • RFC 2616 – Hypertext Transfer Protocol (HTTP/1.1).

  • RFC 9114 – HTTP/3 (البروتوكول الأحدث).

  • موارد عبر الإنترنت: IETF، W3C، Cloudflare Learning Center.


نهاية الكتاب