9.5. عناوين IP¶
يميّز العنوان العتادي جهازاً عن غيره من الأجهزة الموجودة على نفس الكابل المحلي أو خلية الراديو. وهو جيد لتلك المهمة، لكنه عديم الفائدة خارج المقطع المحلي: لا يستطيع مبدّل في المبنى المجاور التوجيه بناءً عليه، لأن الآلية الأساسية التي تتيح للمبدّل تعلّم عناوين MAC تعمل فقط داخل مقطع واحد.
تحل طبقة الشبكة تلك المشكلة بنوع ثانٍ من العناوين مستقل عن الكابل الذي يُوصَّل به الجهاز. اسم هذا النوع من العناوين هو عنوان بروتوكول الإنترنت، أو عنوان IP، ويسمّي الشطر "بروتوكول الإنترنت" مجموعة القواعد التي يتبعها كل مضيف على الإنترنت عند إرسال عنوان أو إعادة توجيهه. تستخدم الإنترنت الحالية نسختين من مخطط العنونة بالتوازي -- IPv4 (الشكل الأقدم، الذي لا يزال مهيمناً على الشبكات الصغيرة) و IPv6 (الشكل الأحدث، الذي يحل محله ببطء).
9.5.1. ما هو عنوان IP¶
عنوان IP هو رقم كبير بما يكفي لتحديد أي جهاز على الإنترنت بشكل فريد. يُكتب بصيغة قابلة للقراءة البشرية تستخدمها بقية هذا القسم، لكنه في ترويسة الحزمة مجرد عدد صحيح ذي حجم ثابت.
عناوين IPv4 طولها 32 بِتاً وتُكتب على شكل أربعة أرقام عشرية مفصولة بنقاط، كل رقم منها بايت واحد:
192.168.1.42 8.8.8.8 10.0.0.1
تعطي اثنتان وثلاثون بِتاً نحو أربعة مليارات عنوان ممكن، وهو ما بدا وفيراً عندما صُمّم IPv4 في السبعينيات، ولم يعد كافياً مع أوائل العقد الثاني من الألفية.
عناوين IPv6 طولها 128 بِتاً وتُكتب على شكل ثماني مجموعات من أربعة أرقام ست عشرية مفصولة بنقطتين رأسيتين:
2001:0db8:85a3:0000:0000:8a2e:0370:7334يمكن اختصار تسلسلات الأصفار إلى
::، ويمكن إسقاط الأصفار البادئة في المجموعة، لذا يُكتب العنوان أعلاه عادةً2001:db8:85a3::8a2e:370:7334.
عائلتا العناوين بخلاف ذلك لغتان مختلفتان؛ لا يستطيع مضيف IPv4 إرسال حزمة مباشرةً إلى مضيف IPv6 دون مساعدة من بوابة. تدعم وحدتا network وsocket في الكاميرا كلتيهما. يستخدم هذا الدرس IPv4 في الأمثلة لأن معظم الشبكات المحلية التي ستنضم إليها الكاميرا لا تزال تعتمد IPv4 فقط، لكن كل ما يلي يعمل بنفس الطريقة تماماً مع IPv6 بمجرد استبدال العناوين.
9.5.2. ما الغرض من عنوان IP¶
يحدد عنوان IP أي مضيف على الإنترنت تُقصد به الحزمة. والموجّه الذي لا يعرف كيف يصل إلى وجهة ما مباشرةً يعلم أن موجّهاً آخر يعرف ذلك على الأرجح، فيعيد توجيه الحزمة إليه. تتنقل الحزمة بين الموجّهات، كل واحد منها أقرب قليلاً إلى الوجهة، حتى يقوم موجّه يكون موجوداً على المقطع المحلي للوجهة بتسليم القفزة الأخيرة.
هذا السلوك القائم على القفز قفزةً قفزةً هو ما يجعل الإنترنت تعمل كشبكة واحدة كبيرة بدلاً من جزر صغيرة كثيرة. تغطّي الصفحة التالية كيفية اختيار القفزات؛ أما هذه فعن العنوان فحسب.
9.5.3. كيف تحصل الكاميرا على عنوان¶
تحتاج الكاميرا التي انضمت للتو إلى شبكة Wi-Fi إلى عنوان IP قبل أن تتمكن من التحدث إلى أي شيء. هناك طريقتان شائعتان لحدوث ذلك.
الأولى هي التعيين التلقائي. تطلب الكاميرا عنواناً من الشبكة المحلية؛ والجهاز الذي يوزّع العناوين هو الموجّه -- الصندوق الذي يربط الشبكة المحلية بالإنترنت الأوسع. في معظم إعدادات المنازل والمكاتب الصغيرة، يعمل الصندوق المادي نفسه أيضاً كمبدّل تُوصَّل به الأجهزة السلكية وكنقطة وصول Wi-Fi تتصل بها الأجهزة اللاسلكية، لذا قد تكون "الموجّه" و"المبدّل" و"نقطة الوصول" جميعها نفس القطعة من العتاد. يشغّل الموجّه خدمة صغيرة تُسمى DHCP (بروتوكول التهيئة الديناميكية للمضيف)، التي تحتفظ بتجمّع من العناوين المتاحة، وتختار واحداً لكل جهاز جديد الوصول، وتؤجّره لمدة محددة. وأثناء ذلك، يسلّم الموجّه الكاميرا أيضاً قطعتين أخريين مفيدتين من الإعدادات:
العنوان الذي تُرسل إليه حركة المرور الصادرة عندما تكون الوجهة خارج الشبكة المحلية (البوابة الافتراضية، وهي عنوان الموجّه نفسه)؛ و
عناوين خادم أسماء واحد أو أكثر تحوّل الأسماء القابلة للقراءة البشرية مثل
example.comإلى عناوين IP. تُسمى خدمة البحث عن الأسماء DNS، نظام أسماء النطاقات، وتغطّيها الأسماء وDNS بالتفصيل.
يحدث كل هذا تلقائياً أثناء رفع الاتصال. ليس على الكاميرا أن تطلب أياً من ذلك صراحةً؛ ففي اللحظة التي يعيد فيها isconnected() القيمة True في المثال الموجود في الصفحة السابقة، تكون الكاميرا قد حصلت بالفعل على عنوانها وبوابتها وخوادم أسمائها.
الخيار الثاني هو التهيئة الثابتة. تريد بعض عمليات النشر عنواناً معروفاً للكاميرا كي تتمكن الأجهزة الأخرى من الوصول إليها دون البحث عنه أولاً. تضبط الطريقة ipconfig() العنوان والبوابة وخادم الأسماء يدوياً:
wlan.ipconfig(addr4=("192.168.1.50/24", "192.168.1.1"))
wlan.ipconfig(dns="192.168.1.1")
التهيئة الثابتة هشّة (يتعارض جهازان أُعطيا بالخطأ نفس العنوان). الجأ إلى افتراضي DHCP ما لم يظهر سبب محدد لتجاوزه.
بمجرد أن تحصل الكاميرا على عنوان IP، تكون قد انضمّت إلى الإنترنت (أو على الأقل إلى الجزء الخاص بالشبكة المحلية منه). يمكن للأجهزة الأخرى الآن توجيه الحزم إليها عبر ذلك العنوان، ويمكنها هي توجيه الحزم إليها.
9.5.4. قناع الشبكة و/24¶
إن /24 في نهاية العنوان في المثال الثابت أعلاه هو قناع الشبكة. لا يحدد عنوان IP بمفرده أين تنتهي الشبكة المحلية -- فقد يكون 192.168.1.50 واحداً من بضع مئات من العناوين على شبكة منزلية صغيرة، أو واحداً من الآلاف على شبكة أكبر. يحدد قناع الشبكة مقدار العنوان الذي يسمّي الشبكة ومقدار ما يسمّي المضيف داخلها.
يعني /24 "البِتات الأربع والعشرون الأولى من البِتات الاثنتين والثلاثين تسمّي الشبكة؛ والبِتات الثماني الأخيرة تسمّي المضيف". بالنسبة لـ192.168.1.50/24 يقسم ذلك العنوان إلى 192.168.1 للشبكة و.50 للمضيف، تاركاً مجالاً لنحو 254 جهازاً على نفس الشبكة المحلية. أما /16 فسيترك بِتات أكثر للشطر الخاص بالمضيف ويستوعب أجهزة أكثر بكثير على شبكة واحدة؛ في حين أن /30 سيترك عنواني مضيف اثنين فقط ويستوعب وصلة نقطة إلى نقطة.
يُكتب قناع الشبكة أيضاً بشكل شائع كرقم من أربعة بايتات بنفس الترميز النقطي للعنوان. يعادل /24 القيمة 255.255.255.0 -- اقرأ كل بايت على أنه "كل البِتات التي تنتمي إلى شطر الشبكة". الصيغتان قابلتان للتبادل؛ ويصادف أن قارئ ipconfig() في القسم الفرعي التالي يعيد الصيغة المؤلفة من أربعة بايتات.
أما سبب أهمية الانقسام أصلاً -- كيف يستخدم الجهاز قناع الشبكة ليقرر ما إذا كانت الوجهة على الشبكة المحلية أم تحتاج إلى الخروج عبر البوابة، ولماذا تنتهي معظم الشبكات المنزلية إلى /24 -- فتغطّيه الشبكات الخاصة وترجمة عناوين الشبكة (NAT).
9.5.5. قراءة العنوان مرة أخرى¶
تعيد الطريقة ipconfig() بدون وسائط التهيئة النشطة. يعيد العرض addr4 عنوان IP وقناع الشبكة:
>>> wlan.ipconfig("addr4")
('192.168.1.50', '255.255.255.0')