9.3. Kabel dan bingkai¶
Dua lapisan terendah dari tumpukan jaringan adalah yang paling mudah diabaikan pada kamera, karena semua yang mereka lakukan terjadi di dalam chip dan kamera menanganinya tanpa kode Python apa pun yang terlibat. Namun tetap layak untuk ditinjau secara singkat, karena keduanya menjelaskan apa yang dimaksud dengan "jaringan lokal" dan di mana batas menuju infrastruktur lainnya dimulai.
9.3.1. Lapisan fisik¶
Lapisan terbawah adalah pensinyalan sebenarnya -- kabel, serat optik, atau gelombang radio yang membawa bit antara dua perangkat. Ethernet melalui kabel twisted-pair mengodekan setiap bit sebagai transisi tegangan pada laju tetap. Wi-Fi memodulasi bit yang sama ke pembawa radio di pita 2,4 GHz atau 5 GHz. Keduanya menghasilkan aliran digit biner antara dua perangkat keras; keduanya merupakan detail yang ditangani oleh silikon kamera tanpa perangkat lunak perlu memikirkannya.
Dari perspektif skrip Python, lapisan fisik adalah "tautan aktif" atau "tautan tidak aktif". Modul network melaporkan status tersebut melalui metode isconnected() pada antarmuka Wi-Fi dan melalui status tautan pada antarmuka Ethernet berkabel. Selain itu, semua yang dilakukan lapisan ini tersembunyi.
9.3.2. Lapisan tautan¶
Satu langkah di atasnya terdapat lapisan tautan -- aturan untuk mengirim sekumpulan byte (sebuah bingkai) antara dua perangkat yang berbagi segmen fisik yang sama. Lapisan tautan menambahkan dua hal di atas pensinyalan mentah:
Pengalamatan perangkat keras. Setiap antarmuka jaringan dilengkapi dengan pengenal 48-bit unik yang disebut alamat MAC (Media Access Control). Pada Ethernet, alamat ini dibakar ke dalam chip; pada Wi-Fi, ini adalah jenis pengenal yang sama yang dibakar ke dalam modul nirkabel. Alamat MAC adalah yang digunakan sebuah switch -- kotak dengan beberapa port Ethernet tempat perangkat di sekitarnya terhubung -- untuk memutuskan port mana yang harus digunakan untuk mengirim bingkai tertentu. Titik akses Wi-Fi memainkan peran yang sama untuk perangkat nirkabel di salurannya.
Pembingkaian. Byte yang diserahkan oleh lapisan yang lebih tinggi dikemas ke dalam sebuah bingkai dengan header kecil, payload, dan checksum di akhir. Header membawa alamat MAC sumber dan tujuan; checksum memungkinkan penerima mendeteksi bingkai yang byte-nya rusak saat transit. Bingkai yang gagal pemeriksaan dibuang secara diam-diam -- siapa pun yang peduli tentang keandalan harus mengatasinya di lapisan yang lebih tinggi.
Segmen lokal adalah kelompok perangkat apa pun yang dapat melihat bingkai satu sama lain secara langsung -- port berkabel pada satu switch, semua perangkat yang terhubung ke satu titik akses Wi-Fi, atau jaringan kecil switch yang saling terhubung. Lapisan tautan tidak dapat menjangkau di luar segmen tersebut. Segera setelah tujuan berada di segmen yang berbeda, pesan harus diserahkan ke lapisan di atasnya.
9.3.3. Yang diekspos kamera¶
Kamera memiliki alamat MAC untuk setiap antarmuka jaringan yang dimilikinya -- satu Wi-Fi jika kamera mendukung nirkabel, satu Ethernet jika papan memiliki port yang sesuai. Modul network memberikan akses ke alamat tersebut melalui network_interface.config("mac") pada objek antarmuka mana pun yang digunakan aplikasi, saat perlu membaca alamat tersebut. Beberapa aplikasi memerlukannya, misalnya untuk mendaftarkan perangkat dengan sistem manajemen armada. Selain itu, inilah satu-satunya kenop yang diserahkan lapisan tautan ke Python.
Semua hal lainnya -- pembingkaian, lalu lintas MAC aktual di kabel atau udara, negosiasi antara kamera dan titik akses tentang saluran dan laju yang akan digunakan -- sepenuhnya terjadi di dalam perangkat keras nirkabel atau Ethernet. Halaman berikutnya membahas satu tempat di mana skrip Python memang memiliki peran dalam lapisan tautan: memberi tahu kamera jaringan mana yang harus diikuti.