(57)【要約】【課題】  ネゴシエーションが正常に実行されたにも関わらず、外部装置からエラー通知が受信される場合に、当該外部装置との通信を適切に実行し得る技術を提供する。【解決手段】  通信装置は、第１のバージョン情報を含む第１のネゴシエーション要求を第１の外部装置に送信する第１の要求送信部と、第２のバージョンの所定の通信プロトコルを利用した第１の外部装置との第１の通信を実行する第１の通信実行部と、第１の通信において、第１の外部装置からエラー通知が受信される場合に、第１のバージョン情報とは異なる第２のバージョン情報を含む第２のネゴシエーション要求を第１の外部装置に送信する第２の要求送信部と、第１のバージョンの所定の通信プロトコルを利用した第１の外部装置との第２の通信を実行する第２の通信実行部と、を備える。【選択図】図７
2020053767.tif 000002
【特許請求の範囲】
【請求項１】
通信装置であって、
通信インタフェースと、
前記通信インタフェースを介して、第１のバージョン情報を含む第１のネゴシエーション要求を第１の外部装置に送信する第１の要求送信部であって、前記第１のバージョン情報は、前記通信装置が複数個のバージョンの所定の通信プロトコルを利用可能であることを示し、前記複数個のバージョンは、第１のバージョンと、前記第１のバージョンよりも新しい第２のバージョンと、を含む、前記第１の要求送信部と、
前記第１のネゴシエーション要求が前記第１の外部装置に送信されることに応じて、前記第１の外部装置から、前記通信インタフェースを介して、前記第１の外部装置が前記第２のバージョンの前記所定の通信プロトコルを利用可能であることを示す応答が受信される場合に、前記通信インタフェースを介して、前記第２のバージョンの前記所定の通信プロトコルを利用した前記第１の外部装置との第１の通信を実行する第１の通信実行部と、
前記第１の通信において、前記第１の外部装置からエラー通知が受信される場合に、前記通信インタフェースを介して、前記第１のバージョン情報とは異なる第２のバージョン情報を含む第２のネゴシエーション要求を前記第１の外部装置に送信する第２の要求送信部であって、前記第２のバージョン情報は、前記通信装置が前記第１のバージョンの前記所定の通信プロトコルを利用可能であることを示す、前記第２の要求送信部と、
前記第２のネゴシエーション要求が前記第１の外部装置に送信されることに応じて、前記第１の外部装置から、前記第１の外部装置が前記第１のバージョンの前記所定の通信プロトコルを利用可能であることを示す応答が受信される場合に、前記通信インタフェースを介して、前記第１のバージョンの前記所定の通信プロトコルを利用した前記第１の外部装置との第２の通信を実行する第２の通信実行部と、
を備える、通信装置。
【請求項２】
前記第２のバージョン情報は、前記通信装置が前記第２のバージョンの前記所定の通信プロトコルを利用可能であるにも関わらず、前記通信装置が前記第２のバージョンの前記所定の通信プロトコルを利用可能であることを示さない、請求項１に記載の通信装置。
【請求項３】
前記所定の通信プロトコルは、ＳＭＢ（Server Message Blockの略）プロトコルである、請求項１又は２に記載の通信装置。
【請求項４】
前記第１のバージョンは、前記ＳＭＢプロトコルのバージョン１．０であり、
前記第２のバージョンは、前記ＳＭＢプロトコルのバージョン２．０以上である、請求項３に記載の通信装置。
【請求項５】
前記第１の通信は、前記通信装置が、前記通信インタフェースを介して、前記ＳＭＢプロトコルのValidate Negotiation Info Request信号を前記第１の外部装置に送信する通信を含み、
前記エラー通知は、前記第１の外部装置が前記Validate Negotiation Info Request信号を解釈不可能であることを示す信号である、請求項３又は４に記載の通信装置。
【請求項６】
前記エラー通知は、ＯＳＩ参照モデルにおける前記所定の通信プロトコルよりも下位層のプロトコルを利用して通信される通知である、請求項５に記載の通信装置。
【請求項７】
前記第１の通信は、前記通信装置が、前記通信インタフェースを介して、前記ＳＭＢプロトコルのTree Connect Request信号を前記第１の外部装置に送信する通信を含み、
前記エラー通知は、STATUS_USER_SESSION_DELETED、STATUS_INVALD_PARAMETER、及び、STATUS_ACCESS_DENIEDのうちのいずれかを含む通知である、請求項３又は４に記載の通信装置。
【請求項８】
前記第１の通信は、前記第１の外部装置との対象データの通信に利用される第１の設定情報であって、ユーザによって入力される前記第１の設定情報が、前記第１の外部装置に記憶される第２の設定情報と適合するのか否かを確認するための通信であり、
前記第２の要求送信部は、前記エラー通知が、前記第１の設定情報が前記第２の設定情報に適合しないことを示す通知である場合に、前記第２のネゴシエーション要求を前記第１の外部装置に送信しない、請求項１〜４のいずれか一項に記載の通信装置。
【請求項９】
前記通信装置は、さらに、
前記第２の通信において、前記通信インタフェースを介して、前記第１の外部装置から成功通知が受信される場合に、前記第１のバージョンを前記通信装置のメモリに記憶させる第１の記憶制御部と、
前記第１のバージョンが前記メモリに記憶されている状態において、前記第１の外部装置との対象データの通信を実行するための第１の指示が取得される場合に、前記通信インタフェースを介して、前記第１のバージョン情報とは異なる第３のバージョン情報を含む第３のネゴシエーション要求を前記第１の外部装置に送信する第３の要求送信部であって、前記第３のバージョン情報は、前記通信装置が前記メモリに記憶されている前記第１のバージョンの前記所定の通信プロトコルを利用可能であることを示す、前記第３の要求送信部と、
を備える、請求項１〜８のいずれか一項に記載の通信装置。
【請求項１０】
前記第１の記憶制御部は、前記第１の外部装置に関連する第１の外部装置情報と、前記第１のバージョンと、を対応付けて前記メモリに記憶し、
前記複数個のバージョンは、さらに、前記第２のバージョンよりも新しい第３のバージョンを含み、
前記通信装置は、さらに、
前記通信インタフェースを介して、前記第３のバージョンの前記所定の通信プロトコルに従った第２の外部装置との第３の通信を実行する第３の通信実行部と、
前記第３の通信において、前記第２の外部装置から前記エラー通知が受信される場合に、前記第１のバージョン情報とは異なる第４のバージョン情報を含む第４のネゴシエーション要求を前記第２の外部装置に送信する第４の要求送信部であって、前記第４のバージョン情報は、前記通信装置が前記第１及び第２のバージョンの前記所定の通信プロトコルを利用可能であることを示す、前記第４の要求送信部と、
前記第４のネゴシエーション要求が前記第２の外部装置に送信されることに応じて、前記第２の外部装置から、前記通信インタフェースを介して、前記第２の外部装置が前記第２のバージョンの前記所定の通信プロトコルを利用可能であることを示す応答が受信される場合に、前記通信インタフェースを介して、前記第２のバージョンの前記所定の通信プロトコルを利用した前記第２の外部装置との第４の通信を実行する第４の通信実行部と、
前記第４の通信において、前記通信インタフェースを介して、前記第２の外部装置から成功通知が受信される場合に、前記第２の外部装置に関連する第２の外部装置情報と、前記第２のバージョンと、を対応付けて前記メモリに記憶させる第２の記憶制御部と、
前記第２の外部装置情報と前記第２のバージョンとが対応付けて前記メモリに記憶されている状態において、前記第２の外部装置との対象データの通信を実行するための第２の指示であって、前記第２の外部装置情報を指定することを含む前記第２の指示が取得される場合に、前記通信インタフェースを介して、第５のバージョン情報を含む第５のネゴシエーション要求を前記第２の外部装置に送信する第５の要求送信部であって、前記第５のバージョン情報は、前記通信装置が前記第２の外部装置情報に対応付けられている前記第２のバージョンの前記所定の通信プロトコルを利用可能であることを示す、前記第５の要求送信部と、を備え、
前記第３の要求送信部は、前記第１の外部装置情報と前記第１のバージョンとが対応付けて前記メモリに記憶されている状態において、前記第１の外部装置情報を指定することを含む前記第１の指示が取得される場合に、前記通信装置が前記第１の外部装置情報に対応付けられている前記第１のバージョンの前記所定の通信プロトコルを利用可能であることを示す前記第３のバージョン情報を含む前記第３のネゴシエーション要求を前記第１の外部装置に送信する、請求項９に記載の通信装置。
【請求項１１】
前記通信装置は、さらに、
操作部を備え、
前記第３の要求送信部は、
前記第１のバージョンが前記メモリに記憶されている状態において、前記操作部に対するユーザ操作が実行されることによって前記第１の指示が取得される場合に、前記第３のネゴシエーション要求を前記第１の外部装置に送信し、
前記第１のバージョンが前記メモリに記憶されている状態において、前記通信装置内のウェブサーバに対するアクセスが実行されることによって前記第１の指示が取得される場合に、前記第３のネゴシエーション要求を前記第１の外部装置に送信しない、請求項９又は１０に記載の通信装置。
【請求項１２】
前記通信装置は、さらに、
前記第１の外部装置とは異なる第３の外部装置から、前記通信インタフェースを介して、通信要求を受信する要求受信部を備え、
前記第１の要求送信部は、前記第３の外部装置から前記通信要求が受信される場合に、前記第１のネゴシエーション要求を前記第１の外部装置に送信し、
前記通信装置は、さらに、
前記第２のバージョンの前記所定のプロトコルに従った前記第１の外部装置との前記第１の通信において、前記第１の外部装置から前記エラー通知が受信される場合に、前記通信インタフェースを介して、バージョン選択画面を表わすバージョン選択画面データを前記第３の外部装置に送信する画面データ送信部であって、前記バージョン選択画面は、前記第２のバージョンよりも古いバージョンを利用するのか否かをユーザに選択させるための画面である、前記画面データ送信部を備え、
前記第２の要求送信部は、前記通信インタフェースを介して、前記第３の外部装置から、前記バージョン選択画面において前記古いバージョンを利用することが前記ユーザによって選択されたことを示す許可通知が受信される場合に、前記第２のネゴシエーション要求を前記第１の外部装置に送信する、請求項１〜１１のいずれか一項に記載の通信装置。
【請求項１３】
前記バージョン選択画面は、前記古いバージョンを利用することに起因してセキュリティレベルが低くなることを示すメッセージを含む、請求項１２に記載の通信装置。
【請求項１４】
通信装置のためのコンピュータプログラムであって、
前記通信装置に搭載されるコンピュータを、以下の各部、即ち、
前記通信装置の通信インタフェースを介して、第１のバージョン情報を含む第１のネゴシエーション要求を第１の外部装置に送信する第１の要求送信部であって、前記第１のバージョン情報は、前記通信装置が複数個のバージョンの所定の通信プロトコルを利用可能であることを示し、前記複数個のバージョンは、第１のバージョンと、前記第１のバージョンよりも新しい第２のバージョンと、を含む、前記第１の要求送信部と、
前記第１のネゴシエーション要求が前記第１の外部装置に送信されることに応じて、前記第１の外部装置から、前記通信インタフェースを介して、前記第１の外部装置が前記第２のバージョンの前記所定の通信プロトコルを利用可能であることを示す応答が受信される場合に、前記通信インタフェースを介して、前記第２のバージョンの前記所定の通信プロトコルを利用した前記第１の外部装置との第１の通信を実行する第１の通信実行部と、
前記第１の通信において、前記第１の外部装置からエラー通知が受信される場合に、前記通信インタフェースを介して、前記第１のバージョン情報とは異なる第２のバージョン情報を含む第２のネゴシエーション要求を前記第１の外部装置に送信する第２の要求送信部であって、前記第２のバージョン情報は、前記通信装置が前記第１のバージョンの前記所定の通信プロトコルを利用可能であることを示す、前記第２の要求送信部と、
前記第２のネゴシエーション要求が前記第１の外部装置に送信されることに応じて、前記第１の外部装置から、前記第１の外部装置が前記第１のバージョンの前記所定の通信プロトコルを利用可能であることを示す応答が受信される場合に、前記通信インタフェースを介して、前記第１のバージョンの前記所定の通信プロトコルを利用した前記第１の外部装置との第２の通信を実行する第２の通信実行部と、
として機能させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、所定の通信プロトコルのバージョンに関するネゴシエーションを外部装置と実行する通信装置を開示する。
【背景技術】
【０００２】
特許文献１には、クライアントとサーバとを備えるコンピューティングシステム環境が開示されている。クライアントは、クライアントがサポートするＳＭＢプロトコルのバージョン番号を含む折衝要求をサーバに送信し、サーバから、利用すべきＳＭＢプロトコルのバージョン番号を含む折衝応答を受信する。クライアントは、折衝応答に含まれるＳＭＢプロトコルのバージョン番号に従って、サーバとの通信を実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３３３４３３
【発明の概要】
【発明が解決しようとする課題】
【０００４】
クライアントとサーバとの間でＳＭＢプロトコルのバージョンを決定するための折衝（即ちネゴシエーション）が正常に完了したにも関わらず、クライアントとサーバとの間でその後の通信が正常に実行されないことが起こり得る。
【０００５】
本明細書では、ネゴシエーションが正常に実行されたにも関わらず、外部装置からエラー通知が受信される場合に、当該外部装置との通信を適切に実行し得る技術を提供する。
【課題を解決するための手段】
【０００６】
本明細書によって開示される通信装置は、通信インタフェースと、前記通信インタフェースを介して、第１のバージョン情報を含む第１のネゴシエーション要求を第１の外部装置に送信する第１の要求送信部であって、前記第１のバージョン情報は、前記通信装置が複数個のバージョンの所定の通信プロトコルを利用可能であることを示し、前記複数個のバージョンは、第１のバージョンと、前記第１のバージョンよりも新しい第２のバージョンと、を含む、前記第１の要求送信部と、前記第１のネゴシエーション要求が前記第１の外部装置に送信されることに応じて、前記第１の外部装置から、前記通信インタフェースを介して、前記第１の外部装置が前記第２のバージョンの前記所定の通信プロトコルを利用可能であることを示す応答が受信される場合に、前記通信インタフェースを介して、前記第２のバージョンの前記所定の通信プロトコルを利用した前記第１の外部装置との第１の通信を実行する第１の通信実行部と、前記第１の通信において、前記第１の外部装置からエラー通知が受信される場合に、前記通信インタフェースを介して、前記第１のバージョン情報とは異なる第２のバージョン情報を含む第２のネゴシエーション要求を前記第１の外部装置に送信する第２の要求送信部であって、前記第２のバージョン情報は、前記通信装置が前記第１のバージョンの前記所定の通信プロトコルを利用可能であることを示す、前記第２の要求送信部と、前記第２のネゴシエーション要求が前記第１の外部装置に送信されることに応じて、前記第１の外部装置から、前記第１の外部装置が前記第１のバージョンの前記所定の通信プロトコルを利用可能であることを示す応答が受信される場合に、前記通信インタフェースを介して、前記第１のバージョンの前記所定の通信プロトコルを利用した前記第１の外部装置との第２の通信を実行する第２の通信実行部と、を備えてもよい。
【０００７】
上記の構成によると、通信装置は、第２のバージョンの所定の通信プロトコルを利用した第１の外部装置との第１の通信において、第１の外部装置からエラー通知を受信する場合に、第２のバージョン情報を含む第２のネゴシエーション要求を第１の外部装置に送信する。そして、通信装置は、第１の外部装置から、第１の外部装置が第１のバージョンの所定の通信プロトコルを利用可能であることを示す応答を受信すると、第１のバージョンの所定の通信プロトコルを利用した第１の外部装置との第２の通信を実行する。この場合、第２のバージョンよりも古い第１のバージョンの所定の通信プロトコルを利用した第２の通信が実行されるので、第１の外部装置からエラー通知を受信しない可能性が高くなり得る。従って、通信装置は、ネゴシエーションが正常に実行されたにも関わらず、第１の外部装置からエラー通知が受信される場合に、第１の外部装置との通信を適切に実行し得る。
【０００８】
上記の通信装置を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記録媒体も、新規で有用である。また、上記の通信装置と第１の外部装置とを備える通信システムも、新規で有用である。
【図面の簡単な説明】
【０００９】
【図１】通信システムの構成を示す。
【図２】各テーブルの一例を示す。
【図３】ＳＭＢ１．０を利用した通信が成功するケースＡのシーケンス図を示す。
【図４】ＳＭＢ２．０を利用した通信が成功するケースＢのシーケンス図を示す。
【図５】ＳＭＢ２．１を利用した通信が成功するケースＣのシーケンス図を示す。
【図６】ＳＭＢ２．１を利用した通信が失敗するケースＤのシーケンス図を示す。
【図７】ＳＭＢ２．０を利用した通信が失敗するケースＥのシーケンス図を示す。
【図８】ＳＭＢ１．０を利用したスキャンデータの通信が実行されるケースＦのシーケンス図を示す。
【図９】スキャンデータの通信が制限されるケースＧのシーケンス図を示す。
【図１０】接続処理のフローチャートを示す。
【図１１】テスト接続処理のフローチャートを示す。
【図１２】ＰＣに表示される画面の一例を示す。
【図１３】ＰＣに表示される画面の一例を示す。
【図１４】ＭＦＰに表示される画面の一例を示す。
【発明を実施するための形態】
【００１０】
（実施例）
（通信システム２の構成；図１）
図１に示すように、通信システム２は、多機能機１０（以下では「ＭＦＰ（Multi-Function Peripheralの略）」と呼ぶ）と、ＰＣ６０と、複数個のサーバ１００Ａ〜１００Ｅと、を備える。ＭＦＰ１０とＰＣ６０と各サーバ１００Ａ〜１００Ｅは、同じＬＡＮ（Local Area Networkの略）４に所属しており、ＬＡＮ４を介して相互に通信可能である。
【００１１】
（ＭＦＰ１０の構成）
ＭＦＰ１０は、印刷機能、スキャン機能、及び、ウェブサーバ機能を含む多機能を実行可能な周辺装置である。ウェブサーバ機能は、外部機器がＭＦＰ１０のウェブサーバにアクセスすることによって、ウェブページを表わすウェブページデータを外部機器に送信する機能である。ＭＦＰ１０は、ファイル共有プロトコルであるＳＭＢ（Service Message Blockの略）を利用可能である。特に、ＭＦＰ１０は、ＳＭＢ１．０、ＳＭＢ２．０、ＳＭＢ２．１、及び、ＳＭＢ３．０を利用可能である。ＳＭＢの後の値は、ＳＭＢプロトコルのバージョンを示しており、バージョンの値が大きい程、新しいバージョンであることを意味する。なお、ＳＭＢプロトコルのバージョンに表わす用語として、「ダイアレクト」という用語が使用されることもある。
【００１２】
ＭＦＰ１０は、操作部１２と、表示部１４と、印刷実行部１６と、スキャン実行部１８と、通信インタフェース（以下ではインタフェースを「Ｉ／Ｆ」と記載する）２０と、制御部３０と、を備える。
【００１３】
操作部１２は、複数のキーを備える。ユーザは、操作部１２を操作することによって、様々な指示をＭＦＰ１０に入力することができる。表示部１４は、様々な情報を表示するためのディスプレイである。表示部１４は、いわゆるタッチパネル（即ち、操作部）としても機能する。印刷実行部１６は、インクジェット方式、レーザ方式等の印刷機構である。スキャン実行部１８は、ＣＣＤ、ＣＩＳ等のスキャン機構である。
【００１４】
制御部３０は、ＣＰＵ３２と、メモリ３４と、を備える。ＣＰＵ３２は、メモリ３４に格納されているプログラム３６に従って、様々な処理を実行する。メモリ３４は、揮発性メモリ、不揮発性メモリ等によって構成される。メモリ３４は、プロファイルテーブル３８（図２参照）と、ＩＰアドレス４０と、を記憶している。ＩＰアドレス４０は、ＭＦＰ１０に割当てられているＩＰアドレスである。
【００１５】
（サーバ１００Ａ〜１００Ｅの構成）
サーバ１００Ａは、ファイル共有のための共有フォルダを格納するサーバである。サーバ１００Ａには、サーバ名「ｓｅｒｖｅｒ１」が割当てられている。サーバ１００Ａは、ＳＭＢプロトコルを利用可能であり、特に、ＳＭＢ１．０のみを利用可能である（即ち、ＳＭＢ１．０より新しいバージョンを利用不可能である）。サーバ１００Ａは、認証テーブル１１０Ａ（図２参照）を記憶する。
【００１６】
サーバ１００Ｂ〜１００Ｅは、利用可能なＳＭＢプロトコルのバージョンが異なる点を除いて、サーバ１００Ａと同様の構成を備える。サーバ１００Ｂ、１００Ｃ、１００Ｄ、１００Ｅには、それぞれ、サーバ名「ｓｅｒｖｅｒ２」、「ｓｅｒｖｅｒ３」、「ｓｅｒｖｅｒ４」、「ｓｅｒｖｅｒ５」が割当てられている。サーバ１００Ｂ、１００Ｅは、ＳＭＢ１．０及びＳＭＢ２．０を利用可能であり（即ち、ＳＭＢ２．０より新しいバージョンを利用不可能である）、サーバ１００Ｃ、１００Ｄは、ＳＭＢ１．０、ＳＭＢ２．０、及び、ＳＭＢ２．１を利用可能である（即ち、ＳＭＢ２．１より新しいバージョンを利用不可能である）。なお、ＳＭＢプロトコルのバージョンが２．０より新しいバージョンにおいて、ＳＭＢプロトコルの解釈には幅がある。このため、同じバージョンのＳＭＢプロトコルに対応するプログラムであっても、プログラムの内容がベンダ毎に異なり得る。本実施例において、サーバ１００Ａ〜１００Ｃは、同じベンダによって提供されるサーバである。サーバ１００Ｃ、１００Ｄ、１００Ｅは、それぞれ異なるサーバによって提供されるサーバである。そして、サーバ１００Ｃに実装されているＳＭＢ２．１に対応するプログラムは、ＭＦＰ１０に実装されているＳＭＢ２．１に対応するプログラムとの整合が取れている。一方、サーバ１００Ｄに実装されているＳＭＢ２．１に対応するプログラムは、ＭＦＰ１０に実装されているＳＭＢ２．１に対応するプログラムとの整合が取れていない。また、サーバ１００Ｂ、１００Ｄに実装されているＳＭＢ２．０に対応するプログラムは、ＭＦＰ１０に実装されているＳＭＢ２．０に対応するプログラムとの整合が取れている。一方、サーバ１００Ｅに実装されているＳＭＢプロトコル２．０に対応するプログラムは、不具合を起こしているか、又は、ＭＦＰ１０に実装されているＳＭＢ２．０に対応するプログラムとの整合が取れていない。
【００１７】
（各テーブル３８、１１０Ａの内容；図２）
続いて、図２を参照して、ＭＦＰ１０内のプロファイルテーブル３８、及び、サーバ１００Ａ内の認証テーブル１１０Ａの内容を説明する。
【００１８】
ＭＦＰ１０のプロファイルテーブル３８では、プロファイル名（プロファイル１〜５）とプロファイル情報とが対応付けて記憶される。プロファイル情報は、ネットワークフォルダパス、ユーザ名、パスワード、及び、ＳＭＢバージョンを含む。プロファイル名は、プロファイル情報を識別する名称であり、ＭＦＰ１０の出荷時から予め登録されている。なお、変形例では、ユーザが、ユーザ名、パスワードをプロファイルテーブル３８に登録するときに、プロファイル名を新たに作成できてもよい。ネットワークフォルダパスは、サーバ内の共有フォルダのパスである。ユーザ名及びパスワードは、ユーザを識別する情報である。ＳＭＢバージョンは、サーバとの通信に利用されるべきＳＭＢプロトコルのバージョンを示す情報である。プロファイルテーブル３８は、スキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能を実行する際に利用される。当該機能は、スキャンデータをサーバ内の共有フォルダに格納させる機能である。
【００１９】
サーバ１００Ａの認証テーブル１１０Ａは、サーバ１００Ａ内の共有フォルダへのアクセスを許容するのか否かを示すテーブルである。認証テーブル１１０Ａでは、ユーザ名と、パスワードと、共有フォルダ「shared11」へのアクセス情報と、共有フォルダ「shared12」へのアクセス情報と、が対応付けて記憶されている。アクセス情報は、共有フォルダへのアクセスが許可されていることを示す「ＯＫ」と、共有フォルダへのアクセスが禁止されていることを示す「ＮＧ」と、のどちらかの値を有する。認証テーブル１１０Ａ内の情報は、サーバ１００Ａの管理者によって設定される。なお、サーバ１００Ｂ〜１００Ｅも認証テーブル１１０Ａと同様の認証テーブルを記憶する。
【００２０】
（具体的なケース；図３〜図９）
図３〜図９を参照して、本実施例の通信システム２によって実現される具体的なケースＡ〜Ｆについて説明する。
【００２１】
（ケースＡ；図３）
図３を参照して、プロファイルテーブル３８（図２参照）のプロファイル１に対応付けてプロファイル情報を登録するケースＡについて説明する。ケースＡでは、サーバ１００Ａの共有フォルダ「shared11」にスキャンデータを格納させるためのプロファイル情報が登録される。ケースＡの初期状態では、ＭＦＰ１０のプロファイルテーブル３８（図２参照）には、１個のプロファイル情報も登録されていない。また、サーバ１００Ａの認証テーブル１１０Ａ（図２参照）には、ユーザ名「ＵＵＵ１」及びパスワード「ＰＰＰ１」が登録済であり、ユーザ名「ＵＵＵ１」には、共有フォルダ「shared11」へのアクセス情報として「ＯＫ」が設定されている。なお、ＭＦＰ１０によって実行される以下の全ての通信は、通信Ｉ/Ｆ２０を介して実行される。従って、以下では、「通信Ｉ/Ｆ２０を介して」という説明を省略する。
【００２２】
ＰＣ６０は、Ｔ１０において、Ｗｅｂブラウザが起動されている状態でＭＦＰ１０のＩＰアドレス４０の入力を受け付けると、Ｔ１２において、トップ画面データ要求をＭＦＰ１０に送信し、Ｔ１４において、ＭＦＰ１０からトップ画面データを受信し、Ｔ１６において、トップ画面データによって表わされるトップ画面Ｄ１を表示する。図１２（Ａ）に示されるように、画面Ｄ１は、基本情報欄と、スキャンタブと、を含む。基本情報欄には、ＭＦＰ１０の現在のステータスとインク残量とが記述されている。
【００２３】
ＰＣ６０は、Ｔ２０において、トップ画面Ｄ１内のスキャンタブが操作されると、Ｔ２２において、選択画面データ要求をＭＦＰ１０に送信し、Ｔ２４において、ＭＦＰ１０から選択画面データを受信し、Ｔ２６において、選択画面データによって表わされるプロファイル選択画面Ｄ２を表示する。図１２（Ｂ）に示されるように、画面Ｄ２には、５個のプロファイル名（即ちプロファイル１〜５）が記述されている。
【００２４】
ＰＣ６０は、Ｔ３０において、プロファイル１を選択するための操作を受け付けると、Ｔ３２において、設定画面データ要求をＭＦＰ１０に送信し、Ｔ３４において、ＭＦＰ１０から設定画面データを受信し、Ｔ３６において、設定画面データによって表わされる設定画面Ｄ３を表示する。図１２（Ｃ）に示されるように、画面Ｄ３は、プロファイル１と、ネットワークフォルダパス入力欄と、ユーザ名入力欄と、パスワード入力欄と、テスト接続ボタンと、キャンセルボタンと、を含む。
【００２５】
ＰＣ６０は、Ｔ４０において、ネットワークフォルダパス「\\server1\shared11」、ユーザ名「ＵＵＵ１」、及び、パスワード「ＰＰＰ１」が画面Ｄ３に入力され、Ｔ４２において、画面Ｄ３内のテスト接続ボタンが操作されると、Ｔ５０において、「プロファイル１」、「\\server1\shared11」、「ＵＵＵ１」、及び、「ＰＰＰ１」を含むテスト接続要求をＭＦＰ１０に送信する。
【００２６】
ＭＦＰ１０は、Ｔ５０において、ＰＣ６０からテスト接続要求を受信すると、Ｔ５２において、接続画面データをＰＣ６０に送信する。
【００２７】
ＰＣ６０は、Ｔ５２において、ＭＦＰ１０から接続画面データを受信すると、Ｔ５４において、接続画面データによって表わされる接続画面Ｄ４を表示する。図１２（Ｄ）に示されるように、画面Ｄ４は、プロファイル１と、テスト接続が実行されていることを示すメッセージと、キャンセルボタンと、を含む。ここで、「テスト接続」は、サーバ内の共有フォルダにアクセス可能であるのか否かを確認するための処理である。
【００２８】
ＭＦＰ１０は、Ｔ６０において、バージョン情報を含むNegotiate要求をサーバ１００Ａに送信する。Negotiate要求は、ＭＦＰ１０とサーバ１００Ａとの間の通信で利用されるＳＭＢプロトコルのバージョンを決定するためのネゴシエーションの要求である。バージョン情報は、ＭＦＰ１０が利用可能なＳＭＢプロトコルのバージョンを示す情報であり、Ｔ６０で送信されるバージョン情報は、「ＳＭＢ２．？」、「ＳＭＢ２．０」、及び、「ＳＭＢ１．０」を含む。「ＳＭＢ２．？」は、「ＳＭＢ２．１」以上のバージョンを利用可能であることを示す情報である。
【００２９】
サーバ１００Ａは、Ｔ６０において、ＭＦＰ１０からNegotiate要求を受信すると、当該要求内のバージョン情報を利用して、ＭＦＰ１０との通信に利用するＳＭＢプロトコルのバージョンを決定する。サーバ１００Ａは、「ＳＭＢ１．０」のみを利用可能であり、かつ、「ＳＭＢ１．０」がバージョン情報に含まれているので、「ＳＭＢ１．０」を利用することを決定する。そして、サーバ１００Ａは、Ｔ６２において、「ＳＭＢ１．０」を含むNegotiate応答をＭＦＰ１０に送信する。
【００３０】
ＭＦＰ１０は、Ｔ６２において、サーバ１００ＡからNegotiate応答を受信する。ＭＦＰ１０は、Negotiate応答が「ＳＭＢ１．０」を含むので、その後のサーバ１００Ａとの通信において利用されるＳＭＢプロトコルのバージョンとして「ＳＭＢ１．０」を決定する。次いで、ＭＦＰ１０は、Ｔ７０において、テスト接続要求内のユーザ名「ＵＵＵ１」及びパスワード「ＰＰＰ１」を含むSession Setup要求をサーバ１００Ａに送信する。Session Setup要求は、サーバとのセッションを確立するための要求である。
【００３１】
サーバ１００Ａは、Ｔ７０において、ＭＦＰ１０からSession Setup要求を受信すると、当該要求内のユーザ名「ＵＵＵ１」及びパスワード「ＰＰＰ１」が、認証テーブル１１０Ａに登録されているユーザ名及びパスワードに一致すると判断し、Ｔ７２において、ステータス「ＳＵＣＣＥＳＳ」を含むSession Setup応答をＭＦＰ１０に送信する。
【００３２】
ＭＦＰ１０は、Ｔ７２において、サーバ１００ＡからSession Setup応答を受信すると、当該応答がステータス「ＳＵＣＣＥＳＳ」を含むので、サーバ１００Ａとのセッションの確立が成功したと判断する。そして、ＭＦＰ１０は、Ｔ８０において、テスト接続要求内のネットワークフォルダパス「\\server1\shared11」を含むTree Connect要求をサーバ１００Ａに送信する。Tree Connect要求は、当該要求内のネットワークフォルダパス（即ち共有フォルダ）へのアクセスが許可されているのか否かを確認するための要求である。
【００３３】
サーバ１００Ａは、Ｔ８０において、ＭＦＰ１０からTree Connect要求を受信すると、認証テーブル１１０Ａにおいてユーザ名「ＰＰＰ１」に対応付けられているネットワークフォルダパス「\\server1\shared11」のアクセス情報が「ＯＫ」であることを特定し、当該ネットワークフォルダパスへのアクセスが許可されていると判断する。そして、サーバ１００Ａは、Ｔ８２において、ステータス「ＳＵＣＣＥＳＳ」を含むTree Connect応答をＭＦＰ１０に送信する。
【００３４】
ＭＦＰ１０は、Ｔ８２において、サーバ１００ＡからTree Connect応答を受信すると、当該応答がステータス「ＳＵＣＣＥＳＳ」を含むので、テスト接続が成功したと判断する。そして、ＭＦＰ１０は、Ｔ８４において、プロファイルテーブル３８内のプロファイル１に対応付けて、ネットワークフォルダパス「\\server1\shared11」、ユーザ名「ＵＵＵ１」、及び、パスワード「ＰＰＰ１」を含むプロファイル情報を登録する。なお、ＭＦＰ１０は、プロファイル１のＳＭＢバージョンに情報を登録しない。また、ＭＦＰ１０は、Ｔ９０において、テスト接続が成功したことを示す成功通知をＰＣ６０に送信する。
【００３５】
ＰＣ６０は、Ｔ９０において、成功通知を受信すると、Ｔ９２において、接続成功画面Ｄ５を表示する。図１２（Ｅ）に示すように、画面Ｄ５は、テスト接続が成功したことを示すメッセージと、ＯＫボタンと、を含む。これにより、ＰＣ６０のユーザは、サーバ１００Ａへのテスト接続が成功したこと、及び、プロファイル１の登録が完了したことを知ることができる。これにより、プロファイル１を利用したスキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能が利用可能になる。
【００３６】
（ケースＢ；図４）
続いて、図４を参照して、プロファイルテーブル３８（図２参照）のプロファイル２に対応付けてプロファイル情報を登録するケースＢについて説明する。ケースＢでは、サーバ１００Ｂの共有フォルダ「shared21」にスキャンデータを格納させるためのプロファイル情報が登録される。ケースＢは、ケースＡの後の状態であり、プロファイルテーブル３８のプロファイル１にプロファイル情報が登録されている（図３のＴ８４参照）。また、サーバ１００Ｂ内の認証テーブルには、ユーザ名「ＵＵＵ１」及びパスワード「ＰＰＰ１」が登録済であり、ユーザ名「ＵＵＵ１」には、共有フォルダ「shared21」へのアクセス情報として「ＯＫ」が設定されている。
【００３７】
まず、ＰＣ６０とＭＦＰ１０との間で図３のＴ１０〜Ｔ４２と同様の処理が実行される。本ケースにおいて、ＰＣ６０のユーザは、プロファイル選択画面Ｄ２（図１２（Ｂ）参照）上のプロファイル２を操作し、設定画面Ｄ３（図１２（Ｃ）参照）の各入力欄に、ネットワークフォルダパス「\\server2\shared21」、ユーザ名「ＵＵＵ１」、及び、パスワード「ＰＰＰ１」を入力する。
【００３８】
ＰＣ６０は、Ｔ１５０において、「プロファイル２」、「\\server2\shared21」、「ＵＵＵ１」、及び、「ＰＰＰ１」を含むテスト接続要求をＭＦＰ１０に送信する。Ｔ１５２、Ｔ１５４は、それぞれ、図３のＴ５２、Ｔ５４と同様である。Ｔ１６０は、通信対象がサーバ１００Ｂである点を除いて、Ｔ６０と同様である。
【００３９】
サーバ１００Ｂは、Ｔ１６０において、ＭＦＰ１０からNegotiate要求を受信すると、サーバ１００Ｂが利用可能である「ＳＭＢ１．０」及び「ＳＭＢ２．０」が当該要求のバージョン情報に含まれていると判断する。次いで、サーバ１００Ｂは、サーバ１００Ｂが利用可能である「ＳＭＢ１．０」及び「ＳＭＢ２．０」のうち、最も新しいバージョン「ＳＭＢ２．０」を利用することを決定する。そして、サーバ１００Ｂは、Ｔ１６２において、「ＳＭＢ２．０」を含むNegotiate応答をＭＦＰ１０に送信する。Ｔ１７０、Ｔ１７２は、通信対象がサーバ１００Ｂである点を除いて、それぞれ、図３のＴ７０、Ｔ７２と同様である。
【００４０】
ＭＦＰ１０は、Ｔ１８０において、ネットワークフォルダパス「\\server2\shared21」及びCredit Request数「２」を含むTree Connect要求をサーバ１００Ｂに送信する。Credit Request数は、ＳＭＢプロトコルを利用した通信において、クライアントとして動作する機器（例えばＭＦＰ１０）がサーバとして動作する機器（例えばサーバ１００Ｂ）に要求するCredit数を示す情報である。クライアントして動作する機器は、Credit Requestの送信に応じて、サーバとして動作する機器から、Credit Granted数を受信する。クライアントして動作する機器は、受信されるCredit Granted数の数だけ、サーバとして動作する機器に要求信号を同時に送信することができる。なお、本実施例では、ＭＦＰ１０は、予め決められているCredit Request数「２」を送信する。
【００４１】
サーバ１００Ｂは、Ｔ１８２において、ＭＦＰ１０から、Tree Connect要求を受信すると、サーバ１００Ｂの認証テーブルにおいてユーザ名「ＰＰＰ１」に対応付けられているネットワークフォルダパス「\\server2\shared21」のアクセス情報が「ＯＫ」であることを特定し、当該ネットワークフォルダパスへのアクセスが許可されていると判断する。また、サーバ１００Ｂは、Credit Grated数として「２」を特定する。そして、サーバ１００Ｂは、Ｔ１８２において、ステータス「ＳＵＣＣＥＳＳ」及びCredit Granted数「２」を含むTree Connect応答をＭＦＰ１０に送信する。
【００４２】
ＭＦＰ１０は、Ｔ１８４において、プロファイルテーブル３８内のプロファイル２に対応付けて、ネットワークフォルダパス「\\server2\shared21」、ユーザ名「ＵＵＵ１」、及び、パスワード「ＰＰＰ１」を含むプロファイル情報を登録する。なお、ＭＦＰ１０は、プロファイル２のＳＭＢバージョンに情報を登録しない。Ｔ１９０、Ｔ１９２は、それぞれ、図３のＴ９０、Ｔ９２と同様である。これにより、プロファイル２を利用したスキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能が利用可能になる。
【００４３】
（ケースＣ；図５）
続いて、図５を参照して、プロファイルテーブル３８（図２参照）のプロファイル３に対応付けてプロファイル情報を登録するケースＣについて説明する。ケースＣでは、サーバ１００Ｃの共有フォルダ「shared31」にスキャンデータを格納させるためのプロファイル情報が登録される。ケースＣは、ケースＢの後の状態であり、プロファイルテーブル３８のプロファイル１及び２にプロファイル情報が登録されている（図４のＴ１８４参照）。また、サーバ１００Ｃ内の認証テーブルには、ユーザ名「ＵＵＵ１」及びパスワード「ＰＰＰ１」が登録済であり、ユーザ名「ＵＵＵ１」には、共有フォルダ「shared31」へのアクセス情報として「ＯＫ」が設定されている。
【００４４】
まず、ＰＣ６０とＭＦＰ１０との間で図３のＴ１０〜Ｔ４２と同様の処理が実行される。本ケースにおいて、ＰＣ６０のユーザは、プロファイル選択画面Ｄ２（図１２（Ｂ）参照）上のプロファイル３を操作し、設定画面Ｄ３（図１２（Ｃ）参照）の各入力欄に、ネットワークフォルダパス「\\server3\shared31」、ユーザ名「ＵＵＵ１」、及び、パスワード「ＰＰＰ１」を入力する。
【００４５】
ＰＣ６０は、Ｔ２５０において、「プロファイル３」、「\\server3\shared31」、「ＵＵＵ１」、及び、「ＰＰＰ１」を含むテスト接続要求をＭＦＰ１０に送信する。Ｔ２５２、Ｔ２５４は、それぞれ、図３のＴ５２、Ｔ５４と同様である。Ｔ２６０は、通信対象がサーバ１００Ｃである点を除いて、Ｔ６０と同様である。
【００４６】
サーバ１００Ｃは、Ｔ２６０において、ＭＦＰ１０からNegotiate要求を受信すると、サーバ１００Ｃが利用可能である「ＳＭＢ１．０」、「ＳＭＢ２．０」、及び、「ＳＭＢ２．１」が当該要求のバージョン情報に含まれていると判断する。次いで、サーバ１００Ｃは、サーバ１００Ｃが利用可能である「ＳＭＢ１．０」、「ＳＭＢ２．０」、及び、「ＳＭＢ２．１」のうち、最も新しいバージョン「ＳＭＢ２．１」を利用することを決定する。そして、サーバ１００Ｃは、Ｔ２６２において、「ＳＭＢ２．１」に対応する「ＳＭＢ２．？」を含むNegotiate応答をＭＦＰ１０に送信する。
【００４７】
ＭＦＰ１０は、Ｔ２６２において、サーバ１００ＣからNegotiate応答を受信すると、当該応答が「ＳＭＢ２．？」を含むので、ＳＭＢ２．１以上のバージョンを利用した通信が所望されていると判断する。この場合、ＭＦＰ１０は、ＭＦＰ１０が利用可能である「ＳＭＢ１．０」、「ＳＭＢ２．０」、「ＳＭＢ２．１」、及び、「ＳＭＢ３．０」の中から、「ＳＭＢ２．１」以上のバージョン（即ち、「ＳＭＢ２．１」及び「ＳＭＢ３．０」）を特定する。次いで、ＭＦＰ１０は、Ｔ２６４において、ＧＵＩＤ（Globally Unique Identifierの略）「ＸＸＸ１」を生成する。ＧＵＩＤは、ＭＦＰ１０を識別するためのランダムな文字列であり、ＭＦＰ１０の電源がＯＮされた後において、「ＳＭＢ２．１」及びそれより新しいバージョンを利用した通信を初めて行う際に生成される情報である。なお、変形例では、ＧＵＩＤは、ＭＦＰ１０の電源がＯＮされる際に生成されてもよい。そして、ＭＦＰ１０は、Ｔ２６６において、特定済みの「ＳＭＢ２．１」及び「ＳＭＢ３．０」を含むバージョン情報と、生成済みのＧＵＩＤ「ＸＸＸ１」と、を含むNegotiate要求をサーバ１００Ｃに送信する。
【００４８】
サーバ１００Ｃは、Ｔ２６６において、ＭＦＰ１０からNegotiate要求を受信すると、Ｔ２６８において、当該要求内のＧＵＩＤ「ＸＸＸ１」を記憶する。そして、サーバ１００Ｃは、サーバ１００Ｃが利用可能である「ＳＭＢ２．１」が当該要求のバージョン情報に含まれていると判断し、「ＳＭＢ２．１」を利用することを決定する。次いで、サーバ１００Ｃは、Ｔ２７０において、「ＳＭＢ２．１」を含むNegotiate応答をＭＦＰ１０に送信する。Ｔ２８０〜Ｔ２９２は、通信対象がサーバ１００Ｃである点を除いて、図４のＴ１７０〜Ｔ１８２と同様である。
【００４９】
ＭＦＰ１０は、Ｔ２９２において、サーバ１００Ｃからステータス「ＳＵＣＣＥＳＳ」を含むTree Connect応答を受信すると、Ｔ３００において、Ｔ２６４で生成されたＧＵＩＤ「ＸＸＸ１」を含むValidate Negotiate Info要求をサーバ１００Ｃに送信する。Validate Negotiate Info要求は、「ＳＭＢ２．１」及びそれより新しいバージョンにおいて通信される信号であり、Negotiate要求の送信元とValidate Negotiate Info要求の送信元とが同じであるのか否かを検証するための信号である。
【００５０】
サーバ１００Ｃは、Ｔ３００において、ＭＦＰ１０からValidate Negotiate Info要求を受信すると、当該要求内のＧＵＩＤ「ＸＸＸ１」とＴ２６８で記憶されたＧＵＩＤ「ＸＸＸ１」とが一致すると判断し、Negotiate要求の送信元とValidate Negotiate Info要求の送信元とが同じであると判断する。そして、サーバ１００Ｃは、Ｔ３０２において、ステータス「ＳＵＣＣＥＳＳ」を含むValidate Negotiate Info応答をＭＦＰ１０に送信する。
【００５１】
ＭＦＰ１０は、Ｔ３０２において、サーバ１００ＣからValidate Negotiate Info応答を受信すると、当該要求がステータス「ＳＵＣＣＥＳＳ」を含むので、サーバ１００Ｃによる検証が成功したと判断する。そして、ＭＦＰ１０は、Ｔ３０４において、プロファイルテーブル３８内のプロファイル３に対応付けて、ネットワークフォルダパス「\\server3\shared31」、ユーザ名「ＵＵＵ１」、及び、パスワード「ＰＰＰ１」を含むプロファイル情報を登録する。なお、ＭＦＰ１０は、プロファイル３のＳＭＢバージョンに情報を登録しない。Ｔ３１０、Ｔ３１２は、それぞれ、図３のＴ９０、Ｔ９２と同様である。
【００５２】
（ケースＤ；図６）
続いて、図６を参照して、プロファイルテーブル３８（図２参照）のプロファイル４に対応付けてプロファイル情報を登録するケースＤについて説明する。ケースＤでは、サーバ１００Ｄの共有フォルダ「shared41」にスキャンデータを格納させるためのプロファイル情報が登録される。ケースＤは、ケースＣの後の状態であり、プロファイルテーブル３８のプロファイル１〜３にプロファイル情報が登録されている（図５のＴ３０４参照）。また、サーバ１００Ｄ内の認証テーブルには、ユーザ名「ＵＵＵ１」及びパスワード「ＰＰＰ１」が登録済であり、ユーザ名「ＵＵＵ１」には、共有フォルダ「shared41」へのアクセス情報として「ＯＫ」が設定されている。また、ＭＦＰ１０は、ＧＵＩＤ「ＸＸＸ１」を生成済みである（図５のＴ２６４参照）。
【００５３】
まず、ＰＣ６０とＭＦＰ１０との間で図３のＴ１０〜Ｔ４２と同様の処理が実行される。本ケースにおいて、ＰＣ６０のユーザは、プロファイル選択画面Ｄ２（図１２（Ｂ）参照）上のプロファイル４を操作し、設定画面Ｄ３（図１２（Ｃ）参照）の各入力欄に、ネットワークフォルダパス「\\server4\shared41」、ユーザ名「ＵＵＵ１」、及び、パスワード「ＰＰＰ１」を入力する。
【００５４】
ＰＣ６０は、Ｔ４５０において、「プロファイル４」、「\\server4\shared41」、「ＵＵＵ１」、及び、「ＰＰＰ１」を含むテスト接続要求をＭＦＰ１０に送信する。Ｔ４５２、Ｔ４５４は、それぞれ、図５のＴ２５２、Ｔ２５４と同様である。Ｔ４６０、Ｔ４６２、Ｔ４６６は、通信対象がサーバ１００Ｄである点を除いて、それぞれ、Ｔ２６０、Ｔ２６２、Ｔ２６６と同様である。
【００５５】
サーバ１００Ｄは、ＭＦＰ１０とは異なるベンダによって提供されるために、「ＳＭＢ２．１」を利用可能であるにも関わらず、ＧＵＩＤを利用するためのプログラムを備えない。このため、サーバ１００Ｄは、Ｔ４６６において、ＭＦＰ１０からＧＵＩＤ「ＸＸＸ１」を含むNegotiate要求を受信しても、当該ＧＵＩＤを記憶することなく、Ｔ４７０において、「ＳＭＢ２．１」を含むNegotiate要求をＭＦＰ１０に送信する。
【００５６】
Ｔ４８０〜Ｔ５００は、通信対象がサーバ１００Ｄである点を除いて、図５のＴ２８０〜Ｔ３００と同様である。上述のように、サーバ１００Ｄは、ＧＵＩＤを利用するためのプログラムを備えない。このため、サーバ１００Ｄは、Ｔ５００において、ＭＦＰ１０からValidate Negotiate Info要求を受信しても、当該要求を解釈することができない。この場合、サーバ１００Ｄは、Ｔ５０２において、TCP RST信号をＭＦＰ１０に送信する。当該TCP RST信号は、ＭＦＰ１０とのセッションの切断を要求するための信号であり、かつ、サーバ１００ＤがValidate Negotiate Info要求を解釈不可能であることを示す信号である。なお、Negotiate要求、Negotiate応答、Session Setup要求、Session Setup受信、Tree Connect要求、Tree Connect応答、Validate Negotiate Info要求、及び、Validate Negotiate Info応答は、ＯＳＩ参照モデルのアプリケーション層を利用して通信される信号であり、TCP RST信号は、アプリケーション層よりも下位層であるトランスポート層を利用して通信される信号である。
【００５７】
ＭＦＰ１０は、Ｔ５０２において、サーバ１００ＤからTCP RST信号を受信すると、「ＳＭＢ２．１」を利用したサーバ１００Ｄとのテスト接続が失敗したと判断し、Ｔ５１０において、第１接続失敗画面データを含む失敗通知をＰＣ６０に送信する。
【００５８】
ＰＣ６０は、Ｔ５１０において、ＭＦＰ１０から失敗通知を受信すると、Ｔ５１２において、当該通知内の第１接続失敗画面データによって表わされる第１接続失敗画面Ｄ７を表示する。図１３（Ａ）に示されるように、画面Ｄ７は、「ＳＭＢ２．１」を利用したテスト接続が失敗したことを示すメッセージと、「ＳＭＢ２．１」よりも古いバージョンである「ＳＭＢ２．０」でのテスト接続を試行するのか否かを問い合わせるメッセージと、「はい」及び「いいえ」に対応する２個のチェックボックスと、ＯＫボタンと、を含む。このため、ユーザは、より古いバージョンのＳＭＢプロトコルを利用したテスト接続をＭＦＰ１０に実行させるのか否かを選択することができる。ＰＣ６０は、Ｔ５１４において、「はい」に対応するチェックボックスへのチェックの付与を受け付け、ＯＫボタンの操作を受け付けると、Ｔ５１６において、「プロファイル４」、「\\server4\shared41」、「ＵＵＵ１」、及び、「ＰＰＰ１」を含む再テスト接続要求をＭＦＰ１０に送信する。Ｔ５１８、Ｔ５２０は、それぞれ、Ｔ４５２、Ｔ４５４と同様である。
【００５９】
ＭＦＰ１０は、Ｔ５１６において、ＰＣ６０から再テスト接続要求を受信すると、１回目のテスト接続が失敗した「ＳＭＢ２．１」よりも古いバージョンの「ＳＭＢ２．０」を利用した２回目のテスト接続が要求されていると判断し、Ｔ５３０において、「ＳＭＢ２．０」及び「ＳＭＢ１．０」を含むNegotiate要求をサーバ１００Ｄに送信する。即ち、Ｔ５３０で送信されるNegotiate要求は、ＭＦＰ１０が「ＳＭＢ２．１」を利用可能であるにも関わらず、１回目のテスト接続が失敗した「ＳＭＢ２．１」に対応する「ＳＭＢ２．？」を含まない。このため、２回目のテスト接続において「ＳＭＢ２．１」を利用した通信が実行されることを防止することができ、テスト接続が繰り返し失敗する可能性を低減することができる。
【００６０】
サーバ１００Ｄは、Ｔ５３０において、ＭＦＰ１０からNegotiate要求を受信すると、「ＳＭＢ２．０」を利用することを決定し、Ｔ５３２において、「ＳＭＢ２．０」を含むNegotiate応答をＭＦＰ１０に送信する。Ｔ５４０〜Ｔ５６２は、通信対象がサーバ１００Ｄである点を除いて、図４のＴ１７０〜Ｔ１９２と同様である。なお、ＭＦＰ１０は、Ｔ５５４において、プロファイルテーブル３８内のプロファイル４に対応付けて、ネットワークフォルダパス「\\server4\shared41」、ユーザ名「ＵＵＵ１」、パスワード「ＰＰＰ１」、及び、「ＳＭＢ２．０」を含むプロファイル情報を登録する。即ち、プロファイルテーブル３８のＳＭＢバージョンに「ＳＭＢ２．０」が登録される。
【００６１】
（ケースＥ；図７）
続いて、図７を参照して、プロファイルテーブル３８のプロファイル５に対応付けてプロファイル情報を登録するケースＤについて説明する。ケースＥでは、サーバ１００Ｅの共有フォルダ「shared51」にスキャンデータを格納させるためのプロファイル情報が登録される。ケースＥは、ケースＤの後の状態であり、プロファイルテーブル３８のプロファイル１〜４にプロファイル情報が登録されている（図６のＴ５５４参照）。また、サーバ１００Ｅ内の認証テーブルには、ユーザ名「ＵＵＵ１」及びパスワード「ＰＰＰ１」が登録済であり、ユーザ名「ＵＵＵ１」には、共有フォルダ「shared51」へのアクセス情報として「ＯＫ」が設定されている。
【００６２】
まず、ＰＣ６０とＭＦＰ１０との間で図３のＴ１０〜Ｔ４２と同様の処理が実行される。本ケースにおいて、ＰＣ６０のユーザは、プロファイル選択画面Ｄ２（図１２（Ｂ）参照）上のプロファイル５を操作し、設定画面Ｄ３（図１２（Ｃ）参照）の各入力欄に、ネットワークフォルダパス「\\server5\shared51」、ユーザ名「ＵＵＵ１」、及び、パスワード「ＰＰＰ１」を入力する。
【００６３】
ＰＣ６０は、Ｔ６５０において、「プロファイル５」、「\\server5\shared51」、「ＵＵＵ１」、及び、「ＰＰＰ１」を含むテスト接続要求をＭＦＰ１０に送信する。Ｔ６５２〜Ｔ６８０は、通信対象がサーバ１００Ｅである点を除いて、図４のＴ１５２〜Ｔ１８０と同様である。
【００６４】
サーバ１００Ｅは、Ｔ６８０において、ＭＦＰ１０からTree Connect要求を受信すると、Ｔ６７０及びＴ６７２において、ＭＦＰ１０とのセッションの確立が成功しているにも関わらず、Ｔ６８２において、ステータス「USER_SESSION_DELETED」を含むTree Connect応答をＭＦＰ１０に送信する。当該ステータスは、ＭＦＰ１０とサーバ１００Ｅとの間のセッションが切断されたことを示す情報である。なお、このようなTree Connect応答がサーバ１００Ｅから送信される理由としては、例えば、サーバ１００Ｅに実装されているプログラムが不具合を起こしていること、ＭＦＰ１０に実装されているプログラムとサーバ１００Ｅに実装されているプログラムとの間の整合が取れていないこと、Tree Connect要求内のCredit Request数が、サーバ１００Ｅが許容可能なCredit数の上限よりも大きいこと、等を挙げることができる。
【００６５】
ＭＦＰ１０は、Ｔ６８２において、サーバ１００ＥからTree Connect応答を受信すると、当該応答がステータス「USER_SESSION_DELETED」を含むために、「ＳＭＢ２．０」を利用したサーバ１００Ｅとのテスト接続が失敗したと判断し、Ｔ６９０において、第２接続失敗画面データを含む失敗通知をＰＣ６０に送信する。
【００６６】
ＰＣ６０は、Ｔ６９０において、ＭＦＰ１０から失敗通知を受信すると、Ｔ６９２において、当該通知内の第２接続失敗画面データによって表わされる第２接続失敗画面Ｄ８を表示する。図１３（Ｂ）に示されるように、画面Ｄ８は、「ＳＭＢ２．０」を利用したテスト接続が失敗したことを示すメッセージと、「ＳＭＢ２．０」よりも古いバージョンである「ＳＭＢ１．０」でのテスト接続を試行するのか否かを問い合わせるメッセージと、セキュリティ強度の低下が懸念されることを示すメッセージと、「はい」及び「いいえ」に対応する２個のチェックボックスと、ＯＫボタンと、を含む。図１３（Ａ）に示される第１接続失敗画面Ｄ７とは異なり、第２接続失敗画面Ｄ８は、セキュリティ強度の低下が懸念されることを示すメッセージを含む。このため、ユーザは、「ＳＭＢ１．０」を利用することによってセキュリティ強度が低下することを知ることができる。なお、変形例では、第１接続失敗画面Ｄ７も、セキュリティ強度の低下が懸念されることを示すメッセージを含んでいてもよい。ＰＣ６０は、Ｔ６９４において、「はい」に対応するチェックボックスへのチェックの付与を受け付け、ＯＫボタンの操作を受け付けると、Ｔ６９６において、「プロファイル５」、「\\server5\shared51」、「ＵＵＵ１」、及び、「ＰＰＰ１」、及び、「ＳＭＢ１．０」を含む再テスト接続要求をＭＦＰ１０に送信する。Ｔ６９８、Ｔ７００は、それぞれ、Ｔ６５２、Ｔ６５４と同様である
【００６７】
ＭＦＰ１０は、Ｔ６９６において、ＰＣ６０から再テスト接続要求を受信すると、１回目のテスト接続が失敗した「ＳＭＢ２．０」よりも古いバージョンの「ＳＭＢ１．０」を利用した２回目のテスト接続の実行が要求されていると判断し、Ｔ７１０において、「ＳＭＢ１．０」を含むNegotiate要求をサーバ１００Ｅに送信する。即ち、Ｔ７１０で送信されるNegotiate要求は、ＭＦＰ１０が「ＳＭＢ２．０」、「ＳＭＢ２．１」、及び、「ＳＭＢ３．０」を利用可能であるにも関わらず、１回目のテスト接続が失敗した「ＳＭＢ２．０」と、それより新しい「ＳＭＢ２．？」と、を含まない。このため、２回目のテスト接続において「ＳＭＢ２．０」を利用した通信が実行されることを防止することができ、テスト接続が失敗する可能性を低減することができる。
【００６８】
サーバ１００Ｅは、Ｔ７１０において、ＭＦＰ１０からNegotiate要求を受信すると、「ＳＭＢ１．０」を利用することを決定し、Ｔ７１２において、「ＳＭＢ１．０」を含むNegotiate応答をＭＦＰ１０に送信する。Ｔ７２０〜Ｔ７４２は、通信対象がサーバ１００Ｅである点を除いて、図３のＴ７０〜Ｔ９２と同様である。なお、ＭＦＰ１０は、Ｔ７３４において、プロファイルテーブル３８内のプロファイル５に対応付けて、ネットワークフォルダパス「\\server5\shared51」、ユーザ名「ＵＵＵ１」、パスワード「ＰＰＰ１」、及び、「ＳＭＢ１．０」を含むプロファイル情報を登録する。
【００６９】
（ケースＦ；図８）
続いて、図８を参照して、ＭＦＰ１０がスキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能を実行するケースＦについて説明する。ケースＦは、ケースＥの後の状態であり、ＭＦＰ１０のプロファイルテーブル３８（図２参照）のプロファイル１〜５にプロファイル情報が登録されている（図７のＴ７３４参照）。
【００７０】
ＭＦＰ１０は、Ｔ８００において、画面表示操作を操作部１２によって受け付けると、Ｔ８０２において、機能選択画面Ｄ１１を表示する。図１４（Ａ）に示されるように、画面Ｄ１１は、Ｃｏｐｙボタンと、Ｓｃａｎボタンと、設定ボタンと、を含む。Ｃｏｐｙボタンは、コピー機能の利用を選択するためのボタンであり、Ｓｃａｎボタンは、スキャン機能の利用を選択するためのボタンであり、設定ボタンは、ＭＦＰ１０のネットワーク設定等を実行するためのボタンである。
【００７１】
ＭＦＰ１０は、Ｔ８０４において、Ｓｃａｎボタンへの操作を受け付けると、Ｔ８０６において、送信先選択画面Ｄ１２を表示する。図１４（Ｂ）に示されるように、画面Ｄ１２は、「To e-mail」ボタンと、「To Network」ボタンと、「To USB」ボタンと、を含む。「To e-mail」ボタンは、スキャンデータが添付された電子メールを送信することを選択するためのボタンである。「To Network」ボタンは、スキャンデータをネットワーク上のサーバに送信することを選択するためのボタン、即ち、スキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能の実行を選択するためのボタンでもある。「To USB」ボタンは、スキャンデータをＵＳＢに送信するためのボタンである。
【００７２】
ＭＦＰ１０は、Ｔ８０８において、「To Network」ボタンへの操作を受け付けると、Ｔ８１０において、プロファイル選択画面Ｄ１３を表示する。図１４（Ｃ）に示されるように、画面Ｄ１３は、プロファイル情報が登録済みであるプロファイル１〜５を含む。ＭＦＰ１０は、Ｔ８１２において、プロファイル５への操作を受け付けると、Ｔ８１４において、プロファイル５を含む近接スキャン指示を取得し、Ｔ８１６において、ＭＦＰ１０にセットされている原稿のスキャンを開始し、Ｔ８１８において、スキャン画面Ｄ１４を表示する。図１４（Ｄ）に示されるように、画面Ｄ１４は、原稿のスキャンを実行中であることを示すメッセージを含む。ＭＦＰ１０は、Ｔ８２０において、スキャンデータの生成が完了すると、Ｔ８２２において、データ送信画面Ｄ１５を表示する。図１４（Ｅ）に示されるように、画面Ｄ１５は、スキャンデータを送信中であることを示すメッセージを含む。
【００７３】
ＭＦＰ１０は、プロファイルテーブル３８において、プロファイル５のＳＭＢバージョンに「ＳＭＢ１．０」が記憶されていること、及び、プロファイル５のネットワークフォルダパスがサーバ１００Ｅのサーバ名「server5」を含むことを特定する。そして、ＭＦＰ１０は、Ｔ８３０において、ＳＭＢ「２．？」及び「ＳＭＢ２．０」を含まず、かつ、特定済みのＳＭＢ「１．０」のみを含むNegotiate要求を特定済みのサーバ１００Ｅに送信する。その後のＴ８３２〜Ｔ８５２は、図７のＴ７１２〜Ｔ７３２と同様である。これにより、スキャンデータをサーバ１００Ｅに送信可能な状態となる。
【００７４】
Ｔ８６０において、ＭＦＰ１０とサーバ１００Ｅとの間でスキャンデータ送信処理が実行され、ＭＦＰ１０からサーバ１００Ｅにスキャンデータが送信される。ＭＦＰ１０側から見ると、スキャンデータ送信処理は、Create File要求の送信、その応答の受信、Write File要求の送信、その応答の受信を含む。これにより、サーバ１００Ｅは、スキャンデータを受信し、Ｔ８６２において、共有フォルダ「shared51」にスキャンデータを保存する。
【００７５】
ＭＦＰ１０は、サーバ１００Ｅとのスキャンデータ送信処理が完了すると、完了画面Ｄ１６を表示する。図１４（Ｆ）に示されるように、画面Ｄ１６は、サーバ１００Ｅへのスキャンデータの送信が終了したことを示すメッセージを含む。これにより、ユーザは、サーバ１００Ｅ内の共有フォルダ「shared51」にスキャンデータが保存されたことを知ることができる。その後、ユーザは、例えばＰＣ６０を利用して、フォルダ「shared51」にアクセスすることによって、スキャンデータを利用することができる。
【００７６】
仮に、図７のＴ７３４において「ＳＭＢ１．０」が記憶されない場合、ＭＦＰ１０は、Ｔ８３０において、バージョン情報として「ＳＭＢ２．？」、「ＳＭＢ２．０」、及び、「ＳＭＢ１．０」を含むNegotiate要求をサーバ１００Ｅに送信する。この場合、ＭＦＰ１０とサーバ１００Ｅとの間で「ＳＭＢ２．０」を利用した通信（Ｔ６７０〜Ｔ６８２）が実行される。即ち、ＭＦＰ１０は、サーバ１００Ｅからステータス「USER_SESSION_DELETED」を含むTree Connect応答を受信するために、共有フォルダ「shared51」にアクセスすることができず、スキャンデータをサーバ１００Ｅに送信しない。一方、本実施例では、図７のＴ７３４において「ＳＭＢ１．０」が記憶されている。この場合、ＭＦＰ１０は、Ｔ８３０において、「ＳＭＢ１．０」のみを含むNegotiate要求をサーバ１００Ｅに送信する。このため、ＭＦＰ１０とサーバ１００Ｅとの間で「ＳＭＢ１．０」を利用した通信（Ｔ８４０〜Ｔ８５２）が実行される。従って、ＭＦＰ１０は、サーバ１００Ｅの共有フォルダ「shared51」にアクセスすることができ、スキャンデータをサーバ１００Ｅに送信する。この結果、サーバ１００Ｅの共有フォルダ「shared51」にスキャンデータが保存される。従って、ＭＦＰ１０は、プロファイルテーブル３８にＳＭＢプロトコルのバージョンを記憶することで、サーバ１００Ｅとの通信を適切に実行することができる。
【００７７】
また、仮に、Ｔ８１２でプロファイル４が操作される場合、ＭＦＰ１０は、プロファイル４を含む近接スキャン指示を取得し、プロファイルテーブル３８において、プロファイル４のＳＭＢバージョンに「ＳＭＢ２．０」が記憶されていることを特定し、特定済みの「ＳＭＢ２．０」のみを含むNegotiate要求をサーバ１００Ｄに送信する。その後、ＭＦＰ１０とサーバ１００Ｄとの間で図６のＴ５３２〜Ｔ５５２及びＴ８６０と同様の処理が実行され、サーバ１００Ｄ内の共有フォルダ「shared41」にスキャンデータが保存される。従って、ＭＦＰ１０は、サーバ１００Ｄ、１００Ｅのそれぞれに適したバージョンのＳＭＢプロトコルを利用して、スキャンデータを共有フォルダに適切に格納させることができる。
【００７８】
（ケースＧ；図９）
続いて、図９を参照して、ＭＦＰ１０のウェブサーバに対するアクセスが実行されることによって、スキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能の実行が要求されるケースＧについて説明する。図９の初期状態は、図８の初期状態と同様である。
【００７９】
Ｔ９００〜Ｔ９２６は、図３のＴ１０〜Ｔ２６と同様である。ＰＣ６０は、Ｔ９３０において、プロファイル５への操作を受け付けると、Ｔ９３２において、スキャン選択画面データ要求をＭＦＰ１０に送信し、Ｔ９３４において、ＭＦＰ１０からスキャン選択画面データを受信し、Ｔ９３６において、スキャン選択画面Ｄ６を表示する。図１２（Ｅ）に示されるように、画面Ｄ６は、テスト接続ボタンの代わりにＳｃａｎボタンが表示される点を除いて、設定画面Ｄ３と同様である。ＰＣ６０は、Ｔ９４０において、Ｓｃａｎボタンへの操作を受け付けると、Ｔ９４２において、プロファイル５を含む遠隔スキャン指示をＭＦＰ１０に送信する。
【００８０】
ＭＦＰ１０は、Ｔ９４２において、ＰＣ６０から遠隔スキャン指示を受信すると、プロファイルテーブル３８において、当該指示内のプロファイル５のＳＭＢバージョンに「ＳＭＢ１．０」が記憶されていること、及び、プロファイル５のネットワークフォルダパスがサーバ１００Ｅのサーバ名「server5」を含むことを特定する。本ケースでは、ＭＦＰ１０は、ＳＭＢバージョンが「ＳＭＢ１．０」であるために、スキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能の実行を中止する。そして、ＭＦＰ１０は、Ｔ９４４において、エラー画面データをＰＣ６０に送信する。
【００８１】
ＰＣ６０は、Ｔ９４４において、ＭＦＰ１０からエラー画面データを受信すると、Ｔ９４６において、エラー画面を表示する。これにより、ユーザは、ＰＣ６０を利用したスキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能が制限されていることを知ることができる。
【００８２】
ケースＦ、Ｇに示されるように、ＭＦＰ１０は、プロファイルテーブル３８内のＳＭＢバージョンに「ＳＭＢ１．０」が記憶されている状態において、近接スキャン指示が取得される場合に、スキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能を実行し、遠隔スキャン指示が取得される場合に、スキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能を実行しない。従って、遠隔スキャン指示が取得される場合に、セキュリティ強度の低い「ＳＭＢ１．０」を利用した通信が実行されることを抑制することができる。
【００８３】
（接続処理；図１０）
続いて、図１０を参照して、ＭＦＰ１０のＣＰＵ３２によって実行される接続処理について説明する。ユーザによってＭＦＰ１０の電源がＯＮされると、図１０の処理が開始される。
【００８４】
Ｓ１０において、ＣＰＵ３２は、ＰＣからテスト接続要求を受信することを監視する。ＣＰＵ３２は、ＰＣからテスト接続要求が受信される場合（Ｓ１０でＹＥＳ）に、Ｓ１２に進む。テスト接続要求は、プロファイル名、ネットワークフォルダパス、ユーザ名、及び、パスワードを含む。
【００８５】
Ｓ１２において、ＣＰＵ３２は、テスト接続処理（図１１）を実行する。テスト接続処理は、サーバ内の共有フォルダにアクセス可能であるのか否かを確認するテスト接続を実行する処理である。Ｓ１２が終了すると、図１０の処理を終了する。
【００８６】
また、ＣＰＵ３２は、Ｓ１０の監視と並行して、Ｓ２０の監視を実行する。Ｓ２０において、ＣＰＵ３２は、プロファイル名を含むスキャン指示を取得することを監視する。以下では、スキャン指示内のプロファイル名を、「スキャンプロファイル名」と呼ぶ。
【００８７】
Ｓ２２において、ＣＰＵ３２は、スキャン指示が遠隔スキャン指示であるのか否かを判断する。ＣＰＵ３２は、スキャン指示が遠隔スキャン指示である場合（Ｓ２２でＹＥＳ、図９のケースＧ）に、Ｓ２４に進む。一方、ＣＰＵ３２は、スキャン指示が近接スキャン指示である場合（Ｓ２２でＮＯ、図８のケースＦ）に、Ｓ３０に進む。
【００８８】
Ｓ２４において、ＣＰＵ３２は、プロファイルテーブル３８において、スキャンプロファイル名のＳＭＢバージョンが「ＳＭＢ１．０」であるのか否かを判断する。ＣＰＵ３２は、ＳＭＢバージョンが「ＳＭＢ１．０」である場合（Ｓ２４でＹＥＳ）に、Ｓ２６に進み、Ｓ２６において、エラー処理を実行する。ＣＰＵ３２は、エラー処理において、スキャン＿ｔｏ＿Ｎｅｔｗｏｒｋ機能を実行することなく、エラー画面データを遠隔スキャン指示の送信元の機器に送信する。Ｓ２６が終了すると、図１０の処理を終了する。
【００８９】
一方、ＣＰＵ３２は、スキャンプロファイル名のＳＭＢバージョンが「ＳＭＢ２．０」以上、又は、空である場合（Ｓ２４でＮＯ）に、Ｓ３０に進む。Ｓ３０において、ＣＰＵ３２は、ＭＦＰ１０にセットされている原稿をスキャンするスキャン処理を実行する。
【００９０】
Ｓ３２において、ＣＰＵ３２は、プロファイルテーブル３８のスキャンプロファイル名に対応するネットワークフォルダパスの共有フォルダにアクセスするためのサーバ接続処理を実行する。サーバ接続処理は、Negotiate処理、Session Setup処理、及び、Tree Connect処理を含む。また、サーバ接続処理は、Negotiate処理において「ＳＭＢ２．１」以上のバージョンが利用されることが決定される場合に、Validate処理を含む。
【００９１】
Ｓ３４において、ＣＰＵ３２は、スキャンデータをサーバに送信する。これにより、スキャンデータが、サーバ内の共有フォルダに保存される。Ｓ３４が終了すると、図１０の処理を終了する。
【００９２】
（テスト接続処理；図１１）
続いて、図１１を参照して、図１０のＳ１２で実行されるテスト接続処理について説明する。なお、以下では、テスト接続要求の送信元のＰＣ、ＭＦＰ１０との通信が実行されるサーバを、それぞれ、「対象ＰＣ」、「対象サーバ」と呼ぶ。
【００９３】
ＣＰＵ３２は、Ｓ５０において、対象サーバとのNegotiate処理を実行し、Ｓ５２において、Negotiate処理が成功したのか否かを判断する。ＣＰＵ３２は、対象サーバにNegotiate要求を送信することに応じて、対象サーバからNegotiate応答が受信される場合に、Negotiate処理が成功したと判断し（Ｓ５２でＹＥＳ）、Ｓ６０に進む。一方、ＣＰＵ３２は、対象サーバからTCP RST信号が受信される場合に、Negotiate処理が失敗したと判断し（Ｓ５２でＮＯ）、図１１の処理を終了する。
【００９４】
ＣＰＵ３２は、Ｓ６０において、対象サーバとのSession Setup処理を実行し、Ｓ６２において、Session Setup処理が成功したのか否かを判断する。ＣＰＵ３２は、Session Setup処理において、対象サーバにSession Setup要求を送信することに応じて、対象サーバから、ステータス「ＳＵＣＣＥＳＳ」を含むSession Setup応答が受信される場合に、Session Setup処理が成功したと判断し（Ｓ６２でＹＥＳ）、Ｓ７０に進む。一方、ＣＰＵ３２は、ステータス「ＳＵＣＣＥＳＳ」以外のステータス（例えば、「STATUS_LOGON_FAILURE」）を含むSession Setup応答又はTCP RST信号が受信される場合に、Session Setup処理が失敗したと判断し（Ｓ６２でＮＯ）、Ｓ１００に進む。
【００９５】
ＣＰＵ３２は、Ｓ７０において、対象サーバとのTree Connect処理を実行し、Ｓ７２において、Tree Connect処理が成功したのか否かを判断する。ＣＰＵ３２は、Tree Connect処理において、対象サーバにTree Connect要求を送信することに応じて、対象サーバからTree Connect応答が受信される場合に、Tree Connect処理が成功したと判断し（Ｓ７２でＹＥＳ）、Ｓ８０に進む。一方、ＣＰＵ３２は、Tree Connect処理において、ステータス「ＳＵＣＣＥＳＳ」以外のステータス（例えば、「BAD_NETWORK_NAME」）を含むTree Connect応答が受信される場合に、Tree Connect処理が失敗したと判断し（Ｓ７２でＮＯ）、Ｓ１００に進む。
【００９６】
Ｓ８０において、ＣＰＵ３２は、Ｓ５０のNegotiate処理で決定されたＳＭＢプロトコルのバージョンが「ＳＭＢ２．１」以上であるのか否かを判断する。ＣＰＵ３２は、決定済みのバージョンが「ＳＭＢ２．１」以上である場合（Ｓ８０でＹＥＳ）に、Ｓ８２に進み、決定済みのバージョンが「ＳＭＢ２．０」以下である場合（Ｓ８０でＮＯ）に、Ｓ８２、Ｓ８４をスキップして、Ｓ９０に進む。
【００９７】
ＣＰＵ３２は、Ｓ８２において、対象サーバとのValidate処理を実行し、Ｓ８４において、Validate処理が成功したのか否かを判断する。ＣＰＵ３２は、Validate処理において、対象サーバにValidate Negotiate Info要求を送信することに応じて、対象サーバからValidate Negotiate Info応答が受信される場合に、Validate処理が成功したと判断し（Ｓ８４でＹＥＳ）、Ｓ９０に進む。一方、ＣＰＵ３２は、対象サーバからTCP RST信号が受信される場合に、Validate処理が失敗したと判断し（Ｓ８４でＮＯ）、Ｓ１０２に進む。
【００９８】
Ｓ９０において、ＣＰＵ３２は、プロファイル登録を実行する。ＣＰＵ３２は、プロファイルテーブル３８において、テスト接続要求内のプロファイル名に対応付けて、テスト接続要求内のネットワークフォルダパス、ユーザ名、及び、パスワードを含むプロファイル情報を登録する。
【００９９】
また、Ｓ１００において、ＣＰＵ３２は、Session Setup処理又はTree Connect処理の失敗が、再テスト接続対象の失敗であるのか否かを判断する。まず、Ｓ６２でＮＯと判断された場合について説明する。ＣＰＵ３２は、TCP RST信号を受信することによってＳ６２でＮＯと判断された場合に、再テスト接続対象の失敗であると判断し（Ｓ１００でＹＥＳ）、Ｓ１０２に進む。一方、ＣＰＵ３２は、ステータス「ＳＵＣＣＥＳＳ」以外のステータス（例えば、「STATUS_LOGON_FAILURE」）を含むSession Setup応答を受信することによってＳ６２でＮＯと判断された場合に、再テスト接続対象の失敗ではないと判断し（Ｓ１００でＮＯ）、図１１の処理を終了する。ステータス「STATUS_LOGON_FAILURE」は、ログイン名、又は、パスワードの入力が誤っている場合に通知されるエラーである。
【０１００】
次いで、Ｓ７２でＮＯと判断された場合について説明する。ＣＰＵ３２は、ステータス「INVALID_PARAMETER」、「USER_SESSION_DELETED」、又は、「ACCESS_DENIED」を含むTree Connect応答を受信することによってＳ７２でＮＯと判断された場合に、再テスト接続対象の失敗であると判断し（Ｓ１００でＹＥＳ）、Ｓ１０２に進む。一方、ＣＰＵ３２は、ステータス「BAD_NETWORK_NAME」を含むTree Connect応答を受信することによってＳ７２でＮＯと判断された場合に、再テスト接続対象の失敗ではないと判断し（Ｓ１００でＮＯ）、図１１の処理を終了する。ステータス「BAD_NETWORK_NAME」は、ネットワークフォルダパスの入力が誤っている場合に通知されるエラーである。
【０１０１】
換言すると、Ｓ１００でＮＯと判断される失敗は、ユーザの入力ミスなどに起因する失敗であり、ユーザが対処することが可能である。一方、Ｓ１００でＹＥＳと判断される失敗は、ユーザの入力ミス以外に起因する失敗である。この場合、ユーザ自身が対処することは困難である。従って、ユーザが対処することが困難な場合に、再テスト接続を実行させることで、ユーザの利便性を向上させることができる。
【０１０２】
Ｓ１０２において、ＣＰＵ３２は、失敗通知を対象ＰＣに送信する。Ｓ１０４において、ＣＰＵ３２は、対象ＰＣから再テスト接続要求を受信したのか否かを判断する。ＣＰＵ３２は、対象ＰＣから再テスト接続要求が受信される場合（Ｓ１０４でＹＥＳ）に、Ｓ１０６に進む。一方、ＣＰＵ３２は、対象ＰＣからテスト接続中止要求が受信される場合（Ｓ１０４でＮＯ）に、図１１の処理を終了する。
【０１０３】
Ｓ１０６において、ＣＰＵ３２は、対象サーバとのテスト接続で利用されたＳＭＢプロトコルのバージョンよりも１つだけ古いバージョンを、対象サーバとの再テスト接続に利用するＳＭＢプロトコルのバージョンとして決定し、Ｓ５０に戻る。この場合、Ｓ５０のNegotiate処理において、ＣＰＵ３２は、Ｓ１０６で決定したＳＭＢプロトコルのバージョン以下のバージョンを含むNegotiate要求を対象サーバに送信する。なお、Ｓ１０６を経た後のＳ９０において、ＣＰＵ３２は、プロファイルテーブル３８において、テスト接続要求内のプロファイル名に対応付けて、Ｓ１０６で決定したＳＭＢプロトコルのバージョンを登録する。
【０１０４】
（本実施例の効果）
本実施例では、ＭＦＰ１０は、サーバ１００Ｅから、「ＳＭＢ２．０」を含むNegotiate応答を受信すると、「ＳＭＢ２．０」を利用したサーバ１００Ｅとの通信（Session Setup処理、Tree Connect処理）を実行する。当該通信において、ＭＦＰ１０は、サーバ１００Ｅからステータス「USER_SESSION_DELETED」を含むTree Connect応答を受信する場合（Ｓ７２でＮＯ）に、「ＳＭＢ１．０」を含むNegotiate要求をサーバ１００Ｅに送信する（Ｓ１０６を経た後のＳ５０）。そして、ＭＦＰ１０は、サーバ１００Ｅから、「ＳＭＢ１．０」を含むNegotiate応答を受信すると、「ＳＭＢ２．０」よりも古いバージョンである「ＳＭＢ１．０」を利用したサーバ１００Ｅとの通信（Session Setup処理、Tree Connect処理）を実行する。この場合、当該通信において、ＭＦＰ１０が、サーバ１００Ｅからステータス「USER_SESSION_DELETED」を含むTree Connect応答を受信しない可能性が高くなり得る。従って、ＭＦＰ１０は、ネゴシエーションが正常に実行されたにも関わらず、サーバ１００Ｅからステータス「USER_SESSION_DELETED」を含むTree Connect応答が受信される場合に、サーバ１００Ｅとの通信を適切に実行し得る。
【０１０５】
（対応関係）
ＭＦＰ１０、ＰＣ６０が、それぞれ、「通信装置」、「第３の外部装置」の一例である。ＳＭＢプロトコルが、「所定の通信プロトコル」の一例である。プロファイル情報（フォルダパス、ユーザ名、パスワード）が、「第１の設定情報」の一例である。共有フォルダ「shared51」のネットワークフォルダパス、サーバ１００Ｅの認証テーブル内のユーザ名、パスワードが、「第２の設定情報」の一例である。プロファイル５を含むスキャン指示、プロファイル４を含むスキャン指示が、それぞれ、「第１の指示」、「第２の指示」の一例である。テスト接続要求、再テスト接続要求が、それぞれ、「通信要求」、「許可通知」の一例である。第１接続失敗画面Ｄ７及び第２接続失敗画面Ｄ８が、「バージョン選択画面」の一例である。
【０１０６】
１つの側面では、サーバ１００Ｄ及びサーバ１００Ｅが、「第１の外部装置」の一例である。図６のＴ４６０及び図７のＴ６６０のNegotiate要求が、「第１のネゴシエーション要求」の一例である。図６のＴ５０２のTCP RST信号、及び、図７のＴ６８２のステータス「USER_SESSION_DELETED」を含む応答が、「エラー通知」の一例である。図６のＴ５３０及び図７の７１０のNegotiate要求が、「第２のネゴシエーション要求」の一例である。ＳＭＢ１．０又はＳＭＢ２．０が、「第１のバージョン」の一例である。ＳＭＢ２．０又はＳＭＢ２．１が、「第２のバージョン」の一例である。
【０１０７】
図６のＴ４６０又は図７のＴ６６０が、「第１の要求送信部」で実行される処理の一例である。図６のＴ４８０〜Ｔ５０２及び図７のＴ６７０〜Ｔ６８２が、「第１の通信実行部」で実行される処理の一例である。図６のＴ５３０及び図７のＴ７１０が、「第２の要求送信部」で実行される処理の一例である。図６のＴ５４０〜Ｔ５５２及び図７のＴ７２０〜Ｔ７３２が、「第２の通信実行部」で実行される処理の一例である。
【０１０８】
別の側面では、サーバ１００Ｄ、サーバ１００Ｅが、それぞれ、「第１の外部装置」、「第２の外部装置」の一例である。ＳＭＢ１．０、ＳＭＢ２．０、ＳＭＢ２．１が、それぞれ、「第１のバージョン」、「第２のバージョン」、「第３のバージョン」の一例である。図７のＴ６６０のNegotiate要求、図７の７１０のNegotiate要求、図８のＴ８３０のNegotiate要求、図６のＴ５３０のNegotiate要求が、それぞれ、「第１のネゴシエーション要求」、「第２のネゴシエーション要求」、「第３のネゴシエーション要求」、「第４のネゴシエーション要求」の一例である。「ＳＭＢ２．０」のみを含むNegotiate要求が、「第５のネゴシエーション要求」の一例である。
【０１０９】
図７のＴ６６０が、「第１の要求送信部」で実行される処理の一例である。図７のＴ６７０〜Ｔ６８２が、「第１の通信実行部」で実行される処理の一例である。図７のＴ７１０が、「第２の要求送信部」で実行される処理の一例である。図７のＴ７２０〜Ｔ７３２が、「第２の通信実行部」で実行される処理の一例である。
【０１１０】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【０１１１】
（変形例１）Negotiate要求に含まれるバージョン情報内の各バージョンに優先順位が対応付けられていてもよい。本変形例では、Negotiate要求を受信したサーバは、各バージョンの優先順位に基づいて、ＭＦＰ１０との通信に利用するＳＭＢプロトコルのバージョンを決定する。例えば、図７のＴ６６０のNegotiate要求において、「ＳＭＢ２．？」、「ＳＭＢ２．０」、「ＳＭＢ１．０」の順に優先順位が設定されている状況を想定する。この場合、サーバ１００Ｅは、優先順位が最上位の「ＳＭＢ２．？」は利用不可能であると判断し、次に優先順位の高い「ＳＭＢ２．０」を利用可能であると判断し、「ＳＭＢ２．０」を利用してＭＦＰ１０との通信を実行することを決定する。そして、ＭＦＰ１０は、Ｔ６９６において、ＰＣ６０から再テスト接続要求を受信すると、「ＳＭＢ２．１」を利用したサーバ１００Ｄとのテスト接続が失敗したと判断し、「ＳＭＢ２．０」よりも古いバージョンである「ＳＭＢ１．０」の優先順位を最上位に変更し、変更後の優先順位が対応付けられているバージョン情報を含むNegotiate要求をサーバ１００Ｅに送信する。即ち、本変形例では、Ｔ７１０のNegotiate要求が、ＳＭＢ「２．？」、「ＳＭＢ２．０」、及び、「ＳＭＢ１．０」を含む。この場合、サーバ１００Ｅは、優先順位が最上位の「ＳＭＢ１．０」を利用可能であると判断し、「ＳＭＢ１．０」を利用してＭＦＰ１０との通信を実行することを決定する。その後、ＭＦＰ１０とサーバ１００Ｅとの間に、Ｔ７１０〜Ｔ７４２と同様の処理が実行される。このような構成によっても、実施例と同様の効果を奏することができる。
【０１１２】
（変形例２）ＣＰＵ３２は、図１１のテスト接続処理において、失敗の理由に関わらず、失敗通知を対象ＰＣに送信してもよい。本変形例では、Ｓ１００を省略可能である。
【０１１３】
（変形例３）図１１のＳ１０６を経た後のＳ９０において、ＣＰＵ３２は、ＳＭＢバージョンを登録しなくてもよい。即ち、本変形例では、プロファイルテーブル３８のプロファイル情報に、ＳＭＢバージョンが含まれない。この場合、図８のケースＦにおいて、ＭＦＰ１０とサーバ１００Ｅとの間に、Ｔ８３０〜Ｔ８５２の処理の代わりに、図７のＴ６６０〜Ｔ６８２、及び、Ｔ７１０〜Ｔ７３２と同様の処理が実行され、その後に、Ｔ８６０〜Ｔ８６４が実行される。即ち、「第１の記憶制御部」、「第３の要求送信部」、「第２の記憶制御部」、及び、「第５の要求送信部」を省略可能である。
【０１１４】
（変形例４）図１０のＳ２２〜Ｓ２６を省略可能である。即ち、ＣＰＵ３２は、スキャン指示が取得される場合に、Ｓ３０~Ｓ３４の処理を実行してもよい。
【０１１５】
（変形例５）図１１のテスト接続処理において、ＣＰＵ３２は、Ｓ１００でＹＥＳと判断される場合に、接続失敗画面データを含む失敗通知を対象ＰＣに送信しなくてもよい。本変形例では、ＣＰＵ３２は、対象ＰＣから、再テスト接続要求を受信することなく、Ｓ１０６の処理を実行する。本変形例では、Ｓ１０２、Ｓ１０４を省略可能である。即ち、「画面データ送信部」を省略可能である。
【０１１６】
（変形例６）第２接続失敗画面Ｄ８において、セキュリティ強度の低下が懸念されることを示すメッセージが表示されなくてもよい。
【０１１７】
（変形例７）「第１の外部装置」は、サーバに限定されず、ＰＣ等、共有フォルダを作成可能なコンピュータであればよい。
【０１１８】
（変形例８）「通信装置」は、複数の機能を実行可能なＭＦＰ１０でなくてもよく、スキャン機能のみを実行可能なスキャナ装置であってもよい。
【０１１９】
（変形例９）上記の実施例では、制御部３０によって実行される各処理がソフトウェア（即ちプログラム３６）によって実現されるが、これらの各処理のうちの少なくとも１つが論理回路等のハードウェアによって実現されてもよい。
【０１２０】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【０１２１】
２：通信システム、１０：ＭＦＰ、１２：操作部、１４：表示部、１６：印刷実行部、１８：スキャン実行部、２０：通信Ｉ／Ｆ、３０：制御部、３２：ＣＰＵ、３４：メモリ、３６：プログラム、３８：プロファイルテーブル、４０：ＩＰアドレス、１００Ａ〜１００Ｅ：サーバ、１１０Ａ：認証テーブル
【図１】
2020053767.tif 000003
【図２】
2020053767.tif 000004
【図３】
2020053767.tif 000005
【図４】
2020053767.tif 000006
【図５】
2020053767.tif 000007
【図６】
2020053767.tif 000008
【図７】
2020053767.tif 000009
【図８】
2020053767.tif 000010
【図９】
2020053767.tif 000011
【図１０】
2020053767.tif 000012
【図１１】
2020053767.tif 000013
【図１２】
2020053767.tif 000014
【図１３】
2020053767.tif 000015
【図１４】
2020053767.tif 000016