プリントサーバー(共有プリンタ)とドライバとスプール。プリンターサーバーの役割・仕組み

 

プリントサーバーとは

プリンタサーバーとはプリンターをネットワークまたはローカルで直接接続したコンピューターをプリントサーバーといいます。
一方、プリントサーバーに印刷許可を受けるコンピューターをクライアントといいます。
コンピューターにネットワークまたはローカルで直接接続したプリンターを、他のコンピューターから共有して使用します
単純に共有プリンタともいいます

プリントサーバーの構築方法。プリンタを共有する設定

以下、Windows 7 もしくはWindows Server 2008にての説明になります

プリントサーバーの構築方法は、いたって単純で、サーバーで接続したプリンターを共有にするだけです
接続したプリンタを右クリックし、「プリンターのプロパティ」を見てみましょう

ここで注目すべきは、ファイル共有のように単純にプリンタを共有するだけではなく「追加ドライバー」をすることです。
上記、「追加ドライバー」の説明を見てみますと
このプリンターを他のバージョンの Windows を実行しているユーザーと共有する場合、ユーザーがプリンター ドライバーを検索する必要がなくなるように、追加ドライバーをインストールすることをお勧めします。

つまり共有プリンターに接続してきたクライアントに対し自動でそのプリンタドライバをインストールできます。
プリントサーバーを設置するメリットは、このクライアントへの自動プリンタドライバのインストールにあるでしょう

プリントサーバーの共有プリンタをクライアントで使用する方法

一般的にPoint and Print によるインストールと呼ばれる方法です
Point and Print によるインストールとはプリント サーバー等のネットワーク上の PC から共有されているプリンタを、他のクライアント PC から接続してインストールすることを言います。
具体的には、主に以下の3つの方法があります。
  1. エクスプローラのネットワークコンピュータ上に表示される共有プリンタ (アイコン) をダブルクリックするか、もしくは右クリック→[接続] を選択してインストール。
  2. プリンタの追加ウィザードから、リストアップされたネットワーク上の共有プリンタを選択するか、プリンタ名 \\<サーバー PC 名>\<プリンタ共有名> を直接指定してインストール。
  3. AddPrinterConnection API からインストール。


プリンタドライバは何をしているか?

プリンタドライバとは、いったい何をするためのものなのでしょうか?
プリンタドライバは、「ドライバー」という所以、プリンターを動作させるためのシステムファイルになります
プリンターを動作させるには、そのプリンターが解釈できるバイナリファイル(スプールファイル)を作成し、プリンターに送り込む必要があります
この動作をプリンタドライバが行っています
このプリンタが解釈できるバイナリファイル(スプールファイルもしくはプリンタファイルといわれる)のサイズは非常に大きい場合があります


スプールとは?スプールフォルダのパス・場所

プリンタで印刷を行う場合、印刷速度はプロセッサの処理速度よりも遥かに遅い。
このため、印字開始から終了までプリンタにコンピュータのプロセッサが占有されてしまうと、「遊んでいる」時間がほとんどなのに他の作業に使えない状態に陥る。
このような場合には、ハードディスクなどに印刷データを置いておいて、プリンタの印刷の進行状況に応じて、間を空けて少しずつ処理を行うことで、他の処理を並行して行うことができる。
これがスプール処理である。

「デバイスとプリンター」を開き、一つのプリンターを選択すると、メニューに「プリントサーバープロパティ」が表示され「プリントサーバープロパティ」を実行します

「詳細設定」タブに、スプールフォルダのパスがあります
スプールフォルダのパスは、C:\Windows\system32\spool\PRINTERS

プリントサーバー(共有プリンター)の印刷の仕組み

クライアントで共有プリンタを使って印刷命令を出した時、以下のような流れで印刷される
  1. クライアントのプリンタドライバが、プリンター用のバイナリファイル(スプールファイルもしくはプリンタファイルという)を作成すし、Print Spoolerサービスに渡す

  2. クライアントのPrint SpoolerサービスとプリントサーバーのPrint Spoolerサービスが通信し、プリントサーバーのスプール領域にバイナリファイル(スプールファイルもしくはプリンタファイルというわれる)を保存する

  3. プリントサーバーのPrint Spoolerサービスがスプール用のバイナリファイル(スプールファイルもしくはプリンタファイルと言われる)をプリンターに出力する

Print Spoolerサービスとは

遅延印刷をするために、ファイルを読み込んでメモリに格納します。


参考、Linuxのcupsでwindows用プリントサーバーを構築するとプリントサーバーの動きがわかります


プリンターとの通信ポート(TCP通信ポート)

プリンターとプリントサーバーは「標準TCP/IPポート・モニタ」は、Raw設定のポート番号9100番(プリンタ側)を使用し、TCP通信を行っています

上記は、プリントサーバーがネットワークプリンターに対し印刷通信を9100番ポートを使って行っているところ。
また、上記ネットワークプリンターに対し印刷(通信)しているプログラムのプロセスIDを調べると、spoolsv.exe(Print Spoolerサービス)であることがわかる。


より詳細に印刷の仕組みを知りたい方は、WindowsのPrint Spoolerサービスと印刷時の仕組みを参照して下さい

サブページ リスト

作成日:2012/2/15
更新日:2012/3/27
Comments