9.3. الكابل والإطار¶
إن أدنى طبقتين في الحزمة هما الأسهل في أخذهما كأمر مسلّم به على الكاميرا، لأن كل ما تفعلانه يحدث داخل الشريحة وتتولاهما الكاميرا دون تدخل أي شيفرة Python. ومع ذلك فهما تستحقان جولة مختصرة، لأنهما توضحان ما الذي تعنيه "الشبكة المحلية" وأين يبدأ الحد الفاصل مع بقية البنية التحتية.
9.3.1. الطبقة الفيزيائية¶
الطبقة السفلى هي الإرسال الإشاري الفعلي -- الأسلاك أو الألياف الضوئية أو موجات الراديو التي تحمل البتات بين جهازين. فإيثرنت عبر كابلات الأزواج الملتوية يرمّز كل بت كانتقال جهد بمعدل ثابت. أما Wi-Fi فيُضمّن البتات نفسها على حامل راديوي في نطاق 2.4 GHz أو 5 GHz. وكلاهما يُنتج دفقًا من الأرقام الثنائية بين قطعتين من العتاد؛ وكلاهما من نوع التفاصيل التي تتولاها رقاقة الكاميرا دون أن تضطر البرمجيات للتفكير فيها.
من منظور البرنامج النصي المكتوب بـ Python، تكون الطبقة الفيزيائية إما "الوصلة فعّالة" أو "الوصلة معطّلة". وتُبلّغ وحدة network عن تلك الحالة من خلال دالتها isconnected() على واجهة Wi-Fi، ومن خلال حالة الوصلة على واجهة إيثرنت السلكية. وفيما عدا ذلك، يبقى كل ما تفعله هذه الطبقة مخفيًا.
9.3.2. طبقة الوصلة¶
تقع طبقة الوصلة درجةً واحدة أعلى -- وهي القواعد الخاصة بإرسال كتلة من البايتات (تُسمى إطارًا) بين جهازين يتشاركان القطعة الفيزيائية نفسها. وتضيف طبقة الوصلة شيئين فوق الإرسال الإشاري الخام:
العنونة العتادية. تأتي كل واجهة شبكية بمعرّف فريد بطول 48 بت يُسمى عنوان MAC (التحكم في الوصول إلى الوسط). وعلى إيثرنت يكون محروقًا داخل الشريحة؛ وعلى Wi-Fi يكون النوع نفسه من المعرّفات المحروقة داخل الوحدة اللاسلكية. وعناوين MAC هي ما يستخدمه المبدّل (switch) -- الصندوق ذو منافذ إيثرنت المتعددة الذي تتصل به الأجهزة القريبة -- ليقرر أي منفذ ينبغي أن يخرج منه إطار معيّن. وتؤدي نقطة وصول Wi-Fi الدور نفسه للأجهزة اللاسلكية على قناتها.
التأطير. تُحزَّم البايتات التي تسلّمها طبقة أعلى إلى إطار مع ترويسة صغيرة، والحمولة، ومجموع تحقق في النهاية. وتحمل الترويسة عنوانَي MAC المصدر والوجهة؛ ويتيح مجموع التحقق للمستقبِل اكتشاف أي إطار تعرّضت بايتاته للتلف أثناء النقل. والإطارات التي تفشل في التحقق تُهمَل بصمت -- ومن يهمه الموثوقية عليه أن يستعيدها في طبقة أعلى.
إن القطعة المحلية هي أي مجموعة من الأجهزة التي يمكنها رؤية إطارات بعضها مباشرة -- المنافذ السلكية على مبدّل واحد، أو كل الأجهزة المرتبطة بنقطة وصول Wi-Fi واحدة، أو شبكة صغيرة من المبدّلات المترابطة. ولا تستطيع طبقة الوصلة الوصول إلى ما هو أبعد من تلك القطعة. وبمجرد أن تقع الوجهة على قطعة مختلفة، يجب تسليم الرسالة إلى الطبقة الأعلى.
9.3.3. ما الذي تُتيحه الكاميرا¶
تمتلك الكاميرا عنوان MAC لكل واجهة شبكية تمتلكها -- عنوان Wi-Fi إن كانت الكاميرا تدعم اللاسلكي، وعنوان إيثرنت إن كانت اللوحة تحوي المنفذ المقابل. وتمنح وحدة network الوصول إليه من خلال network_interface.config("mac") على أي كائن واجهة يستخدمه التطبيق، عندما يحتاج إلى قراءة العنوان. وبعض التطبيقات تحتاج إلى ذلك، مثلًا لتسجيل الجهاز لدى نظام لإدارة الأساطيل. وفيما عدا ذلك، فهذا هو المفتاح الوحيد الذي تتركه طبقة الوصلة لـ Python.
أما كل ما عدا ذلك -- التأطير، وحركة MAC الفعلية على السلك أو في الأثير، والتفاوض بين الكاميرا ونقطة الوصول حول أي قناة ومعدل يُستخدمان -- فيحدث بالكامل داخل العتاد اللاسلكي أو عتاد إيثرنت. وتتناول الصفحة التالية الموضع الوحيد الذي يكون فيه للبرنامج النصي المكتوب بـ Python رأيٌ في طبقة الوصلة: إخبار الكاميرا بأي شبكة تنضم إليها.