9.5. IP adresleri¶
Bir donanım adresi, aynı yerel kablo veya radyo hücresi üzerindeki bir cihazı diğerlerinden ayırt eder. Bu iş için yeterlidir, ancak yerel segmentin ötesinde işe yaramaz: yan binadaki bir anahtar onu kullanarak yönlendirme yapamaz, çünkü bir anahtarın MAC adreslerini öğrenmesini sağlayan temel mekanizma yalnızca tek bir segment içinde çalışır.
Ağ katmanı bunu, bir cihazın hangi kabloya takıldığından bağımsız olan ikinci tür bir adresle çözer. Bu tür adresin adı İnternet Protokolü adresi veya IP adresi‘dir ve “İnternet Protokolü” kısmı, internetteki her ana bilgisayarın bir adresi gönderirken veya iletirken izlediği kurallar kümesini adlandırır. Mevcut internet, adresleme şemasının iki sürümünü paralel olarak kullanır – IPv4 (eski biçim, küçük ağlarda hâlâ baskın) ve IPv6 (yeni biçim, yavaş yavaş onun yerini alıyor).
9.5.1. IP adresi nedir¶
Bir IP adresi, internetteki herhangi bir cihazı benzersiz şekilde tanımlayacak kadar büyük bir sayıdır. Bu bölümün geri kalanında kullanılan, insan tarafından okunabilir bir biçimde yazılır, ancak paket başlığında yalnızca sabit boyutlu bir tam sayıdır.
IPv4 adresleri 32 bit uzunluğundadır ve her biri bir bayt olan, noktalarla ayrılmış dört ondalık sayı olarak yazılır:
192.168.1.42 8.8.8.8 10.0.0.1
Otuz iki bit yaklaşık dört milyar olası adres verir; bu, IPv4’ün 1970’lerde tasarlandığında bol gibi görünüyordu ve 2010’ların başına gelindiğinde yeterli değildi.
IPv6 adresleri 128 bit uzunluğundadır ve iki nokta üst üste ile ayrılmış, dört onaltılık basamaktan oluşan sekiz grup olarak yazılır:
2001:0db8:85a3:0000:0000:8a2e:0370:7334Sıfır dizileri
::ile kısaltılabilir ve bir gruptaki baştaki sıfırlar atılabilir, bu nedenle yukarıdaki adres normalde2001:db8:85a3::8a2e:370:7334olarak yazılır.
İki adres ailesi bunun dışında farklı dillerdir; bir IPv4 ana bilgisayarı, bir ağ geçidinin yardımı olmadan bir IPv6 ana bilgisayarına doğrudan paket gönderemez. Kameranın network ve socket modülleri her ikisini de destekler. Bu öğretici örneklerde IPv4 kullanır çünkü kameranın katılacağı çoğu yerel ağ hâlâ yalnızca IPv4’tür, ancak adresler değiştirildikten sonra bundan sonra gelen her şey IPv6 için tam olarak aynı şekilde çalışır.
9.5.2. Bir IP adresi ne işe yarar¶
IP adresi, bir paketin internetteki hangi ana bilgisayar için tasarlandığını söyler. Bir hedefe doğrudan nasıl ulaşacağını bilmeyen bir yönlendirici, muhtemelen başka bir yönlendiricinin bildiğini bilir ve paketi oraya iletir. Paket, her biri hedefe biraz daha yakın olan yönlendiriciler arasında sıçrar; ta ki hedefin yerel segmentinde bulunan bir yönlendirici son sıçramayı teslim edene kadar.
Bu sıçrama sıçrama davranışı, internetin birçok küçük ada yerine tek bir büyük ağ olarak çalışmasını sağlayan şeydir. Sonraki sayfa sıçramaların nasıl seçildiğini ele alır; bu sayfa yalnızca adresle ilgilidir.
9.5.3. Bir kamera nasıl IP adresi alır¶
Bir Wi-Fi ağına yeni katılmış bir kameranın herhangi bir şeyle iletişim kurabilmesi için önce bir IP adresine ihtiyacı vardır. Bunun olması için iki yaygın yol vardır.
Birincisi otomatik atama‘dır. Kamera yerel ağdan bir adres ister; adresi veren cihaz, yerel ağı daha geniş internete bağlayan kutu olan yönlendirici‘dir. Çoğu ev ve küçük ofis kurulumunda, aynı fiziksel kutu hem kablolu cihazların takıldığı anahtar hem de kablosuz cihazların ilişkilendiği Wi-Fi erişim noktası olarak da görev yapar, bu nedenle “yönlendirici”, “anahtar” ve “erişim noktası” hepsi aynı donanım parçası olabilir. Yönlendirici, mevcut adreslerden oluşan bir havuz tutan, yeni gelen her cihaz için bir tane seçen ve onu sabit bir süreliğine kiralayan DHCP (Dynamic Host Configuration Protocol) adlı küçük bir hizmet çalıştırır. Bunu yaparken yönlendirici, kameraya birkaç başka yararlı yapılandırma parçası da verir:
hedef yerel ağın dışında olduğunda giden trafiğin gönderileceği adres (yönlendiricinin kendi adresi olan varsayılan ağ geçidi); ve
example.comgibi insan tarafından okunabilir adları IP adreslerine dönüştüren bir veya daha fazla ad sunucusu‘nun adresleri. Ad arama hizmetine DNS, Domain Name System denir ve Adlar ve DNS bunu ayrıntılı olarak ele alır.
Tüm bunlar bağlantı kurulurken otomatik olarak gerçekleşir. Kameranın bunlardan hiçbirini açıkça istemesi gerekmez; önceki sayfadaki örnekte isconnected() True döndürdüğü anda, kamera zaten adresine, ağ geçidine ve ad sunucularına sahiptir.
İkinci seçenek statik yapılandırma‘dır. Bazı dağıtımlar, diğer cihazların önce arama yapmadan kameraya ulaşabilmesi için kameranın bilinen bir adrese sahip olmasını ister. ipconfig() yöntemi adresi, ağ geçidini ve ad sunucusunu elle ayarlar:
wlan.ipconfig(addr4=("192.168.1.50/24", "192.168.1.1"))
wlan.ipconfig(dns="192.168.1.1")
Statik yapılandırma kırılgandır (yanlışlıkla aynı adres verilen iki cihaz çakışır). Geçersiz kılmak için belirli bir neden ortaya çıkmadıkça DHCP varsayılanını tercih edin.
Kamera bir IP adresine sahip olduğunda, internete (veya en azından yerel ağın ona ait kısmına) katılmış olur. Diğer cihazlar artık o adrese paket gönderebilir ve kamera da onlara paket gönderebilir.
9.5.4. Ağ maskesi ve /24¶
Yukarıdaki statik örnekteki adresin sonundaki /24, ağ maskesi‘dir. Tek başına bir IP adresi yerel ağın nerede bittiğini söylemez – 192.168.1.50 küçük bir ev ağındaki birkaç yüz adresten biri olabilir ya da daha büyük bir ağdaki binlercesinden biri. Ağ maskesi, adresin ne kadarının ağı ne kadarının da içindeki ana bilgisayarı adlandırdığını söyler.
/24 şu anlama gelir: “32 bitin ilk 24’ü ağı adlandırır; son 8’i ana bilgisayarı adlandırır”. 192.168.1.50/24 için bu, adresi ağ için 192.168.1 ve ana bilgisayar için .50 olarak böler ve aynı yerel ağda yaklaşık 254 cihaza yer bırakır. /16 ana bilgisayar yarısı için daha fazla bit bırakır ve tek bir ağa çok daha fazla cihaz sığdırır; /30 yalnızca iki ana bilgisayar adresi bırakır ve bir noktadan noktaya bağlantı sığdırır.
Ağ maskesi ayrıca yaygın olarak, adresle aynı noktalı gösterimde dört baytlık bir sayı olarak yazılır. /24, 255.255.255.0‘a eşdeğerdir – her baytı “ağ yarısına ait olan tüm bitler” olarak okuyun. İki biçim birbirinin yerine kullanılabilir; bir sonraki alt bölümdeki ipconfig() okuyucusu, dört baytlık biçimi döndürmektedir.
Ayrımın neden hiç önemli olduğu – bir cihazın bir hedefin yerel ağda mı olduğuna yoksa ağ geçidi üzerinden dışarı mı çıkması gerektiğine karar vermek için ağ maskesini nasıl kullandığı ve çoğu ev ağının neden /24‘e geldiği – Özel ağlar ve NAT sayfasında ele alınır.
9.5.5. Adresi geri okumak¶
Argümansız ipconfig() yöntemi etkin yapılandırmayı döndürür. addr4 görünümü IP adresini ve ağ maskesini döndürür:
>>> wlan.ipconfig("addr4")
('192.168.1.50', '255.255.255.0')