9.1. Ağlara neden ihtiyaç duyulur¶
Donanım denetimi, kameraya belirli başka bir teldeki belirli başka bir cihazla konuşma yolları kazandırdı. Kamera ile tek bir eşlik eden kart arasında UART. Kamera ile aynı kısa veriyoluna bağlı sensörler arasında I2C. Sağlam bir veriyolunu paylaşan küçük bir modül kümesi arasında CAN. Her durum aynı biçimi izler: iki taraf (ya da küçük bir bilinen grup), bir paylaşılan ortam ve o ortamdaki baytların ne anlama geldiğine dair aralarındaki bir anlaşma.
9.1.1. Bu biçim ölçeklenmeyi durdurur¶
Noktadan noktaya örüntü, her iki uç da yakın olduğu, her iki uç da önceden bilindiği ve betiğin hangi teli kullanarak konuşacağını seçebildiği sürece çalışır. Bu kısıtlamalardan herhangi biri bozulduğunda, kablolama artık yeterli olmaktan çıkar.
Çok sayıda muhatap. Tek bir sunucuya rapor veren elli kameralık bir ağ birebir kablolanamaz; sunucuda yeterli UART yoktur ve kablo döşemeleri imkânsız olurdu.
Aynı telde olmayan muhataplar. Bir fabrikadaki kamera ile şehrin öbür ucundaki bir ofisteki gösterge paneli bir seri kabloyu paylaşamaz. İki bina arasında zaten çalışan altyapı ne olursa olsun, aralarında bir yol var olmalıdır.
Önceden bilinmeyen muhataplar. Sonuçlarını buluta yayımlayan bir kamera, kablolama şemasında hangi sunucuyla konuşacağını seçmez; bulutun adresi, betiğin çalışma zamanında aradığı ve veriyi yönlendirdiği bir şeydir.
Tek bir kablodaki çok sayıda program. Günümüzde bir dizüstü bilgisayar; bir tarayıcı, bir sohbet uygulaması, bir görüntülü görüşme ve bir yedekleme işlemini, aynı anda hepsi aynı ağ arabiriminden konuşurken çalıştırıyor olabilir. Kablo, bir UART’ın olduğu gibi tek bir görüşme tarafından “sahiplenilemez”.
Bu hataların her biri farklı bir tür adresleme sorunudur. Hepsini birlikte çözmek, bir tel ve bir baud hızından fazlasını gerektirir.
9.1.2. Ağ nedir¶
Bir ağ, her çiftin kendi özel bağlantısına ihtiyaç duymadan, çok sayıda bilgisayardan herhangi birinin diğer herhangi biriyle mesaj alışverişinde bulunmasını sağlayan altyapıdır. Bir ağı büyük bir seri kablodan fazlası yapan üç özellik vardır:
Paylaşılan ortam. Birçok cihaz aynı kabloya, anahtara ya da telsiz kanalına bağlanır. Aynı fiziksel bağlantıya birden fazla görüşme sığabilsin diye sırayla kullanır ya da çoğullarlar.
Mantıksal adresler. Her cihazın, hangi kabloya takılı olduğundan bağımsız olarak kendisini tanımlayan bir numarası vardır. Bir mesaj göndermek, belirli bir teli bağlamak değil, o numarayı mesajın üzerine yazmak anlamına gelir.
Yönlendirme. Gönderici ve alıcı aynı yerel bölümde olmadığında, aralarındaki altyapı mesajı sıçrama sıçrama taşır. Uç noktalar rotayı bilmez; yalnızca birbirlerinin adresini bilirler.
Ofis Wi-Fi’sindeki bir dizüstü bilgisayarın uzak bir veri merkezindeki bir sunucuya erişmesi, üçünü de kullanır. Wi-Fi bağlantısı paylaşılan bir telsiz ortamdır; dizüstü bilgisayar ve sunucunun her birinin kendi mantıksal adresi vardır; mesaj, ikisi arasında bulunan altyapı ne olursa olsun, her seferinde bir sıçrama olacak şekilde iletilerek geçer. Kullanıcı bir bağlantıya tıklar, dizüstü bilgisayar bir paket gönderir ve gerisini ağ halleder.
9.1.3. Peki ya kamera?¶
Kamera, bir ağ üzerinde tam olarak dizüstü bilgisayarla aynı rolü oynar. Ağa katıldığında bir mantıksal adres alır, giden mesajları diğer cihazların mantıksal adreslerine yönlendirir ve altyapının bunları yönlendirmesine izin verir.
Donanım denetimi bölümlerinden değişen şey arabirimdir. Betik, bir UART örneği açıp ona bayt yazmak yerine, bir soket açar ve baytları ona yazar. Soket, ağa açılan bir uç noktadır; tıpkı bir UART örneğinin bir tele açılan bir uç noktası olması gibi. Soket ile tel arasındaki parçalar – çerçeveler, paketler, yönlendirme tabloları, anahtarlar, telsizler – hepsi alta oturur ve Python koduna çoğunlukla görünmezdir.
İlerideki sayfalar, “bir soket aç ve bayt gönder” soyutlamasının sihirli değil kaçınılmaz hissettirmesi için bu parçaları katman katman ayrıntılı olarak açıklar.