9.3. Cáp và khung hình¶
Hai lớp thấp nhất của ngăn xếp là những lớp dễ bị bỏ qua nhất trên camera, vì mọi thứ chúng thực hiện đều diễn ra bên trong chip và camera xử lý chúng mà không cần bất kỳ mã Python nào. Chúng vẫn đáng để tìm hiểu qua, vì chúng giải thích "mạng cục bộ" có nghĩa là gì và ranh giới với phần còn lại của cơ sở hạ tầng bắt đầu ở đâu.
9.3.1. Lớp vật lý¶
Lớp dưới cùng là tín hiệu thực sự -- các dây dẫn, cáp quang, hoặc sóng vô tuyến truyền các bit giữa hai thiết bị. Ethernet qua cáp xoắn đôi mã hóa mỗi bit thành một sự chuyển tiếp điện áp với tốc độ cố định. Wi-Fi điều chế các bit tương tự lên một sóng mang vô tuyến trong dải 2,4 GHz hoặc 5 GHz. Cả hai đều tạo ra một luồng chữ số nhị phân giữa hai phần cứng; cả hai đều là loại chi tiết mà silicon của camera xử lý mà không cần phần mềm phải lo lắng.
Từ góc nhìn của một tập lệnh Python, lớp vật lý là "đường kết nối đang hoạt động" hoặc "đường kết nối bị ngắt". Mô-đun network báo cáo trạng thái đó thông qua phương thức isconnected() trên giao diện Wi-Fi và thông qua trạng thái liên kết trên giao diện Ethernet có dây. Ngoài ra, mọi thứ khác mà lớp này thực hiện đều bị ẩn đi.
9.3.2. Lớp liên kết¶
Một bước cao hơn là lớp liên kết -- các quy tắc để gửi một khối byte (một khung hình) giữa hai thiết bị chia sẻ cùng một phân đoạn vật lý. Lớp liên kết thêm hai thứ lên trên tín hiệu thô:
Địa chỉ phần cứng. Mỗi giao diện mạng đi kèm với một mã định danh 48 bit duy nhất gọi là địa chỉ MAC (Kiểm soát Truy cập Phương tiện). Trên Ethernet, nó được ghi vào chip; trên Wi-Fi, đó là loại mã định danh tương tự được ghi vào mô-đun không dây. Địa chỉ MAC là thứ mà một switch -- hộp có nhiều cổng Ethernet mà các thiết bị gần đó kết nối vào -- sử dụng để quyết định cổng nào một khung hình nhất định sẽ đi ra. Một điểm truy cập Wi-Fi đóng vai trò tương tự đối với các thiết bị không dây trên kênh của nó.
Đóng khung. Các byte mà lớp cao hơn chuyển xuống được đóng gói thành một khung hình với một tiêu đề nhỏ, tải trọng, và một tổng kiểm tra ở cuối. Tiêu đề mang địa chỉ MAC nguồn và đích; tổng kiểm tra cho phép bên nhận phát hiện một khung hình có byte bị hỏng trong quá trình truyền. Các khung hình không qua kiểm tra sẽ bị loại bỏ im lặng -- bất kỳ ai quan tâm đến độ tin cậy phải đặt nó lại ở một lớp cao hơn.
Một phân đoạn cục bộ là bất kỳ nhóm thiết bị nào có thể nhìn thấy trực tiếp các khung hình của nhau -- các cổng có dây trên một switch, tất cả các thiết bị được kết nối với một điểm truy cập Wi-Fi, hoặc một mạng lưới nhỏ các switch kết nối với nhau. Lớp liên kết không thể vươn tới ngoài phân đoạn đó. Ngay khi đích nằm trên một phân đoạn khác, thông điệp phải được chuyển lên lớp trên.
9.3.3. Những gì camera cung cấp¶
Camera có một địa chỉ MAC cho mỗi giao diện mạng mà nó có -- một địa chỉ Wi-Fi nếu cam có hỗ trợ không dây, một địa chỉ Ethernet nếu bo mạch có cổng tương ứng. Mô-đun network cung cấp quyền truy cập vào nó thông qua network_interface.config("mac") trên bất kỳ đối tượng giao diện nào mà ứng dụng đang sử dụng, khi cần đọc địa chỉ. Một số ứng dụng cần làm điều đó, chẳng hạn để đăng ký thiết bị với hệ thống quản lý thiết bị. Ngoài ra, đây là núm điều chỉnh duy nhất mà lớp liên kết chuyển giao cho Python.
Mọi thứ khác -- đóng khung, lưu lượng MAC thực tế trên dây hoặc trong không khí, quá trình đàm phán giữa camera và điểm truy cập về kênh và tốc độ nào sẽ sử dụng -- diễn ra hoàn toàn bên trong phần cứng không dây hoặc Ethernet. Trang tiếp theo đề cập đến một nơi mà tập lệnh Python thực sự có tiếng nói trong lớp liên kết: nói với camera mạng nào để tham gia.