9.3. הכבל והפריים¶
שתי השכבות הנמוכות ביותר של המחסנית הן הקלות ביותר לקחת כמובן מאליו במצלמה, מכיוון שכל מה שהן עושות מתרחש בתוך השבב והמצלמה מטפלת בהן ללא מעורבות של שום קוד Python. עדיין כדאי לסקור אותן בקצרה, מכיוון שהן מסבירות מה משמעות ”רשת מקומית“ והיכן מתחיל הגבול אל שאר התשתית.
9.3.1. השכבה הפיזית¶
השכבה התחתונה היא האיתות עצמו – החוטים, סיבים אופטיים, או גלי הרדיו הנושאים ביטים בין שני התקנים. Ethernet על גבי כבלי זוג שזור מקודד כל ביט כמעבר מתח בקצב קבוע. Wi-Fi מאפנן את אותם ביטים על נושא רדיו בתחום 2.4 GHz או 5 GHz. שניהם מייצרים זרם של ספרות בינאריות בין שני רכיבי חומרה; שניהם מסוג הפרטים שהסיליקון של המצלמה מטפל בהם מבלי שהתוכנה צריכה לחשוב עליהם.
מנקודת המבט של סקריפט Python, השכבה הפיזית היא ”הקישור פעיל“ או ”הקישור מנותק“. מודול network מדווח על מצב זה דרך המתודה isconnected() שלו בממשק Wi-Fi ודרך מצב הקישור בממשק Ethernet קווי. מעבר לכך, כל יתר מה שהשכבה הזו עושה מוסתר.
9.3.2. שכבת הקישור¶
צעד אחד למעלה נמצאת שכבת הקישור – הכללים לשליחת מקטע בייטים (פריים) בין שני התקנים החולקים את אותו מקטע פיזי. שכבת הקישור מוסיפה שני דברים מעל האיתות הגולמי:
מיעון חומרה. כל ממשק רשת מגיע עם מזהה ייחודי בן 48 ביט הנקרא כתובת MAC (Media Access Control). ב-Ethernet הוא צרוב בתוך השבב; ב-Wi-Fi זהו אותו סוג מזהה הצרוב בתוך מודול האלחוט. כתובות MAC הן מה שמתג – הקופסה עם מספר יציאות Ethernet שאליהן מתחברים התקנים סמוכים – משתמש בהן כדי להחליט לאיזו יציאה פריים נתון צריך לצאת. נקודת גישה של Wi-Fi ממלאת את אותו תפקיד עבור התקנים אלחוטיים בערוץ שלה.
מסגור. הבייטים ששכבה גבוהה יותר מעבירה כלפי מטה נארזים לפריים עם כותרת קטנה, המטען, וסכום ביקורת בסוף. הכותרת נושאת את כתובות ה-MAC של המקור והיעד; סכום הביקורת מאפשר למקבל לזהות פריים שהבייטים שלו נפגמו במהלך השידור. פריימים שנכשלים בבדיקה נזרקים בשקט – מי שאכפת לו מאמינות חייב להוסיף אותה מחדש בשכבה גבוהה יותר.
מקטע מקומי הוא כל קבוצת התקנים שיכולים לראות את הפריימים זה של זה ישירות – היציאות הקוויות של מתג אחד, כל ההתקנים המשויכים לנקודת גישה אחת של Wi-Fi, או רשת קטנה של מתגים מקושרים זה לזה. שכבת הקישור אינה יכולה להגיע מעבר למקטע הזה. ברגע שהיעד נמצא במקטע אחר, יש להעביר את ההודעה לשכבה שמעל.
9.3.3. מה שהמצלמה חושפת¶
למצלמה יש כתובת MAC לכל ממשק רשת שיש לה – כתובת Wi-Fi אם למצלמה יש תמיכה אלחוטית, וכתובת Ethernet אם ללוח יש את היציאה המתאימה. מודול network מעניק גישה אליה דרך network_interface.config("mac") על אובייקט הממשק שבו האפליקציה משתמשת, כאשר היא צריכה לקרוא את הכתובת. חלק מהאפליקציות זקוקות לכך, למשל כדי לרשום את ההתקן במערכת ניהול צי. אחרת, זהו הכפתור היחיד ששכבת הקישור מעבירה לידי Python.
כל יתר הדברים – המסגור, תעבורת ה-MAC עצמה על הכבל או באוויר, המשא ומתן בין המצלמה לנקודת הגישה לגבי הערוץ והקצב שבהם להשתמש – מתרחשים כולם בתוך חומרת האלחוט או ה-Ethernet. העמוד הבא מכסה את המקום היחיד שבו לסקריפט Python יש מילה בשכבת הקישור: לומר למצלמה לאיזו רשת להצטרף.