9.1. Tại sao cần mạng¶
Điều khiển phần cứng đã cung cấp cho camera các cách giao tiếp với một thiết bị cụ thể khác trên một dây cụ thể khác. UART giữa camera và một bo mạch đồng hành duy nhất. I2C giữa camera và các cảm biến treo trên cùng một bus ngắn. CAN giữa một nhóm nhỏ các module chia sẻ một bus ổn định. Mỗi trường hợp theo cùng một hình dạng: hai bên (hoặc một nhóm nhỏ đã biết), một phương tiện chia sẻ, một thỏa thuận giữa chúng về ý nghĩa của các byte trên phương tiện đó.
9.1.1. Hình dạng đó ngừng mở rộng được¶
Mô hình điểm-điểm hoạt động miễn là cả hai đầu ở gần, cả hai đầu được biết trước, và tập lệnh có thể chọn dây nào để nói chuyện. Khi bất kỳ ràng buộc nào trong số đó bị phá vỡ, việc đi dây không còn đủ nữa.
Nhiều đối tác. Một mạng gồm năm mươi camera báo cáo về một máy chủ không thể đi dây một-một; máy chủ không có đủ UART, và các đường cáp sẽ không thể thực hiện được.
Đối tác không trên cùng một dây. Một camera trong một nhà máy và bảng điều khiển trong văn phòng ở bên kia thành phố không thể chia sẻ cáp nối tiếp. Phải tồn tại một đường đi giữa chúng qua bất kỳ cơ sở hạ tầng nào đã chạy giữa hai tòa nhà.
Đối tác không biết trước. Một camera xuất bản kết quả của nó lên đám mây không chọn máy chủ nào để nói chuyện trong sơ đồ nối dây; địa chỉ của đám mây là thứ tập lệnh tra cứu lúc chạy và định tuyến dữ liệu đến.
Nhiều chương trình trên một cáp. Một máy tính xách tay ngày nay đang chạy trình duyệt, ứng dụng chat, cuộc gọi video và sao lưu, tất cả đều nói chuyện qua cùng một giao diện mạng cùng lúc. Dây không thể bị "sở hữu" bởi một cuộc hội thoại theo cách UART làm.
Mỗi thất bại đó là một loại vấn đề địa chỉ khác nhau. Giải quyết tất cả chúng cùng nhau đòi hỏi nhiều hơn một dây và tốc độ baud.
9.1.2. Mạng là gì¶
Một mạng là cơ sở hạ tầng cho phép bất kỳ máy tính nào trong số lượng lớn máy tính trao đổi thông điệp với bất kỳ máy tính nào khác, mà không cần mỗi cặp có liên kết riêng biệt. Ba thuộc tính làm cho mạng trở thành thứ gì đó hơn là một cáp nối tiếp lớn:
Phương tiện chia sẻ. Nhiều thiết bị kết nối với cùng một cáp, bộ chuyển mạch hoặc kênh radio. Chúng luân phiên hoặc ghép kênh để nhiều cuộc hội thoại có thể vừa vào cùng một liên kết vật lý.
Địa chỉ logic. Mỗi thiết bị có một số xác định nó độc lập với cáp nào nó được cắm vào. Gửi thông điệp có nghĩa là viết số đó lên thông điệp, không phải kết nối một dây cụ thể.
Định tuyến. Khi người gửi và người nhận không trên cùng một đoạn cục bộ, cơ sở hạ tầng giữa họ mang thông điệp từng hop một. Các điểm cuối không biết tuyến đường; chúng chỉ biết địa chỉ của nhau.
Một máy tính xách tay trên Wi-Fi văn phòng kết nối đến máy chủ trong trung tâm dữ liệu xa xôi sử dụng cả ba. Liên kết Wi-Fi là phương tiện radio chia sẻ; máy tính xách tay và máy chủ mỗi cái có địa chỉ logic riêng; thông điệp đi qua bất kỳ cơ sở hạ tầng nào nằm giữa hai thiết bị, được chuyển tiếp từng hop một. Người dùng nhấp vào liên kết, máy tính xách tay gửi gói tin, và mạng xử lý phần còn lại.
9.1.3. Còn camera thì sao?¶
Camera đóng vai trò hoàn toàn giống như máy tính xách tay trên mạng. Nó nhận một địa chỉ logic khi tham gia mạng, gửi địa chỉ logic của các thiết bị khác trong các thông điệp đi, và để cơ sở hạ tầng định tuyến chúng.
Điều thay đổi so với các chương điều khiển phần cứng là giao diện. Thay vì mở một instance UART và ghi byte vào nó, tập lệnh mở một socket và ghi byte vào đó. Socket là một điểm cuối vào mạng, giống như instance UART là điểm cuối vào một dây. Các phần giữa socket và dây -- khung hình, gói tin, bảng định tuyến, bộ chuyển mạch, radio -- đều nằm bên dưới và hầu hết vô hình với mã Python.
Các trang tiếp theo trình bày chi tiết những phần đó, từng lớp một, để sự trừu tượng "mở socket và gửi byte" cảm thấy tất yếu thay vì ma thuật.