9.3. Kablo ve çerçeve¶
Yığının en alttaki iki katmanı, kamera üzerinde göz ardı edilmesi en kolay olanlardır; çünkü yaptıkları her şey çip içinde gerçekleşir ve kamera bunları hiçbir Python koduna gerek kalmadan yönetir. Yine de kısa bir göz atmaya değerler; çünkü “yerel ağ” ifadesinin ne anlama geldiğini ve altyapının geri kalanına olan sınırın nerede başladığını açıklarlar.
9.3.1. Fiziksel katman¶
En alttaki katman, gerçek sinyalleşmedir; yani iki cihaz arasında bitleri taşıyan teller, optik fiberler veya radyo dalgaları. Bükümlü çift kablolar üzerinden Ethernet, her biti sabit bir hızda bir voltaj geçişi olarak kodlar. Wi-Fi ise aynı bitleri 2.4 GHz veya 5 GHz bandındaki bir radyo taşıyıcısına modüle eder. Her ikisi de iki donanım parçası arasında bir ikili rakam akışı üretir; her ikisi de kameranın silikonunun yazılımın düşünmesine gerek kalmadan yönettiği türden ayrıntılardır.
Bir Python betiğinin bakış açısından fiziksel katman ya “bağlantı açık” ya da “bağlantı kapalı” durumundadır. network modülü bu durumu, Wi-Fi arabiriminde isconnected() metodu aracılığıyla ve kablolu bir Ethernet arabiriminde bağlantı durumu aracılığıyla bildirir. Bunun ötesinde, bu katmanın yaptığı diğer her şey gizlidir.
9.3.2. Bağlantı katmanı¶
Bir adım yukarıda bağlantı katmanı yer alır; yani aynı fiziksel segmenti paylaşan iki cihaz arasında bir bayt yığınını (bir çerçeve) göndermenin kurallarıdır. Bağlantı katmanı, ham sinyalleşmenin üzerine iki şey ekler:
Donanım adresleme. Her ağ arabirimi, MAC adresi (Media Access Control) adı verilen benzersiz bir 48-bit tanımlayıcıyla birlikte gelir. Ethernet’te bu, çipe gömülüdür; Wi-Fi’de ise kablosuz modüle gömülü aynı türden bir tanımlayıcıdır. MAC adresleri, bir anahtarın (switch) – yakındaki cihazların takıldığı, birden fazla Ethernet portuna sahip kutu – belirli bir çerçevenin hangi porttan çıkması gerektiğine karar vermek için kullandığı şeylerdir. Bir Wi-Fi erişim noktası, kendi kanalındaki kablosuz cihazlar için aynı rolü oynar.
Çerçeveleme. Bir üst katmanın aşağıya aktardığı baytlar, küçük bir başlık, yük (payload) ve sonunda bir sağlama toplamı içeren bir çerçeve halinde paketlenir. Başlık, kaynak ve hedef MAC adreslerini taşır; sağlama toplamı, alıcının iletim sırasında baytları bozulmuş bir çerçeveyi tespit etmesini sağlar. Kontrolü geçemeyen çerçeveler sessizce atılır; güvenilirliğe önem veren kişi bunu bir üst katmanda yeniden sağlamak zorundadır.
Bir yerel segment, birbirlerinin çerçevelerini doğrudan görebilen herhangi bir cihaz grubudur; yani tek bir anahtardaki kablolu portlar, tek bir Wi-Fi erişim noktasıyla ilişkili tüm cihazlar veya birbirine bağlı küçük bir anahtar örgüsü. Bağlantı katmanı o segmentin ötesine ulaşamaz. Hedef farklı bir segmentte bulunur bulunmaz, mesajın bir üst katmana devredilmesi gerekir.
9.3.3. Kameranın açığa çıkardıkları¶
Kameranın sahip olduğu her ağ arabirimi için bir MAC adresi vardır; kamera kablosuz desteğine sahipse bir Wi-Fi adresi, kart ilgili porta sahipse bir Ethernet adresi. network modülü, adresi okuması gerektiğinde, uygulamanın kullandığı hangi arabirim nesnesi olursa olsun network_interface.config("mac") aracılığıyla buna erişim sağlar. Bazı uygulamaların buna ihtiyacı vardır; örneğin cihazı bir filo yönetim sistemine kaydetmek için. Aksi takdirde, bağlantı katmanının Python’a devrettiği tek ayar budur.
Diğer her şey – çerçeveleme, tel veya hava üzerindeki gerçek MAC trafiği, kameranın hangi kanal ve hızın kullanılacağı konusunda erişim noktasıyla yaptığı görüşme – tamamen kablosuz veya Ethernet donanımının içinde gerçekleşir. sonraki sayfa bir Python betiğinin bağlantı katmanında söz sahibi olduğu tek yeri kapsar: kameraya hangi ağa katılacağını söylemek.