Brotherの複合機の通信プロトコル解析(スキャナ部分)(2) - 概要

先日(id:ke-k:20100426:brother_scanprotocol)の続き。BrotherのMyMio(おそらくJUSTIOも同じ)で、ネットワーク経由でスキャンするときにどういうやり取りしてるの?って話です。ようやく本題。

Brotherのネットワークスキャナでは、スキャナ、PCのそれぞれ以下のポートで待ち受けている。

  • スキャナ側
    • snmp(161)/udp: スキャナ、プリンタの状態取得、スキャナ側の操作で保存できるPCの登録
    • 54921/tcp: スキャンデータの取得
  • PC側
    • 54925/udp: スキャナの起動通知、スキャンのリクエス

スキャンを行う大まかな流れは以下のようになっている。

  1. スキャナ起動時
    • PCの54925番ポートにUDPのブロードキャストで自分のIPアドレスとポート番号を知らせる。
  2. スキャナへのデータ取り込み先PCの登録
    • スキャナ側の操作でPCにファイルを保存する際の選択に表示されるPCは、PCからスキャナに通知を送ることで登録される。
    • SNMPプロトコルのSet-RequestでPC名、IPアドレス、ポート番号等の情報を登録する。
    • PC側のポート番号のデフォルトは54925。別の番号を登録することでおそらく変更可能。
    • 有効期間(自分で設定可)があるので、切れる前に更新する。ContorolCenterでは、期間を360秒として、約1分ごとに更新していた。
    • SNMPプロトコルは、プリンタの状態取得等にも使われているようだ。ここは今回の目的ではないので割愛。
  3. スキャナ側の操作で、保存先PCを選んで「スタートボタン」を押したとき
    • スキャナから選択したPCに、UDPでスキャンのリクエストを投げる。この際に、登録した情報もつける。
    • PCは受信したUDPのパケットをそのままスキャナに送り返しているが、返さなくても問題ないようだ。
  4. スキャンの実行
    • PCからスキャナの54921番ポートにTCP接続し、スキャンを実行する。

PCからスキャンしたいときは、1-3を省略して、4のスキャンの実行をすればOK。PCのControlCenterからスキャンを実行するのと、スキャナ側の操作でPCにデータを送信するのに、本質的な違いはなかった。スキャナ側のパネルで操作してPCに保存を選んだときは、スキャナからPCに「スキャンしてくれー」、と1つパケットを投げるだけで、あとはPCからのスキャンの実行を待つ。ここで、PCが何もしないと、スキャナ側ではタイムアウトまで(1分くらい?)操作できない。キャンセルも不可。

あと、PCのシャットダウン時に行うPCの登録解除みたいなのがあるんじゃなかろうか。もしくは有効期限切れになって消えるまでそのままかもしれない。

さて、大まかな流れを説明したところで、もう飽きてきたので、実際やり取りされるデータの詳細は次回…は、あるんだろうか。