9.5. Alamat IP¶
Alamat perangkat keras mengidentifikasi satu perangkat dari perangkat lainnya pada kabel atau sel radio lokal yang sama. Fungsi itu sudah memadai, tetapi tidak berguna di luar segmen lokal: switch di gedung sebelah tidak dapat melakukan routing berdasarkan alamat tersebut, karena mekanisme dasar yang memungkinkan switch mempelajari alamat MAC hanya bekerja dalam satu segmen.
Lapisan jaringan menyelesaikan masalah itu dengan jenis alamat kedua yang tidak bergantung pada kabel tempat perangkat terhubung. Nama untuk jenis alamat ini adalah alamat Internet Protocol, atau alamat IP, dan bagian "Internet Protocol" merujuk pada sekumpulan aturan yang diikuti setiap host di internet saat mengirim atau meneruskan paket. Internet saat ini menggunakan dua versi skema pengalamatan secara paralel -- IPv4 (bentuk lama, masih dominan di jaringan kecil) dan IPv6 (bentuk baru, secara bertahap menggantikannya).
9.5.1. Apa itu alamat IP¶
Alamat IP adalah angka yang cukup besar untuk mengidentifikasi perangkat mana pun di internet secara unik. Alamat ini ditulis dalam bentuk yang mudah dibaca manusia sebagaimana digunakan di sisa bagian ini, namun dalam header paket hanya berupa bilangan bulat berukuran tetap.
Alamat IPv4 memiliki panjang 32 bit dan ditulis sebagai empat angka desimal yang dipisahkan oleh titik, masing-masing angka mewakili satu byte:
192.168.1.42 8.8.8.8 10.0.0.1
Tiga puluh dua bit menghasilkan sekitar empat miliar alamat yang mungkin, yang terdengar lebih dari cukup saat IPv4 dirancang pada tahun 1970-an dan tidak lagi memadai pada awal 2010-an.
Alamat IPv6 memiliki panjang 128 bit dan ditulis sebagai delapan kelompok empat digit heksadesimal yang dipisahkan oleh titik dua:
2001:0db8:85a3:0000:0000:8a2e:0370:7334Deretan nol dapat disingkat menjadi
::, dan nol di depan dalam sebuah kelompok dapat dihilangkan, sehingga alamat di atas biasanya ditulis2001:db8:85a3::8a2e:370:7334.
Kedua keluarga alamat tersebut pada dasarnya adalah bahasa yang berbeda; host IPv4 tidak dapat langsung mengirim paket ke host IPv6 tanpa bantuan gateway. Modul network dan socket kamera mendukung keduanya. Tutorial ini menggunakan IPv4 dalam contoh-contohnya karena sebagian besar jaringan lokal yang akan diikuti kamera masih hanya mendukung IPv4, tetapi semua yang dibahas berikutnya bekerja dengan cara yang persis sama untuk IPv6 setelah alamatnya diganti.
9.5.2. Untuk apa alamat IP digunakan¶
Alamat IP menunjukkan host mana di internet yang dimaksud oleh suatu paket. Router yang tidak tahu cara langsung menjangkau suatu tujuan tahu bahwa router lain mungkin bisa, dan meneruskan paket ke sana. Paket melompat antar router, masing-masing selangkah lebih dekat ke tujuan, hingga router yang berada di segmen lokal tujuan mengantarkan lompatan terakhir.
Perilaku lompatan demi lompatan inilah yang membuat internet bekerja sebagai satu jaringan besar alih-alih banyak pulau kecil. Halaman berikutnya membahas cara pemilihan lompatan; halaman ini hanya membahas tentang alamat.
9.5.3. Bagaimana kamera mendapatkan alamat¶
Kamera yang baru saja bergabung dengan jaringan Wi-Fi memerlukan alamat IP sebelum dapat berkomunikasi dengan apa pun. Ada dua cara umum untuk itu terjadi.
Cara pertama adalah penugasan otomatis. Kamera meminta alamat kepada jaringan lokal; perangkat yang memberikan alamat adalah router -- kotak yang menghubungkan jaringan lokal ke internet yang lebih luas. Pada sebagian besar pengaturan rumah dan kantor kecil, kotak fisik yang sama juga berfungsi sebagai switch tempat perangkat berkabel terhubung dan sebagai titik akses Wi-Fi tempat perangkat nirkabel berasosiasi, sehingga "router", "switch", dan "titik akses" mungkin semuanya adalah satu perangkat keras yang sama. Router menjalankan layanan kecil yang disebut DHCP (Dynamic Host Configuration Protocol), yang menyimpan kumpulan alamat yang tersedia, memilih satu untuk setiap perangkat baru yang datang, dan menyewakannya untuk jangka waktu tertentu. Bersamaan dengan itu, router juga memberikan kamera beberapa konfigurasi berguna lainnya:
alamat untuk mengirim lalu lintas keluar ketika tujuan berada di luar jaringan lokal (gateway default, yang merupakan alamat router itu sendiri); dan
alamat satu atau lebih server nama yang mengubah nama yang mudah dibaca manusia seperti
example.commenjadi alamat IP. Layanan pencarian nama disebut DNS, Domain Name System, dan Nama dan DNS membahasnya secara detail.
Semua ini terjadi secara otomatis saat koneksi sedang dibangun. Kamera tidak perlu meminta apa pun secara eksplisit; begitu isconnected() mengembalikan True seperti pada contoh di halaman sebelumnya, kamera sudah memiliki alamatnya, gateway-nya, dan server namanya.
Pilihan kedua adalah konfigurasi statis. Beberapa penerapan menginginkan alamat yang diketahui untuk kamera agar perangkat lain dapat menjangkaunya tanpa harus mencarinya terlebih dahulu. Metode ipconfig() menetapkan alamat, gateway, dan server nama secara manual:
wlan.ipconfig(addr4=("192.168.1.50/24", "192.168.1.1"))
wlan.ipconfig(dns="192.168.1.1")
Konfigurasi statis rentan terhadap masalah (dua perangkat yang secara tidak sengaja diberi alamat yang sama akan berkonflik). Gunakan DHCP secara default kecuali ada alasan khusus untuk menggantinya.
Setelah kamera memiliki alamat IP, kamera telah bergabung dengan internet (atau setidaknya bagian jaringan lokal dari internet). Perangkat lain sekarang dapat mengalamatkan paket kepadanya menggunakan alamat tersebut, dan kamera dapat mengalamatkan paket ke perangkat lain.
9.5.4. Netmask dan /24¶
/24 di akhir alamat pada contoh statis di atas adalah netmask. Alamat IP saja tidak menunjukkan di mana jaringan lokal berakhir -- 192.168.1.50 bisa menjadi salah satu dari beberapa ratus alamat pada jaringan rumah kecil, atau salah satu dari ribuan pada jaringan yang lebih besar. Netmask menunjukkan berapa banyak bagian alamat yang menamai jaringan dan berapa banyak yang menamai host di dalamnya.
/24 berarti "24 dari 32 bit pertama menamai jaringan; 8 bit terakhir menamai host". Untuk 192.168.1.50/24, alamat dibagi menjadi 192.168.1 untuk jaringan dan .50 untuk host, menyisakan ruang untuk sekitar 254 perangkat di jaringan lokal yang sama. /16 akan menyisakan lebih banyak bit untuk bagian host dan menampung jauh lebih banyak perangkat dalam satu jaringan; /30 hanya akan menyisakan dua alamat host dan cocok untuk tautan point-to-point.
Netmask juga biasanya ditulis sebagai angka empat byte dalam notasi titik yang sama dengan alamat. /24 setara dengan 255.255.255.0 -- baca setiap byte sebagai "semua bit yang termasuk bagian jaringan". Kedua bentuk tersebut dapat dipertukarkan; pembaca ipconfig() pada subbagian berikutnya kebetulan mengembalikan bentuk empat byte.
Mengapa pemisahan ini penting -- bagaimana perangkat menggunakan netmask untuk memutuskan apakah tujuan berada di jaringan lokal atau perlu dikirim melalui gateway, dan mengapa sebagian besar jaringan rumah menggunakan /24 -- dibahas di Jaringan privat dan NAT.
9.5.5. Membaca alamat kembali¶
Metode ipconfig() tanpa argumen mengembalikan konfigurasi aktif. Tampilan addr4 mengembalikan alamat IP dan netmask:
>>> wlan.ipconfig("addr4")
('192.168.1.50', '255.255.255.0')