9.3. ケーブルとフレーム

スタックの最下位の2つの層は、カメラ上では当たり前のものとして見過ごしてしまいがちです。なぜなら、これらが行うすべての処理はチップ内部で完結し、Pythonコードを一切介さずにカメラが扱ってくれるからです。それでも、これらは「ローカルネットワーク」が何を意味するのか、そしてそれ以外のインフラとの境界がどこから始まるのかを説明してくれるため、簡単に見ておく価値があります。

9.3.1. 物理層

最下層は実際の信号伝送そのもの、つまり2つのデバイス間でビットを運ぶ配線、光ファイバー、または電波です。ツイストペアケーブル上のEthernetは、各ビットを一定のレートで電圧の遷移として符号化します。Wi-Fiは同じビットを2.4 GHzまたは5 GHz帯の無線搬送波に変調します。どちらも2つのハードウェア間に2進数のストリームを生成し、どちらもカメラのシリコンがソフトウェアに意識させることなく処理してくれる類の詳細です。

Pythonスクリプトの視点から見れば、物理層は「リンクがアップしている」か「リンクがダウンしている」かのいずれかです。network モジュールは、その状態をWi-Fiインターフェースの isconnected() メソッドを通じて、また有線Ethernetインターフェースではリンクステータスを通じて報告します。それ以外に、この層が行うことはすべて隠蔽されています。

9.3.3. カメラが公開するもの

カメラは、持っているネットワークインターフェースごとにMACアドレスを持ちます。カメラに無線サポートがあればWi-Fi用のもの、ボードに対応するポートがあればEthernet用のものです。network モジュールは、アドレスを読み取る必要がある場合に、アプリケーションが使用しているインターフェースオブジェクト上で network_interface.config("mac") を通じてアクセスできるようにします。たとえばフリート管理システムにデバイスを登録するために、これを必要とするアプリケーションもあります。それ以外では、これがリンク層がPythonに委ねる唯一のつまみです。

それ以外のすべて、つまりフレーミング、配線上や空中での実際のMACトラフィック、どのチャンネルとレートを使うかについてのカメラとアクセスポイント間のネゴシエーションは、すべて無線またはEthernetハードウェアの内部で行われます。次のページ では、Pythonスクリプトがリンク層に関与できる唯一の場所、すなわちどのネットワークに参加するかをカメラに伝えることについて説明します。