9.1. Mengapa jaringan¶
Kontrol hardware memberikan kamera cara untuk berbicara dengan perangkat tertentu lainnya di kabel tertentu lainnya. UART antara kamera dan satu papan pendamping. I2C antara kamera dan sensor yang tergantung di bus pendek yang sama. CAN antara sekumpulan kecil modul yang berbagi satu bus yang tangguh. Setiap kasus mengikuti bentuk yang sama: dua pihak (atau kelompok kecil yang dikenal), satu media bersama, kesepakatan di antara mereka tentang apa arti byte di media tersebut.
9.1.1. Bentuk itu berhenti berskala¶
Pola titik-ke-titik bekerja selama kedua ujungnya berdekatan, kedua ujungnya diketahui sebelumnya, dan skrip dapat memilih kabel mana yang digunakan. Begitu salah satu dari batasan tersebut tidak terpenuhi, kabel saja tidak lagi cukup.
Banyak pihak lawan. Jaringan lima puluh kamera yang melapor ke satu server tidak dapat dihubungkan satu-ke-satu; server tidak memiliki cukup UART, dan pengabelan akan mustahil dilakukan.
Pihak lawan yang tidak di kabel yang sama. Kamera di pabrik dan dashboard di kantor di seberang kota tidak dapat berbagi kabel serial. Beberapa jalur harus ada di antara mereka melalui infrastruktur apa pun yang sudah berjalan antara dua gedung tersebut.
Pihak lawan yang tidak diketahui sebelumnya. Kamera yang menerbitkan hasilnya ke cloud tidak memilih server mana yang diajak bicara dalam diagram pengkabelan; alamat cloud adalah sesuatu yang dicari skrip saat runtime dan data diarahkan ke sana.
Banyak program di satu kabel. Laptop saat ini menjalankan browser, aplikasi chat, panggilan video, dan pencadangan, semuanya berbicara melalui antarmuka jaringan yang sama pada saat yang bersamaan. Kabel tidak dapat "dimiliki" oleh satu percakapan seperti halnya UART.
Masing-masing kegagalan tersebut adalah jenis masalah pengalamatan yang berbeda. Menyelesaikan semuanya bersama-sama memerlukan lebih dari sekadar kabel dan laju baud.
9.1.2. Apa itu jaringan¶
Jaringan adalah infrastruktur yang memungkinkan sejumlah besar komputer bertukar pesan dengan komputer lainnya, tanpa setiap pasangan memerlukan link khusus tersendiri. Tiga properti membuat jaringan menjadi sesuatu yang lebih dari sekadar kabel serial besar:
Media bersama. Banyak perangkat terhubung ke kabel, switch, atau saluran radio yang sama. Mereka bergiliran atau melakukan multipleks sehingga lebih dari satu percakapan dapat masuk ke link fisik yang sama.
Alamat logis. Setiap perangkat memiliki nomor yang mengidentifikasinya secara independen dari kabel mana yang terhubung. Mengirim pesan berarti menulis nomor itu di pesan, bukan menghubungkan kabel tertentu.
Routing. Ketika pengirim dan penerima tidak berada di segmen lokal yang sama, infrastruktur di antara mereka membawa pesan hop demi hop. Endpoint tidak mengetahui rutenya; mereka hanya mengetahui alamat satu sama lain.
Laptop di Wi-Fi kantor yang menjangkau server di pusat data yang jauh menggunakan ketiganya. Link Wi-Fi adalah media radio bersama; laptop dan server masing-masing memiliki alamat logis mereka sendiri; pesan melewati infrastruktur apa pun yang ada di antara keduanya, diteruskan satu hop pada satu waktu. Pengguna mengklik tautan, laptop mengirim paket, dan jaringan menangani sisanya.
9.1.3. Bagaimana dengan kamera?¶
Kamera memainkan peran yang persis sama di jaringan seperti laptop. Kamera mendapatkan alamat logis ketika bergabung dengan jaringan, mengalamatkan pesan keluar ke alamat logis perangkat lain, dan membiarkan infrastruktur meroutenya.
Yang berubah dari bab-bab kontrol hardware adalah antarmuka. Alih-alih membuka instance UART dan menulis byte ke dalamnya, skrip membuka socket dan menulis byte ke sana. Socket adalah endpoint ke dalam jaringan, sama seperti instance UART adalah endpoint ke dalam kabel. Potongan-potongan antara socket dan kabel -- bingkai, paket, tabel routing, switch, radio -- semuanya berada di bawah dan sebagian besar tidak terlihat oleh kode Python.
Halaman-halaman berikutnya menjelaskan potongan-potongan tersebut, lapisan demi lapisan, sehingga abstraksi "buka socket dan kirim byte" terasa tak terelakkan alih-alih seperti sihir.