9.6. الحزم والتوجيه¶
يحدد عنوان IP لمن تُوجَّه الرسالة. أما الآلية التي تسلّمها فعلاً فتُسمى التوجيه، وهي العملية القائمة على القفز قفزةً قفزةً التي تنتقل بها الحزمة من الشبكة المحلية للمرسِل إلى الشبكة المحلية للمستقبِل، التي قد تكون بعيدة جداً.
9.6.1. نبذة موجزة عن الحزمة¶
إن الحزمة هي وحدة عمل طبقة IP -- كتلة من البايتات بترويسة صغيرة وحمولة. تحتوي الترويسة على حقلين يهمان للتوجيه:
عنوان IP المصدر (من أين أتت الحزمة).
عنوان IP الوجهة (إلى أين تتجه).
الحمولة هي ما طلبت طبقة النقل من طبقة الشبكة تسليمه. تتضمن ترويسة الحزمة أيضاً عدّاد مدة البقاء (time-to-live)، ومجموع تحقق على الترويسة، وبضع رايات تحكم. ولا شيء من ذلك مما تلمسه شيفرة Python في الكاميرا مباشرةً.
لا تَعِد الحزم بأكثر من "لقد حاولنا" -- فقد تُفقد أو تُكرَّر أو تُسلَّم خارج الترتيب. الموثوقية والترتيب مشكلتان تحلّهما طبقة النقل أعلاها؛ أما طبقة الشبكة فتبذل قصارى جهدها فقط لإعادة توجيه كل حزمة نحو وجهتها.
9.6.2. قفزةً قفزةً¶
تغادر الحزمة الكاميرا وتصل إلى أول جهاز لا يجلس على المقطع المحلي للكاميرا: البوابة الافتراضية. (أشارت الصفحة السابقة إلى أن DHCP يسلّم الكاميرا عنوان البوابة عند رفع الشبكة.) ذلك الجهاز هو موجّه -- صندوق مهمته تلقّي الحزم، والنظر في وجهتها، وإعادة توجيهها إلى الأمام.
تتنقل حزمة من الكاميرا إلى الوجهة بين الموجّهات، كل واحد منها خطوة أقرب.¶
للموجّه جدول توجيه -- قائمة من "للوجهات المطابقة لهذا النمط، أرسل الحزمة عبر هذه الواجهة". بالنسبة للوجهات على نفس شبكة الكاميرا، يقول المدخل "أعدها عبر الكابل الذي أتت منه". وبالنسبة للوجهات على الإنترنت الأوسع، يقول المدخل "أرسلها إلى الموجّه الأعلى". وبالنسبة لأنماط معروفة من الوجهات (VPN لشركة، أو شبكة شريك تجاري معيّن، أو وصلة قمر صناعي)، قد يكون لدى الموجّه مدخل أكثر تحديداً يتجاوز الافتراضي.
يفعل الموجّه الأعلى الشيء نفسه. والتالي. والتالي. كل قفزة لها نفس الشكل: تلقّي الحزمة، والبحث عن الوجهة في الجدول، وإرسالها عبر الواجهة الصحيحة. وفي النهاية تصل الحزمة إلى موجّه يكون موجوداً على نفس المقطع المحلي لعنوان IP الوجهة. يسلّم ذلك الموجّه القفزة الأخيرة، وتتلقى الوجهة الحزمة، وتنتهي الرحلة.
9.6.3. النقاط الطرفية لا تعرف المسار¶
لا تعرف كاميرا ترسل حزمة إلى خادم بعيد كيف ستصل الحزمة إلى هناك. كل ما تعرفه هو عنوان IP الوجهة وعنوان بوابتها الافتراضية. أما كل ما بينهما -- أي الموجّهات، وأي الألياف، وأي الكابلات تحت الماء -- فهو شيء تقرره الموجّهات على طول المسار أثناء سيرها، بناءً على جداولها الخاصة. والموجّهات نفسها لا تعرف سوى جيرانها المباشرين والاتجاه التقريبي للوجهات الشائعة؛ ولا يملك أي جهاز واحد على الإنترنت خريطة كاملة لها.
هذه اللامركزية هي السبب في استمرار عمل الشبكة عندما تفشل مسارات فردية. فيتحوّل كابل مقطوع في مكان ما في الوسط إلى حدث إعادة توجيه عند بضعة موجّهات؛ ولا تلاحظ النقاط الطرفية ذلك أبداً. وهي أيضاً السبب في إمكانية نجاح حزمة من كاميرا في طوكيو إلى خادم في دبلن دون أن يعرف أي من الطرفين ما هي البلدان الواقعة بينهما.
9.6.4. ماذا يعني هذا لبرنامج Python النصي¶
تنحصر مهمة الكاميرا في طبقة الشبكة في:
أن يكون لها عنوان IP.
أن تعرف عنوان البوابة الافتراضية (يملؤه DHCP تلقائياً).
أن تسلّم الحزم الصادرة، المُعنونة إلى أي عنوان IP، إلى تلك البوابة وأن تثق ببقية المسار.
لا يختار برنامج نصي مساراً أبداً، ولا يسمّي قفزة وسيطة، ولا يرى الموجّهات الموجودة في الوسط. إنه يكتب عنوان IP الوجهة على الحزمة وتتولى طبقة الشبكة الأمر. من منظور برنامج Python النصي، يكون التوجيه بأكمله مجرد خاصية للشبكة التي انضمّت إليها الكاميرا -- "ترسل البوابة الحزم إلى مكان مفيد لي".
تفترض طبقة النقل التي تأتي بعد ذلك أن التوجيه يعمل ببساطة، وتبني الموثوقية والترتيب والعنونة من برنامج إلى برنامج فوق ذلك.