(57)【特許請求の範囲】
【請求項１】
ネットワークに接続される通信装置であって、
前記ネットワークに送信される少なくとも１個の送信フレームを記憶するための送信バッファであって、第１の記憶容量を有する前記送信バッファと、
前記ネットワークから受信される少なくとも１個の受信フレームを記憶するための受信バッファであって、前記第１の記憶容量と異なる第２の記憶容量を有する前記受信バッファと、
前記第１の記憶容量に応じて、１個の送信フレームに含まれる送信対象データのデータサイズとして許容される最大データサイズである送信用最大データサイズを決定すると共に、前記第２の記憶容量に応じて、１個の受信フレームに含まれる受信対象データのデータサイズとして許容される最大データサイズである受信用最大データサイズを決定する決定部であって、前記送信用最大データサイズと前記受信用最大データサイズとは異なる値を有する、前記決定部と、
前記送信用最大データサイズを用いて、送信対象の送信フレームのための送信処理を実行すると共に、前記受信用最大データサイズを用いて、受信対象の受信フレームのための受信処理を実行する処理実行部と、を備え、
前記決定部は、
前記送信バッファが記憶可能な１個の送信フレームの最大データサイズである送信用最大フレームサイズであって、前記第１の記憶容量に応じて決定される前記送信用最大フレームサイズを取得すると共に、前記受信バッファが記憶可能な１個の受信フレームの最大データサイズである受信用最大フレームサイズであって、前記第２の記憶容量に応じて決定される前記受信用最大フレームサイズを取得する第１の取得部と、
ユーザによって指定されるデータサイズである指定データサイズを取得する第２の取得部と、を備え、
前記受信用最大フレームサイズと前記送信用最大フレームサイズとは、異なる値を有し、
前記送信用最大フレームサイズ及び前記受信用最大フレームサイズの少なくとも一方は、前記指定データサイズ以上であり、
前記決定部は、前記送信用最大フレームサイズと、前記受信用最大フレームサイズと、前記指定データサイズと、の関係に基づいて、前記送信用最大データサイズ及び前記受信用最大データサイズの少なくとも一方を決定する、通信装置。
【請求項２】
前記送信用最大データサイズは、前記１個の送信フレームに含まれるアプリケーションデータのデータサイズとして許容される最大データサイズである送信用ＭＳＳであり、
前記受信用最大データサイズは、前記１個の受信フレームに含まれるアプリケーションデータのデータサイズとして許容される最大データサイズである受信用ＭＳＳである、請求項１に記載の通信装置。
【請求項３】
前記送信用最大データサイズは、前記１個の送信フレームに含まれるＩＰパケットのデータサイズとして許容される最大データサイズである送信用ＭＴＵであり、
前記受信用最大データサイズは、前記１個の送信フレームに含まれるＩＰパケットのデータサイズとして許容される最大データサイズである受信用ＭＴＵである、請求項１に記載の通信装置。
【請求項４】
前記受信用最大フレームサイズ＞前記送信用最大フレームサイズの関係と、
前記受信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記指定データサイズ＞前記送信用最大フレームサイズである場合に、
前記送信用最大フレームサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＳＳとして決定し、
前記指定データサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＳＳとして決定する、請求項１に記載の通信装置。
【請求項５】
前記受信用最大フレームサイズ＞前記送信用最大フレームサイズの関係と、
前記受信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記指定データサイズ＞前記送信用最大フレームサイズである場合に、
前記送信用最大フレームサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＴＵとして決定し、
前記指定データサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＴＵとして決定する、請求項１に記載の通信装置。
【請求項６】
前記受信用最大フレームサイズ＞前記送信用最大フレームサイズの関係と、
前記受信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記送信用最大フレームサイズ≧前記指定データサイズである場合に、
前記指定データサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＴＵとして決定し、
前記受信用最大フレームサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＴＵとして決定する、請求項１に記載の通信装置
【請求項７】
前記受信用最大フレームサイズ＞前記送信用最大フレームサイズの関係と、
前記受信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記指定データサイズ＞前記送信用最大フレームサイズである場合に、
前記送信用最大フレームサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＴＵとして決定し、
前記受信用最大フレームサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＴＵとして決定する、請求項１又は６に記載の通信装置。
【請求項８】
前記決定部は、さらに、
前記送信用最大フレームサイズに応じて決定される送信用高効率フレームサイズと、前記受信用最大フレームサイズに応じて決定される受信用高効率フレームサイズと、を取得する第３の取得部を備え、
前記送信用高効率フレームサイズに一致するデータサイズを有する送信フレームのための前記送信処理の効率は、前記送信用最大フレームサイズに一致するデータサイズを有する送信フレームのための前記送信処理の効率以上であり、
前記受信用高効率フレームサイズに一致するデータサイズを有する受信フレームのための前記受信処理の効率は、前記受信用最大フレームサイズに一致するデータサイズを有する受信フレームのための前記受信処理の効率よりも高く、
前記受信用最大フレームサイズ＞前記受信用高効率フレームサイズ＞前記送信用最大フレームサイズ≧前記送信用高効率フレームサイズの関係と、
前記受信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記受信用高効率フレームサイズ≧前記指定データサイズ＞前記送信用高効率フレームサイズである場合に、
前記送信用高効率フレームサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＳＳとして決定し、
前記指定データサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＳＳとして決定する、請求項１に記載の通信装置
【請求項９】
前記決定部は、さらに、
前記送信用最大フレームサイズに応じて決定される送信用高効率フレームサイズと、前記受信用最大フレームサイズに応じて決定される受信用高効率フレームサイズと、を取得する第３の取得部を備え、
前記送信用高効率フレームサイズに一致するデータサイズを有する送信フレームのための前記送信処理の効率は、前記送信用最大フレームサイズに一致するデータサイズを有する送信フレームのための前記送信処理の効率以上であり、
前記受信用高効率フレームサイズに一致するデータサイズを有する受信フレームのための前記受信処理の効率は、前記受信用最大フレームサイズに一致するデータサイズを有する受信フレームのための前記受信処理の効率よりも高く、
前記受信用最大フレームサイズ＞前記受信用高効率フレームサイズ＞前記送信用最大フレームサイズ≧前記送信用高効率フレームサイズの関係と、
前記受信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記指定データサイズ＞前記受信用高効率フレームサイズである場合に、
前記送信用高効率フレームサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＳＳとして決定し、
前記受信用高効率フレームサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＳＳとして決定する、請求項１又は８に記載の通信装置
【請求項１０】
前記送信用最大フレームサイズ＞前記受信用最大フレームサイズの関係と、
前記送信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記指定データサイズ＞前記受信用最大フレームサイズである場合に、
前記指定データサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＳＳとして決定し、
前記受信用最大フレームサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＳＳとして決定する、請求項１に記載の通信装置。
【請求項１１】
前記送信用最大フレームサイズ＞前記受信用最大フレームサイズの関係と、
前記送信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記指定データサイズ＞前記受信用最大フレームサイズである場合に、
前記指定データサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＴＵとして決定し、
前記受信用最大フレームサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＴＵとして決定する、請求項１に記載の通信装置。
【請求項１２】
前記送信用最大フレームサイズ＞前記受信用最大フレームサイズの関係と、
前記送信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記受信用最大フレームサイズ≧前記指定データサイズである場合に、
前記指定データサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＴＵとして決定し、
前記受信用最大フレームサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＴＵとして決定する、請求項１又は１１に記載の通信装置
【請求項１３】
前記決定部は、さらに、
前記送信用最大フレームサイズに応じて決定される送信用高効率フレームサイズと、前記受信用最大フレームサイズに応じて決定される受信用高効率フレームサイズと、を取得する第３の取得部を備え、
前記送信用高効率フレームサイズに一致するデータサイズを有する送信フレームのための前記送信処理の効率は、前記送信用最大フレームサイズに一致するデータサイズを有する送信フレームのための前記送信処理の効率以上であり、
前記受信用高効率フレームサイズに一致するデータサイズを有する受信フレームのための前記受信処理の効率は、前記受信用最大フレームサイズに一致するデータサイズを有する受信フレームのための前記受信処理の効率よりも高く、
前記送信用最大フレームサイズ≧前記送信用高効率フレームサイズ＞前記受信用最大フレームサイズ＞前記受信用高効率フレームサイズの関係と、
前記送信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記送信用高効率フレームサイズ≧前記指定データサイズ＞前記受信用高効率フレームサイズである場合に、
前記指定データサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＳＳとして決定し、
前記受信用高効率フレームサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＳＳとして決定する、請求項１に記載の通信装置
【請求項１４】
前記決定部は、さらに、
前記送信用最大フレームサイズに応じて決定される送信用高効率フレームサイズと、前記受信用最大フレームサイズに応じて決定される受信用高効率フレームサイズと、を取得する第３の取得部を備え、
前記送信用高効率フレームサイズに一致するデータサイズを有する送信フレームのための前記送信処理の効率は、前記送信用最大フレームサイズに一致するデータサイズを有する送信フレームのための前記送信処理の効率以上であり、
前記受信用高効率フレームサイズに一致するデータサイズを有する受信フレームのための前記受信処理の効率は、前記受信用最大フレームサイズに一致するデータサイズを有する受信フレームのための前記受信処理の効率よりも高く、
前記送信用最大フレームサイズ≧前記送信用高効率フレームサイズ＞前記受信用最大フレームサイズ＞前記受信用高効率フレームサイズの関係と、
前記送信用最大フレームサイズ≧前記指定データサイズの関係と、が満足されており、
前記決定部は、
前記指定データサイズ＞前記送信用高効率フレームサイズである場合に、
前記送信用高効率フレームサイズを用いて得られる値を、前記送信用最大データサイズである送信用ＭＳＳとして決定し、
前記受信用高効率フレームサイズを用いて得られる値を、前記受信用最大データサイズである受信用ＭＳＳとして決定する、請求項１又は１３に記載の通信装置
【請求項１５】
前記ネットワークがジャンボフレームを利用する環境であるのか否かを判断する判断部をさらに備え、
前記決定部は、前記ネットワークが前記ジャンボフレームを利用する前記環境であると判断される場合に、前記第１の記憶容量に応じて、前記送信用最大データサイズを決定すると共に、前記第２の記憶容量に応じて、前記受信用最大データサイズを決定する、請求項１から１４のいずれか一項に記載の通信装置。
【請求項１６】
前記判断部は、
前記ネットワークから受信する信号が、前記ネットワークがギガビットイーサネットに対応することを示す場合に、前記ネットワークが前記ジャンボフレームを利用する前記環境であると判断し、
前記ネットワークから受信する前記信号が、前記ネットワークがギガビットイーサネットに対応することを示さない場合に、前記ネットワークが前記ジャンボフレームを利用する前記環境でないと判断する、請求項１５に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書によって開示される技術は、ネットワークに接続される通信装置に関する。
【背景技術】
【０００２】
通信装置は、通常、ネットワークに送信される送信フレームを記憶するための送信バッファと、ネットワークから受信される受信フレームを記憶するための受信バッファと、を備える。送信バッファと受信バッファとは、通常、同じ記憶容量を有する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２３７８８２号公報
【特許文献２】特開２００３−１２４９８４号公報
【特許文献３】特開２００６−２１７２３４号公報
【特許文献４】特開２００３−２５８９３８号公報
【特許文献５】特開２００８−１１８２８１号公報
【特許文献６】特開２００７−８２１２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、送信バッファと受信バッファとが同じ記憶容量を有する場合には、送信バッファと受信バッファとが効率よく活用されない可能性があり、この結果、データの通信（即ちデータの送受信）が効率よく実行されない可能性がある。本明細書では、データの通信を効率よく実行し得る技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書は、ネットワークに接続される通信装置を開示する。通信装置は、送信バッファと、受信バッファと、決定部と、処理実行部と、を備える。送信バッファは、ネットワークに送信される少なくとも１個の送信フレームを記憶するためのバッファであって、第１の記憶容量を有する。受信バッファは、ネットワークから受信される少なくとも１個の受信フレームを記憶するためのバッファであって、第１の記憶容量と異なる第２の記憶容量を有する。決定部は、第１の記憶容量に応じて、１個の送信フレームに含まれる送信対象データのデータサイズとして許容される最大データサイズである送信用最大データサイズを決定すると共に、第２の記憶容量に応じて、１個の受信フレームに含まれる受信対象データのデータサイズとして許容される最大データサイズである受信用最大データサイズを決定する。送信用最大データサイズと受信用最大データサイズとは異なる値を有する。処理実行部は、送信用最大データサイズを用いて、送信対象の送信フレームのための送信処理を実行すると共に、受信用最大データサイズを用いて、受信対象の受信フレームのための受信処理を実行する。
【０００６】
上記の構成では、送信バッファと受信バッファとが異なる記憶容量を有するために、送信バッファと受信バッファとが効率よく活用され得る。さらに、上記の構成では、通信装置は、送信バッファが有する第１の記憶容量に応じて、送信用最大データサイズを決定し、受信バッファが有する第２の記憶容量に応じて、送信用最大データサイズと異なる受信用最大データサイズを有する。このために、通信装置は、送信用最大データサイズ及び受信用最大データサイズを用いて、送信処理及び受信処理を効率よく実行し得る。例えば、データの送信が主に実行される通信装置では、送信バッファの第１の記憶容量を受信バッファの第２の記憶容量よりも大きく設定することにより、データの送信処理を効率よく実行することができる。逆に、データの受信が主に実行される通信装置では、受信バッファの第２の記憶容量を送信バッファの第１の記憶容量よりも大きく設定することにより、データの受信処理を効率よく実行することができる。
【０００７】
なお、上記の通信装置を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記録媒体も、新規で有用である。
【図面の簡単な説明】
【０００８】
【図１】通信システムの構成の一例を示す。
【図２】非ＴＣＰのフレームが通信される様子を示す。
【図３】ＴＣＰのフレームが通信される様子を示す。
【図４】設定処理のフローチャートを示す。
【図５】全実施例に共通するＭＳＳ及びＭＴＵの条件を示す。
【図６】第１実施例のＭＳＳ及びＭＴＵの決定手法を示す。
【図７】第１実施例の第１具体例を示す。
【図８】第１実施例の第２具体例を示す。
【図９】第２実施例のＭＳＳ及びＭＴＵの決定手法を示す。
【図１０】第２実施例の第１具体例を示す。
【図１１】第２実施例の第２具体例を示す。
【図１２】第３実施例のＭＳＳ及びＭＴＵの決定手法を示す。
【図１３】第３実施例の第１具体例を示す。
【図１４】第３実施例の第２具体例を示す。
【図１５】第３実施例の第３具体例を示す。
【図１６】第３実施例の第４具体例を示す。
【図１７】第４実施例のＭＳＳ及びＭＴＵの決定手法を示す。
【図１８】第４実施例の第１具体例を示す。
【図１９】第４実施例の第２具体例を示す。
【発明を実施するための形態】
【０００９】
（第１実施例）
（システムの構成）
図１に示されるように、通信システム２は、通信装置１０（ＰＣ１００の周辺機器）と、ＰＣ１００と、を備える。通信装置１０とＰＣ１００とは、ＬＡＮ４に接続されている。通信装置１０とＰＣ１００とは、ＬＡＮ４を介して、相互に通信可能である。
【００１０】
ＬＡＮ４は、イーサネット（登録商標）に準拠するネットワークである。特に、ＬＡＮ４は、ギガビットイーサネット、即ち、１ギガビット／秒の通信速度を実現可能なネットワークである。なお、ギガビットイーサネットは、１０００ＢＡＳＥ−ＳＸと、１０００ＢＡＳＥ−ＬＸと、１０００ＢＡＳＥ−ＣＸ（これらはＩＥＥＥ８０２．３ｚで規定される）と、１０００ＢＡＳＥ−Ｔ（これはＩＥＥＥ８０２．３ａｂで規定される）と、のいずれであってもよい。
【００１１】
（通信装置１０の構成）
通信装置１０は、操作部１２と、表示部１４と、制御部２０と、ＭＡＣチップ４０と、ＰＨＹチップ５０と、を備える。上記の各部１２，１４，２０は、バス線（符号省略）に接続されている。
【００１２】
通信装置１０は、さらに、印刷実行部１６及びスキャン実行部１８の少なくとも一方を備える。通信装置１０が印刷実行部１６を備える場合には、通信装置１０はプリンタである。通信装置１０がスキャン実行部１８を備える場合には、通信装置１０はスキャナである。通信装置１０が印刷実行部１６とスキャン実行部１８との両方を備える場合には、通信装置１０は、少なくとも印刷機能とスキャン機能とを備える多機能機である。
【００１３】
操作部１２は、複数のキーによって構成される。ユーザは、操作部１２を操作することによって、様々な指示を通信装置１０に入力することができる。表示部１４は、様々な情報を表示するためのディスプレイである。
【００１４】
制御部２０は、ＣＰＵ２２とメモリ２４とを備える。ＣＰＵ２２は、メモリ２４に格納されているプログラム（図示省略）に従って、様々な処理を実行する。ＣＰＵ２２が当該プログラムに従って処理を実行することによって、決定部３０、処理実行部３６、及び、及び、判断部３８の各機能が実現される。なお、決定部３０は、第１の取得部３１と、第２の取得部３２と、第３の取得部３３と、を備える。
【００１５】
メモリ２４は、不揮発性メモリ、揮発性メモリ等によって構成される。メモリ２４は、複数個の設定値ＳＶ（Setting Values）を記憶する。各設定値の内容については、後で詳しく説明する。メモリ２４は、メモリバッファＭＢ（Memory Buffer）を備える。メモリバッファＭＢは、ＬＡＮ４に送信されるイーサネットフレーム（以下では「送信フレーム」と呼ぶ）を記憶する。特に、メモリバッファＭＢは、メモリ２４から後述のＦＩＦＯ送信バッファＦＳＢに移動させる前の送信フレームを記憶する。メモリバッファＭＢは、さらに、ＬＡＮ４から受信されるイーサネットフレーム（以下では「受信フレーム」と呼ぶ）を記憶する。特に、メモリバッファＭＢは、後述のＦＩＦＯ受信バッファＦＲＢからメモリ２４に移動させた後の受信フレームを記憶する。
【００１６】
ＭＡＣチップ４０は、ＯＳＩ（Open Systems Interconnection）参照モデルのデータリンク層の副層であるＭＡＣ層の処理を実行する。ＭＡＣチップ４０は、ＦＩＦＯ（First In First Out）送信バッファＦＳＢと、ＦＩＦＯ受信バッファＦＲＢと、を備える。ＦＩＦＯ送信バッファＦＳＢは、少なくとも１個の送信フレームを記憶するための記憶容量を有する。ＦＩＦＯ受信バッファＦＲＢは、少なくとも１個の受信フレームを記憶するための記憶容量を有する。なお、後で詳しく説明するが、ＦＩＦＯ送信バッファＦＳＢとＦＩＦＯ受信バッファＦＲＢとは、異なる記憶容量を有する。
【００１７】
ＰＨＹチップ５０は、ＯＳＩ参照モデルの物理層の処理を実行する。ＰＨＹチップ５０は、ＬＡＮ４に接続されていると共に、ＭＡＣチップ４０に接続されている。ＦＩＦＯ送信バッファＦＳＢに記憶されている送信フレームは、ＰＨＹチップ５０を介して、ＬＡＮ４に送信される。また、ＬＡＮ４から受信される受信フレームは、ＰＨＹチップ５０を介して、ＦＩＦＯ受信バッファＦＲＢに記憶される。
【００１８】
（ＰＣ１００の構成）
ＰＣ１００は、図示省略の操作部、表示部、制御部等を備える。例えば、通信装置１０がプリンタである場合には、ＰＣ１００は、通信装置１０のためのプリンタドライバを記憶している。この場合、ＰＣ１００は、印刷データを通信装置１０に送信可能である。また、通信装置１０がスキャナである場合には、ＰＣ１００は、通信装置１０のためのスキャナドライバを記憶している。この場合、ＰＣ１００は、通信装置１０にスキャンの実行を指示して、通信装置１０からスキャンデータを受信可能である。
【００１９】
なお、上記の印刷データ及びスキャンデータ以外にも、通信装置１０とＰＣ１００との間では、様々な種類のデータが通信される。通信装置１０は、ＴＣＰ（Transmission Control Protocol）を利用して、ＰＣ１００と通信可能であると共に、ＵＤＰ（User Datagram Protocol）を利用して、ＰＣ１００と通信可能である。例えば、上記の印刷データ又はスキャンデータの通信には、ＴＣＰが利用される。また、例えば、ＳＮＭＰ（Simple Network Management Protocol）のリクエスト及びレスポンスには、ＵＤＰが利用される。
【００２０】
（フレームの構成）
上述したように、通信装置１０とＰＣ１００との間では、様々なデータが通信される。データの通信は、フレームを最小単位として実行される。図１には、１個のフレームの構成が模式的に示されている。ＴＣＰのフレームは、イーサネットヘッダと、ＩＰヘッダと、ＴＣＰヘッダと、アプリケーションデータと、ＦＣＳ（Frame Check Sequence）と、を含む。なお、ＵＤＰのフレームは、ＴＣＰヘッダの代わりにＵＤＰヘッダを含む点が異なるが、ＴＣＰのフレームとほぼ同様の構成を有する。
【００２１】
イーサネットヘッダ、ＩＰヘッダ、ＴＣＰヘッダ、ＦＣＳは、それぞれ、１４バイト、２０バイト、２０バイト、４バイトのデータサイズを有する。これらのデータサイズは、イーサネットの規格として予め決められている。これに対し、アプリケーションデータのデータサイズは、イーサネットフレームの通信を実行する通信装置によって決定される。
【００２２】
（ＭＳＳ（Maximum Segment Size））
１個のフレームに含まれるアプリケーションデータのデータサイズとして許容される最大データサイズのことを「ＭＳＳ」と呼ぶ。ＭＳＳは、通信装置によって決定される設定値である。ギガビットイーサネットではなく、１００ＢＡＳＥ又は１０ＢＡＳＥのような通常のイーサネットの規格では、１個のフレームの最大データサイズとして、１５１８バイトが予め決められている。従って、ギガビットイーサネットに対応せずに、通常のイーサネットのみに対応する通信装置は、通常、ＭＳＳとして１４６０（＝１５１８−１４−２０−２０−４）バイトを利用する。
【００２３】
これに対し、ギガビットイーサネットに対応する通信装置１０は、ＭＳＳとして１４６０バイトを超える値を利用し得る。このように、ＭＳＳとして１４６０バイトを超える値が利用されると、通信対象のフレーム内のアプリケーションデータのデータサイズも、１４６０バイトよりも大きな値が利用される。このように、１４６０バイトよりも大きなデータサイズを有するアプリケーションデータを含むフレームのことを「ジャンボフレーム（Jumbo Frame）」と呼ぶ。なお、通信装置１０のユーザは、ジャンボフレームを利用することを望むのか否かを選択することができる。
【００２４】
（Ｓ＿ＭＳＳ（Send MSS）とＲ＿ＭＳＳ（Receive MSS））
なお、後で詳しく述べるが、本実施例では、ＦＩＦＯ送信バッファＦＳＢの記憶容量に応じて、送信フレームに含まれるアプリケーションデータの最大データサイズが決定され、ＦＩＦＯ受信バッファＦＲＢの記憶容量に応じて、受信フレームに含まれるアプリケーションデータの最大データサイズが決定される。即ち、本実施例では、送信用ＭＳＳと受信用ＭＳＳとが決定される。以下では、送信用ＭＳＳ、受信用ＭＳＳのことを、それぞれ、「Ｓ＿ＭＳＳ」、「Ｒ＿ＭＳＳ」と記載する。
【００２５】
（ＭＴＵ（Maximum Transmission Unit））
ＩＰヘッダのデータサイズ（２０バイト）とＴＣＰヘッダのデータサイズ（２０バイト）とをＭＳＳに加算して得られる値に相当する値のことを「ＭＴＵ」と呼ぶ。なお、ＩＰヘッダとＴＣＰヘッダ（又はＵＤＰヘッダ）とアプリケーションデータとの集合のことを、通常、「ＩＰパケット」と呼ぶ、従って、ＭＴＵは、ＩＰパケットのデータサイズとして許容される最大データサイズである。ＭＳＳと同様に、ＭＴＵも、通信装置によって決定される設定値である。通常のイーサネットのみに対応する通信装置は、通常、ＭＴＵとして１５００（１４６０＋２０＋２０）バイトを決定する。ギガビットイーサネットに対応する通信装置１０は、ＭＴＵとして１５００バイトを超える値を決定し得る。
【００２６】
（Ｓ＿ＭＴＵ（Send MTU）とＲ＿ＭＴＵ（Receive MTU））
ＭＳＳの場合と同様に、本実施例では、送信用ＭＴＵと受信用ＭＴＵとが決定される。以下では、送信用ＭＴＵ、受信用ＭＴＵのことを、それぞれ、「Ｓ＿ＭＴＵ」、「Ｒ＿ＭＴＵ」と記載する。
【００２７】
（他の設定値ＳＶ）
ここでは、通信装置１０で利用される各設定値ＳＶ（即ち、通信装置１０のメモリ２４に記憶される各設定値ＳＶ）について説明する。なお、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳ、Ｓ＿ＭＴＵＳ、及び、Ｒ＿ＭＴＵの４個の設定値については、既に説明済みである。
【００２８】
（Ｆ＿ＳＩＺＥ（Frame Size））
ユーザは、ジャンボフレームを利用することを望むのか否かを選択することができる（図４のＳ５０参照）。ユーザは、ジャンボフレームを利用することを望む場合に、さらに、１個のフレームが有する最大データサイズを指定することができる（図４のＳ５０参照）。Ｆ＿ＳＩＺＥは、後述の図４のＳ５０において、ユーザによって指定される１個のフレームが有する最大データサイズである。
【００２９】
（Ｓ＿ＭＡＸ（Send MAX））
Ｓ＿ＭＡＸは、ＦＩＦＯ送信バッファＦＳＢが記憶可能な１個の送信フレームの最大データサイズである。Ｓ＿ＭＡＸは、ＦＩＦＯ送信バッファＦＳＢの記憶容量に応じて決定される。具体的に言うと、Ｓ＿ＭＡＸは、ＦＩＦＯ送信バッファＦＳＢの記憶容量から所定値αを減算して得られる値に相当する値である。所定値αは、通信装置１０のベンダによって予め決められる値であり、ＦＩＦＯ送信バッファＦＳＢの記憶容量と比べて極めて小さな値であれば、どのような値であってもよい。例えば、ベンダは、ＦＩＦＯ送信バッファＦＳＢの記憶容量の全てが活用されることを望む場合には、所定値αとしてゼロを採用してもよいし、余裕をもたせて、所定値αとしてゼロより大きな値を採用してもよい。
【００３０】
（Ｒ＿ＭＡＸ（Receive MAX））
Ｒ＿ＭＡＸは、ＦＩＦＯ受信バッファＦＲＢが記憶可能な１個の受信フレームの最大データサイズである。Ｒ＿ＭＡＸは、ＦＩＦＯ受信バッファＦＲＢの記憶容量に応じて決定される。具体的に言うと、Ｒ＿ＭＡＸは、ＦＩＦＯ受信バッファＦＲＢの記憶容量から所定値βを減算して得られる値に相当する値である。本実施例では、αとβとは等しい。なお、上述したように、ＦＩＦＯ送信バッファＦＳＢとＦＩＦＯ受信バッファＦＲＢとは、異なる記憶容量を有する。従って、Ｓ＿ＭＡＸとＲ＿ＭＡＸとは、異なる値を有する。
【００３１】
（ＥＴＨ＿ＭＡＸ（Ethernet MAX）、Ｖ１、Ｖ２）
ＥＴＨ＿ＭＡＸは、通常のイーサネットで利用される１個のフレームの最大データサイズ（即ち１５１８バイト）である。また、Ｖ１は、イーサネットヘッダのデータサイズ（１４バイト）とＦＣＳのデータサイズ（４バイト）との和に相当する値（即ち１８バイト）である。Ｖ２は、イーサネットヘッダのデータサイズ（１４バイト）とＩＰヘッダのデータサイズ（２０バイト）とＴＣＰヘッダのデータサイズ（２０バイト）とＦＣＳのデータサイズ（４バイト）との和に相当する値（即ち５８バイト）である。
【００３２】
図１に示されるＨＰ＿Ｓ＿ＳＩＺＥ及びＨＰ＿Ｒ＿ＳＩＺＥについては、後述の第３実施例で詳しく説明する。なお、Ｓ＿ＭＡＸ、Ｒ＿ＭＡＸ、ＥＴＨ＿ＭＡＸ、Ｖ１、Ｖ２は、通信装置１０の出荷段階において、メモリ２４に予め記憶されている。Ｆ＿ＳＩＺＥは、後述の図４のＳ５０でメモリ２４に記憶される。また、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳ、Ｓ＿ＭＴＵ、及び、Ｒ＿ＭＴＵの４個の設定値は、後述の図４のＳ５６又はＳ５８でメモリ２４に記憶される。
【００３３】
（２個のバッファＦＳＢ，ＦＲＢの記憶容量）
上述したように、本実施例の通信装置１０は、高速の通信速度を実現可能なギガビットイーサネットに対応している。通信装置１０は、ギガビットイーサネットを用いた通信の効率をより高めるために、上記のジャンボフレームを利用する。このようにジャンボフレームが利用される場合には、１個のフレームに含まれるデータのサイズが大きくなるために、ＦＩＦＯバッファの記憶容量を大きくする必要がある。
【００３４】
従来の通信装置では、通常、ＦＩＦＯ送信バッファとＦＩＦＯ受信バッファとは、同じ記憶容量を有する。従って、通信装置をジャンボフレームに対応させる場合には、通常、ＦＩＦＯ送信バッファとＦＩＦＯ受信バッファとの両方の記憶容量が、同程度だけ大きく設定される。しかしながら、２個のバッファの両方の記憶容量を大きくするためには、比較的に多くのコストが必要である。このような実情に鑑みて、本実施例では、２個のバッファＦＳＢ，ＦＲＢのうちの一方の記憶容量が、他方の記憶容量よりも大きくなるように、通信装置１０が予め設計されている。
【００３５】
例えば、プリンタは、データの送信よりもデータの受信（即ち印刷データの受信）を主に実行するために、通信装置１０がプリンタである場合には、ＦＩＦＯ受信バッファＦＲＢの記憶容量が、ＦＩＦＯ送信バッファＦＳＢの記憶容量よりも大きくなるように、通信装置１０が予め設計されている。これにより、プリンタが比較的に高頻度で実行する受信処理の効率を高めることができる。また、プリンタが比較的に低頻度で送信処理を実行するために、ＦＩＦＯ送信バッファＦＳＢの記憶容量が比較的に小さくても、問題はない。従って、２個のバッファＦＳＢ，ＦＲＢのそれぞれを効率よく活用することができる。なお、通信装置１０がプリンタである場合には、ＦＩＦＯ受信バッファＦＲＢの記憶容量に応じて決定されるＲ＿ＭＡＸは、ＦＩＦＯ送信バッファＦＳＢの記憶容量に応じて決定されるＳ＿ＭＡＸよりも大きくなる。
【００３６】
また、例えば、スキャナは、データの受信よりもデータの送信（即ちスキャンデータの送信）を主に実行するために、通信装置１０がスキャナである場合には、ＦＩＦＯ送信バッファＦＳＢの記憶容量が、ＦＩＦＯ受信バッファＦＲＢの記憶容量よりも大きくなるように、通信装置１０が予め設計されている。これにより、スキャナが比較的に高頻度で実行する送信処理の効率を高めることができる。また、スキャナが比較的に低頻度で受信処理を実行するために、ＦＩＦＯ受信バッファＦＲＢの記憶容量が比較的に小さくても、問題はない。従って、２個のバッファＦＳＢ，ＦＲＢのそれぞれを効率よく活用することができる。なお、通信装置１０がプリンタである場合には、ＦＩＦＯ送信バッファＦＳＢの記憶容量に応じて決定されるＳ＿ＭＡＸは、ＦＩＦＯ受信バッファＦＲＢの記憶容量に応じて決定されるＲ＿ＭＡＸよりも大きくなる。
【００３７】
このように、本実施例によると、通信装置１０のベンダは、通信装置１０の通信効率を高めるために、２個のバッファＦＳＢ，ＦＲＢの両方の記憶容量を大きくせずに済み、通信装置１０の主機能に応じて、２個のバッファＦＳＢ，ＦＲＢのうちの一方の記憶容量のみを大きくする手法を採用し得る。従って、２個のバッファの両方が同じ記憶容量を有する従来の通信装置と比べると、低コストでジャンボフレームに対応する通信装置１０を実現し得る。
【００３８】
なお、例えば、通信装置１０が、印刷機能とスキャン機能との両方を実行可能な多機能機である場合には、通信装置１０のベンダは、印刷機能とスキャン機能とのうち、主機能と考えられる一方の機能に対応するバッファ（例えば印刷が主機能である場合にはＦＩＦＯ受信バッファ）の記憶容量が、他方の機能に対応するバッファの記憶容量よりも大きくなるように、通信装置１０を設計してもよい。
【００３９】
なお、仮に、プリンタが有する２個のバッファの記憶容量が同じであれば、比較的に高頻度で受信処理が実行されるために、ＦＩＦＯ受信バッファの記憶容量が十分に活用されるが、比較的に低頻度で送信処理が実行されるために、ＦＩＦＯ送信バッファの記憶容量が十分に活用されない。即ち、ＦＩＦＯ送信バッファが過剰な記憶容量を有することになる。同様に、スキャナが有する２個のバッファの記憶容量が同じであれば、ＦＩＦＯ受信バッファが過剰な記憶容量を有することになる。これに対し、本実施例では、２個のバッファＦＳＢ，ＦＲＢの記憶容量が適切に決定されるために、一方のバッファが十分に活用されない、即ち、一方のバッファが過剰な記憶容量を有する、という問題が発生するのを抑制することができる。即ち、通信装置１０は、２個のバッファＦＳＢ，ＦＲＢのそれぞれを効率よく活用して、データの通信を効率よく実行することができる。
【００４０】
（通信装置１０が実行する通信処理）
上述したように、通信装置１０は、ＴＣＰを利用した通信と、ＵＤＰを利用した通信と、を実行可能である。まず、図２を参照して、非ＴＣＰを利用した通信の内容を説明し、次いで、図３を参照して、ＴＣＰを利用した通信の内容を説明する。なお、上述したように、通信装置１０は、送信用及び受信用の２種類のＭＳＳ（Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳ）を利用すると共に、送信用及び受信用の２種類のＭＴＵ（Ｓ＿ＭＴＵＳ、Ｒ＿ＭＴＵ）を利用する。これに対し、ＰＣ１００は、送信バッファの記憶容量と受信バッファの記憶容量とが同じであり、その結果、１種類のＭＳＳのみを利用すると共に（即ち送信用及び受信用で共通のＭＳＳを利用すると共に）、１種類のＭＴＵのみを利用する（即ち送信用及び受信用で共通のＭＴＵを利用する）。
【００４１】
（非ＴＣＰのフレームの受信（図２））
後で詳しく説明するが、ＴＣＰでは、一対のデバイスが通信対象の対象データの通信を実行する前に、一対のデバイスの間でいわゆるネゴシエーションが実行され、その結果、一対のデバイスの間で通信セッションが確立される。これに対し、ＵＤＰでは、一対のデバイスの間でネゴシエーションが実行されない。
【００４２】
図２に示されるように、通信装置１０とＰＣ１００との間で通信セッションが確立されていない状態で、ＰＣ１００は、ＰＣ１００のＭＴＵ以下のデータサイズＸ１を有するＩＰパケット（即ちＩＰヘッダとＵＤＰヘッダとアプリケーションデータとの集合）を含むＵＤＰのフレーム（例えばＳＮＭＰのリクエスト）を、通信装置１０に送信する。
【００４３】
ＵＤＰのフレームは、通信装置１０のＰＨＹチップ５０で受信され、ＰＨＹチップ５０を介してＦＩＦＯ受信バッファＦＲＢに記憶される。この場合、通信装置１０の処理実行部３６（図１参照）は、ＦＩＦＯ受信バッファＦＲＢに記憶されているＵＤＰの受信フレームのための受信処理（Ｓ１０〜Ｓ１４の処理）を実行する。Ｓ１０では、処理実行部３６は、ＵＤＰの受信フレームに含まれるＩＰパケットのデータサイズＸ１が、メモリ２４に記憶されているＲ＿ＭＴＵよりも大きいのか否かを判断する。
【００４４】
データサイズＸ１がＲ＿ＭＴＵ以下である場合（Ｓ１０でＮＯの場合）には、Ｓ１２において、処理実行部３６は、ＵＤＰの受信フレームをＦＩＦＯ受信バッファＦＲＢからメモリバッファＭＢに移動させる処理と、ＵＤＰの受信フレームに含まれるデータに従った処理（例えばＳＮＭＰのレスポンスの作成等）と、を実行する。
【００４５】
一方において、データサイズＸ１がＲ＿ＭＴＵよりも大きい場合（Ｓ１０でＹＥＳの場合）には、Ｓ１４において、処理実行部３６は、ＦＩＦＯ受信バッファＦＲＢに記憶されているＵＤＰの受信フレームを、メモリバッファＭＢに移動させずに、破棄する（即ち消去する）。
【００４６】
（非ＴＣＰのフレームの送信）
また、処理実行部３６は、ＰＣ１００にＵＤＰのフレームを送信すべき際（例えばＳＮＭＰのリクエストに応じたレスポンスを送信すべき際）に、ＵＤＰの送信フレームのための送信処理（Ｓ２０の処理及び送信フレームの移動処理）を実行する。Ｓ２０では、処理実行部３６は、メモリバッファＭＢ内において、ＵＤＰの送信フレームを生成する。この際に、処理実行部３６は、メモリ２４に記憶されているＳ＿ＭＴＵ以下のデータサイズＸ２を有するＩＰパケットを含むＵＤＰの送信フレームを生成する。即ち、処理実行部３６は、Ｓ＿ＭＴＵより大きいデータサイズを有するＩＰパケットを含むＵＤＰの送信フレームの生成を禁止する。
【００４７】
次いで、処理実行部３６は、Ｓ２０で生成されるＵＤＰの送信フレームを、ＦＩＦＯ送信バッファＦＳＢに移動させる。これにより、ＦＩＦＯ送信バッファＦＳＢに記憶されているＵＤＰの送信フレームが、ＰＨＹチップ５０を介して、ＰＣ１００に送信される。
【００４８】
ＰＣ１００は、通信装置１０のＳ１０の処理と同様に、通信装置１０から送信されるＵＤＰのフレームに含まれるＩＰパケットのデータサイズが、ＰＣ１００のＭＴＵよりも大きいのか否かを判断する。そして、ＰＣ１００は、通信装置１０のＳ１２及び１４の処理と同様に、判断結果に応じて、ＵＤＰのフレームの処理又は破棄を実行する。
【００４９】
（ＴＣＰのフレームの受信（図３））
図３に示されるように、ＰＣ１００は、ＴＣＰのフレームを通信装置１０に送信すべき際に、まず、ＳＹＮ信号を通信装置１０に送信する。ＳＹＮ信号は、ＰＣ１００に設定されているＰＣ１００のＭＳＳを含む。この場合、通信装置１０の処理実行部３６は、ＳＹＮ／ＡＣＫ信号をＰＣ１００に送信する。ＳＹＮ／ＡＣＫ信号は、メモリ２４に記憶されているＲ＿ＭＳＳ（即ち通信装置１０に設定されている通信装置１０のＲ＿ＭＳＳ）を含む。次いで、ＰＣ１００は、ＡＣＫ信号を通信装置１０に送信する。これにより、通信装置１０とＰＣ１００との間でネゴシエーションが終了し、通信装置１０とＰＣ１００との間に通信セッションが確立される。
【００５０】
次いで、処理実行部３６は、ＰＣ１００から受信されるＴＣＰの受信フレームのための受信処理（図３のＳ３０〜Ｓ３６の処理）を実行する。Ｓ３０では、処理実行部３６は、ＰＣ１００のＭＳＳと、通信装置１０のＲ＿ＭＳＳと、を用いて、第１のＭＴＵを決定する。具体的に言うと、処理実行部３６は、まず、ＰＣ１００のＭＳＳと通信装置１０のＲ＿ＭＳＳとのうち、小さい方の値を選択する。次いで、処理実行部３６は、選択済みの値に４０バイト（ＩＰヘッダのデータサイズ＋ＴＣＰヘッダのデータサイズ）を加算することによって、第１のＭＴＵを決定する。
【００５１】
通信装置１０とＰＣ１００との間に通信セッションが確立されている状態で、ＰＣ１００は、ＴＣＰのフレーム（例えば印刷データ）を通信装置１０に送信する。ＴＣＰのフレームに含まれるＩＰパケット（即ちＩＰヘッダとＵＤＰヘッダとアプリケーションデータとの集合）は、データサイズＸ３を有する。なお、ＰＣ１００も、ＰＣ１００のＭＳＳと通信装置１０のＲ＿ＭＳＳとのうち、小さい方の値を選択して、選択済みの値に４０バイトを加算することによって、特定のＭＴＵ（即ち上記の第１のＭＴＵと同じ値を有するＭＴＵ）を決定する。そして、ＰＣ１００は、通常、決定済みの特定のＭＴＵ（即ち第１のＭＴＵ）以下のデータサイズＸ３を有するＩＰパケットを含むＴＣＰのフレームを、通信装置１０に送信する。
【００５２】
ＴＣＰのフレームは、通信装置１０のＰＨＹチップ５０で受信され、ＰＨＹチップ５０を介してＦＩＦＯ受信バッファＦＲＢに記憶される。この場合、Ｓ３２において、処理実行部３６は、ＦＩＦＯ受信バッファＦＲＢに記憶されているＴＣＰの受信フレームに含まれるＩＰパケットのデータサイズＸ３が、Ｓ３０で決定された第１のＭＴＵよりも大きいのか否かを判断する。
【００５３】
上述したように、ＰＣ１００は、通常、第１のＭＴＵ以下のデータサイズＸ３を有するＩＰパケットを含むＴＣＰのフレームを、通信装置１０に送信する。従って、Ｓ３２では、通常、データサイズＸ３が第１のＭＴＵ以下であると判断される（Ｓ３２でＮＯ）。この場合、Ｓ３４において、処理実行部３６は、ＴＣＰの受信フレームをＦＩＦＯ受信バッファＦＲＢからメモリバッファＭＢに移動させる処理と、ＴＣＰの受信フレームに含まれるデータに従った処理（例えば印刷等）と、を実行する。
【００５４】
なお、仮に、通信装置１０とＰＣ１００との両者が、ＰＣ１００のＭＳＳと通信装置１０のＲ＿ＭＳＳとのうちの大きい方の値に基づいて決定されるＭＴＵを利用する構成を採用すると、例えば、ＰＣ１００は、Ｒ＿ＭＡＸを超えるデータサイズを有するＴＣＰのフレームを、通信装置１０に送信し得る。この場合、通信装置１０は、ＰＣ１００から送信されるＴＣＰのフレームをＦＩＦＯ受信バッファに記憶することができない（即ちＴＣＰのフレームを受信することができない）。これに対し、本実施例のように、通信装置１０とＰＣ１００との両者が、ＰＣ１００のＭＳＳと通信装置１０のＲ＿ＭＳＳとのうちの小さい方の値に基づいて決定されるＭＴＵを利用する構成を採用すると、通信装置１０は、ＰＣ１００から送信されるＴＣＰのフレームを確実に受信することができる。
【００５５】
なお、例えば、データサイズＸ３が第１のＭＴＵよりも大きい場合（Ｓ３２でＹＥＳの場合）には、Ｓ３６において、処理実行部３６は、ＦＩＦＯ受信バッファＦＲＢに記憶されているＴＣＰの受信フレームを、メモリバッファＭＢに移動させずに、破棄する（即ち消去する）。
【００５６】
（ＴＣＰのフレームの送信）
また、通信装置１０とＰＣ１００との間に通信セッションが確立されている状態で、処理実行部３６は、ＰＣ１００にＴＣＰのフレームを送信すべき際（例えば、印刷データの受信確認を送信すべき際、スキャンデータを送信すべき際等）に、ＴＣＰの送信フレームのための送信処理（Ｓ４０の処理及び送信フレームの移動処理）を実行する。
【００５７】
Ｓ４０では、処理実行部３６は、メモリバッファＭＢ内において、ＴＣＰの送信フレームを生成する。この際に、処理実行部３６は、まず、ＰＣ１００のＭＳＳと通信装置１０のＲ＿ＭＳＳと通信装置１０のＳ＿ＭＳＳとのうち、最も小さい値を選択する。次いで、処理実行部３６は、選択済みの値に４０バイト（ＩＰヘッダのデータサイズ＋ＴＣＰヘッダのデータサイズ）を加算することによって、第２のＭＴＵを決定する。次いで、処理実行部３６は、第２のＭＴＵ以下のデータサイズＸ４を有するＩＰパケットを含むＴＣＰの送信フレームを生成する。即ち、処理実行部３６は、第２のＭＴＵよりも大きなデータサイズを有するＩＰパケットを含むＴＣＰの送信フレームの生成を禁止する。
【００５８】
次いで、処理実行部３６は、Ｓ４０で生成されるＴＣＰの送信フレームを、ＦＩＦＯ送信バッファＦＳＢに移動させる。これにより、ＦＩＦＯ送信バッファＦＳＢに記憶されているＴＣＰの送信フレームが、ＰＨＹチップ５０を介して、ＰＣ１００に送信される。
【００５９】
なお、上述したように、ＰＣ１００は、ＰＣ１００のＭＳＳと通信装置１０のＲ＿ＭＳＳとのうちの小さい方の値に基づいて、上記の特定のＭＴＵを決定する。ＰＣ１００は、通信装置１０のＳ３２の処理と同様に、通信装置１０から送信されるＴＣＰのフレームに含まれるＩＰパケットのデータサイズが、上記の特定のＭＴＵよりも大きいのか否かを判断する。そして、ＰＣ１００は、通信装置１０のＳ３４及び３６の処理と同様に、判断結果に応じて、ＴＣＰのフレームの処理又は破棄を実行する。
【００６０】
なお、Ｓ４０では、ＰＣ１００のＭＳＳと通信装置１０のＲ＿ＭＳＳと通信装置１０のＳ＿ＭＳＳのうち、最も小さい値に基づいて第２のＭＴＵが決定され、第２のＭＴＵ以下のＴＣＰのフレームがＰＣ１００に送信される。ＰＣ１００で利用される上記の特定のＭＴＵは、必ず、第２のＭＴＵ以上になる。従って、ＰＣ１００は、通信装置１０から送信されるＴＣＰのフレームを確実に受信することができる。なお、Ｓ４０において、ＰＣ１００のＭＳＳ及び通信装置１０のＲ＿ＭＳＳのみならず、通信装置１０のＳ＿ＭＳＳも考慮する理由は、通信装置１０のＦＩＦＯ送信バッファＦＳＢよりも大きなデータサイズを有するＴＣＰの送信フレームが生成されるのを抑制するためである。
【００６１】
上述したように、ＴＣＰでは、通信装置１０が内部的に決定したＲ＿ＭＳＳが、ＰＣ１００のＭＳＳよりも大きい場合には、通信装置１０のＲ＿ＭＳＳではなく、ＰＣ１００のＭＳＳを基準として（即ちＰＣ１００のＭＳＳから算出される第１のＭＴＵを基準として）、受信フレームを破棄するのか否かが決定される。即ち、ＴＣＰでは、通信装置１０の内部的なＲ＿ＭＳＳと、実際に基準として利用されるＭＳＳと、が異なり得る。従って、通信装置１０のＲ＿ＭＳＳ、実際に基準として利用されるＭＳＳを、それぞれ、「内部的な受信用最大データサイズ」、「基準の受信用最大データサイズ」と区別して呼ぶことができる。
【００６２】
同様に、ＴＣＰでは、通信装置１０のＳ＿ＭＳＳと、送信フレームに含まれるＩＰパケットのデータサイズの基準となるＭＳＳ（即ち第２のＭＳＳの算出の基準となるＭＳＳ）と、が異なり得る。従って、通信装置１０のＳ＿ＭＳＳ、実際に基準として利用されるＭＳＳを、それぞれ、「内部的な送信用最大データサイズ」、「基準の送信用最大データサイズ」と区別して呼ぶことができる。
【００６３】
（設定処理（図４））
通信装置１０のユーザは、ジャンボフレームに関する設定画面を表示させるための所定の操作を操作部１２に加えることができる。この場合、図４に示されるように、Ｓ５０において、決定部３０（図１参照）は、設定画面を表示部１４に表示させる。ユーザは、設定画面を見ながら、操作部１２を操作して、ジャンボフレームを利用するのか（ジャンボフレーム設定＝ＯＮ）、あるいは、ジャンボフレームを利用しないのか（ジャンボフレーム設定＝ＯＦＦ）、を選択することができる。
【００６４】
ユーザは、ジャンボフレーム設定＝ＯＮを選択する場合に、さらに、操作部１２を操作して、所定の数値範囲内から１個の値を、Ｆ＿ＳＩＺＥの設定値として選択することができる。上記の所定の数値範囲では、ＥＴＨ＿ＭＡＸが下限値として設定されており、Ｓ＿ＭＡＸとＲ＿ＭＡＸとのうちの大きい方の値が上限値として設定されている。
【００６５】
例えば、通信装置１０がプリンタである場合には、Ｒ＿ＭＡＸ＞Ｓ＿ＭＡＸであるために、Ｒ＿ＭＡＸが、上記の所定の数値範囲の上限値として設定される。従って、通信装置１０がプリンタである場合には、Ｆ＿ＳＩＺＥは、Ｒ＿ＭＡＸに従って決定される（換言すると、ＦＩＦＯ受信バッファＦＲＢの記憶容量に従って決定される）、と言える。また、例えば、通信装置１０がスキャナである場合には、Ｓ＿ＭＡＸ＞Ｒ＿ＭＡＸであるために、Ｓ＿ＭＡＸが、上記の所定の数値範囲の上限値として設定される。従って、通信装置１０がスキャナである場合には、Ｆ＿ＳＩＺＥは、Ｓ＿ＭＡＸに従って決定される（換言すると、ＦＩＦＯ送信バッファＦＳＢの記憶容量に従って決定される）、と言える。
【００６６】
決定部３０は、ユーザによって指定された値を、Ｆ＿ＳＩＺＥの設定値として、メモリ２４に記憶させる。なお、ユーザが、上記の所定の数値範囲に含まれない値を、Ｆ＿ＳＩＺＥの設定値として指定する場合に、決定部３０は、当該値がＦ＿ＳＩＺＥとして適切でないことを示すメッセージを、ユーザに通知してもよい。
【００６７】
Ｓ５２では、決定部３０は、ユーザによってジャンボフレーム設定＝ＯＮが選択されたのか否かを判断する。ジャンボフレーム設定＝ＯＮが選択された場合（Ｓ５２でＹＥＳの場合）には、Ｓ５４に進み、ジャンボフレーム設定＝ＯＦＦが選択された場合（Ｓ５２でＮＯの場合）には、Ｓ５８に進む。
【００６８】
（ジャンボフレーム環境であるのか否かの判断（Ｓ５４））
Ｓ５４では、判断部３８（図１参照）は、ＬＡＮ４がジャンボフレームを利用する環境であるのか否かを判断する。より具体的に言うと、例えば、通信装置１０が、ＬＡＮ４に含まれるＨＵＢ（図示省略）を介して、ＰＣ１００と通信可能に接続されている場合には、判断部３８は、ＨＵＢから、通信装置１０とＨＵＢとの間で実行可能な通信速度に関する信号を取得する。また、例えば、通信装置１０が、ＨＵＢを介さずに、ＰＣ１００と通信可能に接続されている場合には、判断部３８は、ＰＣ１００から、通信装置１０とＰＣ１００との間で実行可能な通信速度に関する信号を取得する。通信速度に関する上記の信号は、１０ＢＡＳＥ、１００ＢＡＳＥ、及び、１０００ＢＡＳＥのいずれかを示す。
【００６９】
例えば、通信速度が１０００ＢＡＳＥ（即ちギガビット）である場合には、ＬＡＮ４は、ジャンボフレームを利用する環境であり得る。従って、判断部３８は、通信速度に関する上記の信号が、１０００ＢＡＳＥ（例えば１０００ＢＡＳＥ−Ｔ）を示す場合には、ＬＡＮ４がジャンボフレームを利用する環境であると判断して（Ｓ５４でＹＥＳと判断して）、Ｓ５６に進む。一方において、例えば、通信速度が１０ＢＡＳＥ又は１００ＢＡＳＥである場合には、ＬＡＮ４は、通常、ジャンボフレームを利用する環境ではない。従って、判断部３８は、通信速度に関する上記の信号が、１０ＢＡＳＥ又は１００ＢＡＳＥ（例えば１００ＢＡＳＥ−Ｔ）を示す場合には、ＬＡＮ４がジャンボフレームを利用する環境でないと判断して（Ｓ５４でＮＯと判断して）、Ｓ５８に進む。
【００７０】
Ｓ５６では、決定部３０は、Ｓ５０でユーザによって指定されたＦ＿ＳＩＺＥを用いて、Ｓ＿ＭＳＳとＲ＿ＭＳＳとＳ＿ＭＴＵとＲ＿ＭＴＵとを決定する。Ｓ５６の処理の内容は、後で詳しく説明する。
【００７１】
（ジャンボフレームが利用されない場合（Ｓ５８））
Ｓ５８では、決定部３０は、メモリ２４に記憶されているＥＴＨ＿ＭＡＸを用いて、Ｓ＿ＭＳＳとＲ＿ＭＳＳとＳ＿ＭＴＵとＲ＿ＭＴＵとを決定する。具体的に言うと、決定部３０は、まず、メモリ２４からＥＴＨ＿ＭＡＸ、Ｖ１、及び、Ｖ２を取得する。次いで、決定部３０は、ＥＴＨ＿ＭＡＸからＶ２を減算することによって得られる値（即ち１４６０バイト）を、Ｓ＿ＭＳＳ及びＲ＿ＭＳＳとして決定する。即ち、Ｓ５８では、決定部３０は、同じ値を有するＳ＿ＭＳＳ及びＲ＿ＭＳＳを決定する。次いで、決定部３０は、決定した値（即ち１４６０バイト）を、Ｓ＿ＭＳＳ及びＲ＿ＭＳＳの設定値として、メモリ２４に記憶させる。
【００７２】
さらに、決定部３０は、ＥＴＨ＿ＭＡＸからＶ１を減算することによって得られる値（即ち１５００バイト）を、Ｓ＿ＭＴＵ及びＲ＿ＭＴＵとして決定する。即ち、Ｓ５８では、決定部３０は、同じ値を有するＳ＿ＭＴＵ及びＲ＿ＭＴＵを決定する。次いで、決定部３０は、決定した値（即ち１５００バイト）を、Ｓ＿ＭＴＵ及びＲ＿ＭＴＵの設定値として、メモリ２４に記憶させる。
【００７３】
（ジャンボフレームが利用される場合（Ｓ５６））
Ｓ５６の内容について詳しく説明する。なお、以下では、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳ、Ｓ＿ＭＴＵ、及び、Ｒ＿ＭＴＵの４個の値のことを、まとめて、「４個の最大データサイズ」と呼ぶ。Ｓ５６では、第１の取得部３１（図１参照）は、メモリ２４内のデータを読み込むことによって、メモリ２４に記憶されているＳ＿ＭＡＸ及びＲ＿ＭＡＸを取得する。Ｓ５６では、さらに、第２の取得部３２（図１参照）は、メモリ２４内のデータを読み込むことによって、メモリ２４に記憶されているＦ＿ＳＩＺＥを取得する。
【００７４】
（４個の最大データサイズの上限値（図５））
決定部３０は、４個の最大データサイズのそれぞれの上限値として、図５に示される各数式が示す各値を採用する。例えば、決定部３０は、Ｓ＿ＭＴＵの上限値として、Ｓ＿ＭＡＸからＶ１が減算された値を採用する。即ち、決定部３０は、Ｓ＿ＭＳＳの上限値として、Ｓ＿ＭＡＸからＶ２が減算された値を採用する。
【００７５】
仮に、Ｓ＿ＭＴＵの値が、Ｓ＿ＭＡＸからＶ１が減算された値よりも大きくなると、ＦＩＦＯ送信バッファＦＳＢが記憶不可能なデータサイズを有する送信フレームが生成され得る。これに対し、図５に示されるように、Ｓ＿ＭＡＸの値に基づいて、Ｓ＿ＭＴＵ及びＳ＿ＭＳＳの上限値が適切に決められていると、ＦＩＦＯ送信バッファＦＳＢが記憶不可能なデータサイズを有する送信フレームが生成されるのを防止することができる。
【００７６】
同様に、図５に示されるように、Ｒ＿ＭＡＸの値に基づいて、Ｒ＿ＭＴＵ及びＲ＿ＭＳＳの上限値が適切に決められていると、ＦＩＦＯ受信バッファＦＲＢが記憶不可能な受信フレームがＬＡＮ４から受信されるのを防止することができる。
【００７７】
（具体的な決定手法（図６））
決定部３０は、図６に示される各数式に従って、４個の最大データサイズのそれぞれを決定する。図６に示される各数式をプリンタに適用すると、図７に示されるように、４個の最大データサイズのそれぞれが決定され、図６に示される各数式をスキャナに適用すると、図８に示されるように、４個の最大データサイズのそれぞれが決定される。
【００７８】
（第１具体例（プリンタの場合）（図７））
上述したように、通信装置１０がプリンタである場合には、Ｒ＿ＭＡＸ＞Ｓ＿ＭＡＸの関係が満足し、さらに、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥの関係が満足する（図４のＳ５０参照）。図７に示されるように、決定部３０は、Ｓ＿ＭＡＸとＲ＿ＭＡＸとＦ＿ＳＩＺＥとの関係（即ち、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ、又は、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｓ＿ＭＡＸ）に基づいて、Ｓ＿ＭＴＵ及びＳ＿ＭＳＳを決定する。
【００７９】
一方において、決定部３０は、Ｓ＿ＭＡＸとＲ＿ＭＡＸとＦ＿ＳＩＺＥとの関係にかかわらず、Ｒ＿ＭＴＵ及びＲ＿ＭＳＳを決定する。具体的に言うと、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値、即ち、Ｆ＿ＳＩＺＥ−Ｖ１、Ｆ＿ＳＩＺＥ−Ｖ２を、それぞれ、Ｒ＿ＭＴＵ、Ｒ＿ＭＳＳとして決定する。
【００８０】
Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）を、Ｓ＿ＭＴＵ、Ｒ＿ＭＴＵとして決定する。また、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）を、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。
【００８１】
なお、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、４個の最大データサイズを決定する際に、Ｆ＿ＳＩＺＥから所定値（Ｖ１、Ｖ２）を減算する計算を実行して決定してもよいし、メモリ２４に予め格納されている値（例えば、Ｆ＿ＳＩＺＥ−Ｖ１に相当する値、Ｆ＿ＳＩＺＥ−Ｖ２に相当する値）を取得して決定してもよい。以下でも、「・・・を用いて得られる値を、・・・として決定する」と記載する場合には、計算して決定する手法と、メモリ２４から取得して決定する手法と、のどちらの手法が利用されてもよい。
【００８２】
Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｓ＿ＭＡＸである場合には、決定部３０は、Ｓ＿ＭＡＸを用いて得られる値（Ｓ＿ＭＡＸ−Ｖ１）、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）を、それぞれ、Ｓ＿ＭＴＵ、Ｒ＿ＭＴＵとして決定する。この場合、Ｓ＿ＭＴＵとＲ＿ＭＴＵとは、異なる値を有する。
【００８３】
Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｓ＿ＭＡＸである場合には、決定部３０は、Ｓ＿ＭＡＸを用いて得られる値（Ｓ＿ＭＡＸ−Ｖ２）、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）を、それぞれ、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。この場合、Ｓ＿ＭＳＳとＲ＿ＭＳＳとは、異なる値を有する。
【００８４】
なお、仮に、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｓ＿ＭＡＸである場合に、Ｓ＿ＭＡＸよりも大きいＦ＿ＳＩＺＥを用いて、Ｓ＿ＭＴＵ及びＳ＿ＭＳＳが決定されると、通信装置１０によって生成されるフレームのデータサイズが、ＦＩＦＯ送信バッファＦＳＢの記憶容量を超えてしまう可能性がある。この場合、通信装置１０は、フレームを送信することができない。このような事象が発生するのを抑制するために、図７の例では、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｓ＿ＭＡＸである場合に、Ｓ＿ＭＡＸを用いて、Ｓ＿ＭＴＵ及びＳ＿ＭＳＳが決定される。
【００８５】
（第２具体例（スキャナの場合）（図８））
上述したように、通信装置１０がスキャナである場合には、Ｓ＿ＭＡＸ＞Ｒ＿ＭＡＸの関係が満足し、さらに、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥの関係が満足する（図４のＳ５０参照）。図８に示されるように、決定部３０は、Ｓ＿ＭＡＸとＲ＿ＭＡＸとＦ＿ＳＩＺＥとの関係（即ち、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ、又は、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｒ＿ＭＡＸ）に基づいて、Ｒ＿ＭＴＵ及びＲ＿ＭＳＳを決定する。
【００８６】
一方において、決定部３０は、Ｓ＿ＭＡＸとＲ＿ＭＡＸとＦ＿ＳＩＺＥとの関係にかかわらず、Ｓ＿ＭＴＵ及びＳ＿ＭＳＳを決定する。具体的に言うと、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値、即ち、Ｆ＿ＳＩＺＥ−Ｖ１、Ｆ＿ＳＩＺＥ−Ｖ２を、それぞれ、Ｓ＿ＭＴＵ、Ｓ＿ＭＳＳとして決定する。
【００８７】
Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）を、Ｓ＿ＭＴＵ、Ｒ＿ＭＴＵとして決定する。また、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）を、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。
【００８８】
Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｒ＿ＭＡＸである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）、Ｒ＿ＭＡＸを用いて得られる値（Ｒ＿ＭＡＸ−Ｖ１）を、それぞれ、Ｓ＿ＭＴＵ、Ｒ＿ＭＴＵとして決定する。この場合、Ｓ＿ＭＴＵとＲ＿ＭＴＵとは、異なる値を有する。
【００８９】
Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｒ＿ＭＡＸである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）、Ｒ＿ＭＡＸを用いて得られる値（Ｒ＿ＭＡＸ−Ｖ２）を、それぞれ、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。この場合、Ｓ＿ＭＳＳとＲ＿ＭＳＳとは、異なる値を有する。
【００９０】
なお、仮に、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｒ＿ＭＡＸである場合に、Ｒ＿ＭＡＸよりも大きいＦ＿ＳＩＺＥを用いて、Ｒ＿ＭＴＵ及びＲ＿ＭＳＳが決定されると、ＰＣ１００から送信されるフレームのデータサイズが、ＦＩＦＯ受信バッファＦＲＢの記憶容量を超えてしまう可能性がある。この場合、通信装置１０は、フレームを受信することができない。このような事象が発生するのを抑制するために、図８の例では、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｒ＿ＭＡＸである場合に、Ｒ＿ＭＡＸを用いて、Ｒ＿ＭＴＵ及びＲ＿ＭＳＳが決定される。
【００９１】
（第１実施例の効果）
上述したように、図７の第１具体例に示されるように、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｓ＿ＭＡＸである場合には、通信装置１０は、ＦＩＦＯ送信バッファＦＳＢの記憶容量に応じて（即ち、当該記憶容量に応じて決定されるＳ＿ＭＡＸに基づいて）、Ｓ＿ＭＴＵ及びＳ＿ＭＳＳを決定すると共に、ＦＩＦＯ受信バッファＦＲＢの記憶容量に応じて（即ち、当該記憶容量に応じて決定されるＲ＿ＭＡＸを上限値として指定されるＦ＿ＳＩＺＥに基づいて）、Ｒ＿ＭＴＵ及びＲ＿ＭＳＳを決定する。
【００９２】
また、図８の第２具体例に示されるように、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｒ＿ＭＡＸである場合には、通信装置１０は、ＦＩＦＯ送信バッファＦＳＢの記憶容量に応じて（即ち、当該記憶容量に応じて決定されるＳ＿ＭＡＸを上限値としてユーザによって指定されるＦ＿ＳＩＺＥに基づいて）、Ｓ＿ＭＴＵ及びＳ＿ＭＳＳを決定すると共に、ＦＩＦＯ受信バッファＦＲＢの記憶容量に応じて（即ち、当該記憶容量に応じて決定されるＲ＿ＭＡＸに基づいて）、Ｒ＿ＭＴＵ及びＲ＿ＭＳＳを決定する。
【００９３】
即ち、本実施例によると、通信装置１０は、２個のバッファＦＳＢ，ＦＲＢのそれぞれの記憶容量に応じた適切な４個の最大データサイズを決定することができる。このために、通信装置１０は、２個のバッファＦＳＢ，ＦＲＢのそれぞれを効率よく活用することができる。この結果、通信装置１０は、Ｓ＿ＭＴＵ及びＳ＿ＭＳＳを用いて、送信フレームのための送信処理を効率よく実行することができると共に、Ｒ＿ＭＴＵ及びＲ＿ＭＳＳを用いて、受信フレームのための受信処理を効率よく実行することができる。
【００９４】
（対応関係）
図４のＳ５６で決定されるＳ＿ＭＴＵ及びＳ＿ＭＳＳの両方が「送信用最大データサイズ」の一例であり、図４のＳ５６で決定されるＲ＿ＭＴＵ及びＲ＿ＭＳＳの両方が「受信用最大データサイズ」の一例である。なお、Ｓ＿ＭＴＵが「送信用最大データサイズ」の一例である場合には、送信フレームに含まれるＩＰパケットが「送信対象データ」の一例である。Ｓ＿ＭＳＳが「送信用最大データサイズ」の一例である場合には、送信フレームに含まれるアプリケーションデータが「送信対象データ」の一例である。また、Ｒ＿ＭＴＵが「受信用最大データサイズ」の一例である場合には、受信フレームに含まれるＩＰパケットが「受信対象データ」の一例である。Ｒ＿ＭＳＳが「受信用最大データサイズ」の一例である場合には、受信フレームに含まれるアプリケーションデータが「受信対象データ」の一例である。
【００９５】
（第２実施例）
第１実施例と異なる点を説明する。本実施例では、図４のＳ５６の処理の内容が第１実施例と異なる。図９に示されるように、図４のＳ５６において、決定部３０は、Ｓ＿ＭＴＵ、Ｓ＿ＭＳＳ、及び、Ｒ＿ＭＳＳについて、第１実施例と同様の手法で決定する。ただし、決定部３０は、Ｒ＿ＭＴＵについて、第１実施例と異なる手法（図９に示される手法）で決定する。具体的に言うと、決定部３０は、Ｆ＿ＳＩＺＥの大きさにかかわらず、Ｒ＿ＭＡＸを用いて得られる値（Ｒ＿ＭＡＸ−Ｖ１）を、Ｒ＿ＭＴＵとして決定する。
【００９６】
（第１具体例（プリンタの場合）（図１０））
図１０は、通信装置１０がプリンタである場合に、本実施例のＳ５６の処理で決定される４個の最大データサイズを示す。図１０では、第１実施例の第１具体例（図７）と異なる部分をハッチングで示している。なお、プリンタの具体例を示す以下の図面（即ち、図１３、図１５、図１８）でも、第１実施例の第１具体例（図７）と異なる部分をハッチングで示している。
【００９７】
Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）、Ｒ＿ＭＡＸを用いて得られる値（Ｒ＿ＭＡＸ−Ｖ１）を、それぞれ、Ｓ＿ＭＴＵ、Ｒ＿ＭＴＵとして決定する。この場合、Ｓ＿ＭＴＵとＲ＿ＭＴＵとは、異なる値を有する。
【００９８】
また、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｓ＿ＭＡＸである場合には、決定部３０は、Ｓ＿ＭＡＸを用いて得られる値（Ｓ＿ＭＡＸ−Ｖ１）、Ｒ＿ＭＡＸを用いて得られる値（Ｒ＿ＭＡＸ−Ｖ１）を、それぞれ、Ｓ＿ＭＴＵ、Ｒ＿ＭＴＵとして決定する。この場合、Ｓ＿ＭＴＵとＲ＿ＭＴＵとは、異なる値を有する。
【００９９】
（第２具体例（スキャナの場合）（図１１））
図１１は、通信装置１０がスキャナである場合に、本実施例のＳ５６の処理で決定される４個の最大データサイズを示す。図１１では、第１実施例の第２具体例（図８）と異なる部分をハッチングで示している。なお、スキャナの具体例を示す以下の図面（例えば、図１４、図１６、図１９）でも、第１実施例の第２具体例（図８）と異なる部分をハッチングで示している。
【０１００】
Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥである場合でも、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞Ｒ＿ＭＡＸである場合でも、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）、Ｒ＿ＭＡＸを用いて得られる値（Ｒ＿ＭＡＸ−Ｖ１）を、それぞれ、Ｓ＿ＭＴＵ、Ｒ＿ＭＴＵとして決定する。この場合、Ｓ＿ＭＴＵとＲ＿ＭＴＵとは、異なる値を有する。
【０１０１】
（第２実施例の効果）
本実施例では、第１実施例と同様の効果が得られる。さらに、本実施例では、通信装置１０は、Ｆ＿ＳＩＺＥの値にかかわらず、Ｒ＿ＭＴＵとしてＲ＿ＭＡＸ−Ｖ１を決定する。この結果、非ＴＣＰの受信フレームのための受信処理で利用されるＲ＿ＭＴＵの値が大きくなり、受信フレームが破棄され難くなる（図２参照）。即ち、本実施例では、通信装置１０は、ＦＩＦＯ受信バッファＦＲＢを効率よく活用することができ、この結果、受信フレームのための受信処理を効率よく実行することができる。
【０１０２】
（第３実施例）
上記の各実施例と異なる点を説明する。本実施例では、図４のＳ５６の処理の内容が上記の各実施例と異なる。本実施例では、図４のＳ５６において、さらに、第３の取得部３３が、メモリ２４内のデータを読み込むことによって、メモリ２４に記憶されているＨＰ＿Ｓ＿ＳＩＺＥ（High Performance Send SIZE）及びＨＰ＿Ｒ＿ＳＩＺＥ（High Performance Receive SIZE）を取得する。
【０１０３】
（ＨＰ＿Ｓ＿ＳＩＺＥ）
ＨＰ＿Ｓ＿ＳＩＺＥは、Ｓ＿ＭＡＸの１／２倍に相当する値である。従って、ＦＩＦＯ送信バッファＦＳＢは、ＨＰ＿Ｓ＿ＳＩＺＥのデータサイズを有する２個の送信フレームを同時的に記憶することができる。仮に、ＨＰ＿Ｓ＿ＳＩＺＥのデータサイズを有する送信フレームが生成される構成を採用すると、処理実行部３６は、ＦＩＦＯ送信バッファＦＳＢに１個の送信フレームが記憶されている状態（即ち当該１個の送信フレームがＬＡＮ４に送信されている過程）において、次の１個の送信フレームを生成してメモリバッファＭＢからＦＩＦＯ送信バッファＦＳＢに当該次の１個の送信フレームを移動させ得る。このように、並列的な処理を実行し得るために、送信処理の効率が高くなり得る。
【０１０４】
従って、ＨＰ＿Ｓ＿ＳＩＺＥのデータサイズを有する送信フレームのための送信処理の効率は、通常、Ｓ＿ＭＡＸのデータサイズを有する送信フレームのための送信処理の効率よりも高い。なお、ＨＰ＿Ｓ＿ＳＩＺＥは、Ｓ＿ＭＡＸの１／２倍に相当する値でなくてもよく、Ｓ＿ＭＡＸの１／３倍に相当する値であってもよいし、Ｓ＿ＭＡＸの１／４倍に相当する値であってもよい。即ち、一般的に言うと、ＨＰ＿Ｓ＿ＳＩＺＥは、Ｓ＿ＭＡＸの１／ｍ倍（ｍは２以上の整数）に相当する値であってもよい。
【０１０５】
（ＨＰ＿Ｒ＿ＳＩＺＥ）
仮に、Ｒ＿ＭＡＸのデータサイズを有する１個の受信フレームが受信されると、当該１個の受信フレームがＦＩＦＯ受信バッファＦＲＢからメモリバッファＭＢに移動されない限り、次の１個の受信フレームを受信することができない。即ち、Ｒ＿ＭＡＸのデータサイズを有する受信フレームを受信する状況では、フレームの取りこぼし（dropping of frame）が発生し得る。
【０１０６】
これに対し、仮に、受信フレームのデータサイズが、Ｒ＿ＭＡＸの１／２倍に相当するデータサイズであれば、１個の受信フレームがＦＩＦＯ受信バッファＦＲＢに記憶されている状況であっても、次の１個の受信フレームを受信してＦＩＦＯ受信バッファＦＲＢに記憶させることができる。即ち、フレームの取りこぼしの発生を抑制することができる。フレームの取りこぼしの発生を抑制するために、本実施例では、Ｒ＿ＭＡＸの１／２倍に相当する値であるＨＰ＿Ｒ＿ＳＩＺＥを利用する。
【０１０７】
上記の説明から明らかなように、ＨＰ＿Ｒ＿ＳＩＺＥのデータサイズを有する受信フレームのための受信処理の効率は、通常、Ｒ＿ＭＡＸのデータサイズを有する受信フレームのための受信処理の効率よりも高い。なお、一般的に言うと、ＨＰ＿Ｒ＿ＳＩＺＥは、Ｒ＿ＭＡＸの１／ｎ倍（ｎは２以上の整数）に相当する値であってもよい。
【０１０８】
（具体的な決定手法（図１２））
本実施例では、図４のＳ５６の処理の内容が上記の各実施例と異なる。図１２に示されるように、図４のＳ５６において、決定部３０は、Ｓ＿ＭＴＵ及びＲ＿ＭＴＵについて、上記の各実施例と同様の手法で決定する。ただし、決定部３０は、Ｓ＿ＭＳＳ及びＲ＿ＭＳＳについて、上記の各実施例と異なる手法（図１２に示される手法）で決定する。
【０１０９】
（第１具体例（プリンタの場合）（図１３））
図１３は、通信装置１０がプリンタである場合に、本実施例のＳ５６の処理で決定されるＳ＿ＭＳＳ及びＲ＿ＭＳＳを示す。本実施例の第１具体例では、Ｒ＿ＭＡＸ＞ＨＰ＿Ｒ＿ＳＩＺＥ＞Ｓ＿ＭＡＸ＞ＨＰ＿Ｓ＿ＳＩＺＥの関係が満足し、さらに、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥの関係が満足する（図４のＳ５０参照）。
【０１１０】
ＨＰ＿Ｓ＿ＳＩＺＥ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）を、Ｓ＿ＭＳＳ及びＲ＿ＭＳＳとして決定する。  
【０１１１】
また、ＨＰ＿Ｒ＿ＳＩＺＥ≧Ｆ＿ＳＩＺＥ＞ＨＰ＿Ｓ＿ＳＩＺＥである場合には、決定部３０は、ＨＰ＿Ｓ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｓ＿ＳＩＺＥ−Ｖ２）、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）を、それぞれ、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。この場合、Ｓ＿ＭＳＳとＲ＿ＭＳＳとは、異なる値を有する。
【０１１２】
また、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞ＨＰ＿Ｒ＿ＳＩＺＥである場合には、決定部３０は、ＨＰ＿Ｓ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｓ＿ＳＩＺＥ−Ｖ２）、ＨＰ＿Ｒ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｒ＿ＳＩＺＥ−Ｖ２）を、それぞれ、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。この場合、Ｓ＿ＭＳＳとＲ＿ＭＳＳとは、異なる値を有する。
【０１１３】
（第２具体例（スキャナの場合）（図１４））
図１４は、通信装置１０がスキャナである場合に、本実施例のＳ５６の処理で決定されるＳ＿ＭＳＳ及びＲ＿ＭＳＳを示す。本実施例の第２具体例では、Ｓ＿ＭＡＸ＞ＨＰ＿Ｓ＿ＳＩＺＥ＞Ｒ＿ＭＡＸ＞ＨＰ＿Ｒ＿ＳＩＺＥの関係が満足し、さらに、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥの関係が満足する（図４のＳ５０参照）。
【０１１４】
ＨＰ＿Ｒ＿ＳＩＺＥ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）を、Ｓ＿ＭＳＳ及びＲ＿ＭＳＳとして決定する。
【０１１５】
また、ＨＰ＿Ｓ＿ＳＩＺＥ≧Ｆ＿ＳＩＺＥ＞ＨＰ＿Ｒ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）、ＨＰ＿Ｒ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｒ＿ＳＩＺＥ−Ｖ２）を、それぞれ、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。この場合、Ｓ＿ＭＳＳとＲ＿ＭＳＳとは、異なる値を有する。
【０１１６】
また、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞ＨＰ＿Ｓ＿ＳＩＺＥである場合には、決定部３０は、ＨＰ＿Ｓ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｓ＿ＳＩＺＥ−Ｖ２）、ＨＰ＿Ｒ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｒ＿ＳＩＺＥ−Ｖ２）を、それぞれ、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。この場合、Ｓ＿ＭＳＳとＲ＿ＭＳＳとは、異なる値を有する。
【０１１７】
（ＨＰ＿Ｓ＿ＳＩＺＥ＝Ｓ＿ＭＡＸの場合）
上述したように、図１３の第１具体例及び図１４の第２具体例では、ＨＰ＿Ｓ＿ＳＩＺＥは、Ｓ＿ＭＡＸの１／２倍に相当する値である。ただし、図１５の第３具体例及び図１６の第４具体例では、ＨＰ＿Ｓ＿ＳＩＺＥ＝Ｓ＿ＭＡＸを採用する。
【０１１８】
上述したように、Ｓ＿ＭＡＸの１／２倍に相当するデータサイズ（ＨＰ＿Ｓ＿ＳＩＺＥ）を有する送信フレームが生成される場合には、並列的な処理を実行し得るために、送信処理の効率が高くなり得る。ただし、送信処理の効率は、並列的な処理が実行されても、それほど大きく変わるわけではない。このような実情に鑑みて、以下の第３具体例及び第４具体例では、ＨＰ＿Ｓ＿ＳＩＺＥ＝Ｓ＿ＭＡＸを採用する。即ち、一般的に言うと、ＨＰ＿Ｓ＿ＳＩＺＥは、Ｓ＿ＭＡＸの１／ｍ倍（ｍは１以上の整数）に相当する値であってもよい。ｍ＝１である場合には、ＨＰ＿Ｓ＿ＳＩＺＥのデータサイズを有する送信フレームのための送信処理の効率は、Ｓ＿ＭＡＸのデータサイズを有する送信フレームのための送信処理の効率と同じである。従って、一般的に言うと、ＨＰ＿Ｓ＿ＳＩＺＥのデータサイズを有する送信フレームのための送信処理の効率は、Ｓ＿ＭＡＸのデータサイズを有する送信フレームのための送信処理の効率以上である。
【０１１９】
ただし、上述したように、Ｒ＿ＭＡＸのデータサイズを有する受信フレームを受信する状況では、フレームの取りこぼしが発生し得る。特に、通信相手が複数個のフレームを高頻度で送信する場合には、フレームの取りこぼしが発生し易い。即ち、フレームの取りこぼしの発生の有無は、通信相手の送信頻度に依存するところが大きく、通信装置１０は、当該送信頻度をコントロールすることができない。従って、可能な限り、Ｒ＿ＭＡＸの１／２倍に相当するデータサイズを有する受信フレームを受信する状況になるように、以下の第３具体例及び第４具体例でも、上記の第１具体例及び第２具体例と同様に、Ｒ＿ＭＡＸの１／２倍に相当する値を有するＨＰ＿Ｒ＿ＳＩＺＥを利用する。即ち、ＨＰ＿Ｒ＿ＳＩＺＥ＝Ｒ＿ＭＡＸを採用しない。
【０１２０】
（第３具体例（プリンタの場合）（図１５））
本実施例の第３具体例では、Ｒ＿ＭＡＸ＞ＨＰ＿Ｒ＿ＳＩＺＥ＞Ｓ＿ＭＡＸ＝ＨＰ＿Ｓ＿ＳＩＺＥの関係が満足し、さらに、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥの関係が満足する（図４のＳ５０参照）。
【０１２１】
Ｓ＿ＭＡＸ（＝ＨＰ＿Ｓ＿ＳＩＺＥ）≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）を、Ｓ＿ＭＳＳ及びＲ＿ＭＳＳとして決定する。
【０１２２】
また、ＨＰ＿Ｒ＿ＳＩＺＥ≧Ｆ＿ＳＩＺＥ＞Ｓ＿ＭＡＸ（＝ＨＰ＿Ｓ＿ＳＩＺＥ）である場合には、決定部３０は、Ｓ＿ＭＡＸ（＝ＨＰ＿Ｓ＿ＳＩＺＥ）を用いて得られる値（Ｓ＿ＭＡＸ−Ｖ２）、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）を、それぞれ、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。この場合、Ｓ＿ＭＳＳとＲ＿ＭＳＳとは、異なる値を有する。
【０１２３】
また、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞ＨＰ＿Ｒ＿ＳＩＺＥである場合には、決定部３０は、Ｓ＿ＭＡＸ（＝ＨＰ＿Ｓ＿ＳＩＺＥ）を用いて得られる値（Ｓ＿ＭＡＸ−Ｖ２）、ＨＰ＿Ｒ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｒ＿ＳＩＺＥ−Ｖ２）を、それぞれ、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。この場合、Ｓ＿ＭＳＳとＲ＿ＭＳＳとは、異なる値を有する。
【０１２４】
（第４具体例（スキャナの場合）（図１６））
本実施例の第４具体例では、Ｓ＿ＭＡＸ＝ＨＰ＿Ｓ＿ＳＩＺＥ＞Ｒ＿ＭＡＸ＞ＨＰ＿Ｒ＿ＳＩＺＥの関係が満足し、さらに、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥの関係が満足する（図４のＳ５０参照）。
【０１２５】
ＨＰ＿Ｒ＿ＳＩＺＥ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）を、Ｓ＿ＭＳＳ及びＲ＿ＭＳＳとして決定する。
【０１２６】
また、Ｓ＿ＭＡＸ（＝ＨＰ＿Ｓ＿ＳＩＺＥ）≧Ｆ＿ＳＩＺＥ＞ＨＰ＿Ｒ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ２）、ＨＰ＿Ｒ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｒ＿ＳＩＺＥ−Ｖ２）を、それぞれ、Ｓ＿ＭＳＳ、Ｒ＿ＭＳＳとして決定する。この場合、Ｓ＿ＭＳＳとＲ＿ＭＳＳとは、異なる値を有する。
【０１２７】
（第３実施例の効果）
本実施例では、第１実施例と同様の効果が得られる。さらに、本実施例では、通信装置１０は、可能な限り（即ちＦ＿ＳＩＺＥ＞ＨＰ＿Ｓ＿ＳＩＺＥである場合に）、ＨＰ＿Ｓ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｓ＿ＳＩＺＥ−Ｖ２）を、Ｓ＿ＭＳＳとして決定する。この場合、通信装置１０は、図３のＳ４０において、ＨＰ＿Ｓ＿ＳＩＺＥを用いて得られる値（即ちＳ＿ＭＳＳ）に基づいて第２のＭＴＵを算出し得る。即ち、通信装置１０は、図３のＳ４０において、ＨＰ＿Ｓ＿ＳＩＺＥのデータサイズを有する送信フレームを生成し得る。従って、通信装置１０は、ＴＣＰの送信フレームのための送信処理を効率よく実行し得る。
【０１２８】
また、通信装置１０は、可能な限り（即ちＦ＿ＳＩＺＥ＞ＨＰ＿Ｒ＿ＳＩＺＥである場合に）、ＨＰ＿Ｒ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｒ＿ＳＩＺＥ−Ｖ２）を、Ｒ＿ＭＳＳとして決定する。この場合、例えば、図３において、通信装置１０がＳＹＮ／ＡＣＫ信号を送信する際に、通信装置１０は、ＨＰ＿Ｓ＿ＳＩＺＥを用いて得られる値（即ちＲ＿ＭＳＳ）を、ＰＣ１００に通知する。従って、ＰＣ１００は、ＨＰ＿Ｓ＿ＳＩＺＥのデータサイズを有する受信フレームを生成し得る。この結果、通信装置１０は、ＨＰ＿Ｓ＿ＳＩＺＥのデータサイズを有する受信フレームを受信し得る。従って、通信装置１０は、ＴＣＰの受信フレームのための受信処理を効率よく実行し得る。
【０１２９】
なお、本実施例では、ＨＰ＿Ｓ＿ＳＩＺＥ、ＨＰ＿Ｒ＿ＳＩＺＥが、それぞれ、「送信用高効率フレームサイズ」、「受信用高効率フレームサイズ」の一例である。
【０１３０】
（第４実施例）
第３実施例と異なる点を説明する。本実施例では、図４のＳ５６の処理の内容が第３実施例と異なる。図１７に示されるように、図４のＳ５６において、決定部３０は、Ｒ＿ＭＴＵ、Ｓ＿ＭＳＳ、及び、Ｒ＿ＭＳＳについて、第３実施例と同様の手法で決定する。ただし、決定部３０は、Ｓ＿ＭＴＵについて、第３実施例と異なる手法（図１７に示される手法）で決定する。
【０１３１】
（第１具体例（プリンタの場合）（図１８））
本実施例の第１具体例では、Ｒ＿ＭＡＸ＞ＨＰ＿Ｒ＿ＳＩＺＥ＞Ｓ＿ＭＡＸ＞ＨＰ＿Ｓ＿ＳＩＺＥの関係が満足し、さらに、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥの関係が満足する（図４のＳ５０参照）。
【０１３２】
ＨＰ＿Ｓ＿ＳＩＺＥ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）を、Ｓ＿ＭＴＵ及びＲ＿ＭＴＵとして決定する。
【０１３３】
また、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞ＨＰ＿Ｓ＿ＳＩＺＥである場合には、決定部３０は、ＨＰ＿Ｓ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｓ＿ＳＩＺＥ−Ｖ１）、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）を、それぞれ、Ｓ＿ＭＴＵ、Ｒ＿ＭＴＵとして決定する。この場合、Ｓ＿ＭＴＵとＲ＿ＭＴＵとは、異なる値を有する。
【０１３４】
上述したように、第１具体例では、決定部３０は、Ｆ＿ＳＩＺＥの大きさにかかわらず、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）を、Ｒ＿ＭＴＵとして決定する。これに代えて、変形例では、決定部３０は、Ｆ＿ＳＩＺＥの大きさにかかわらず、Ｒ＿ＭＡＸを用いて得られる値（Ｒ＿ＭＡＸ−Ｖ１）を、Ｒ＿ＭＴＵとして決定してもよい（第２実施例の第１具体例（図１０）参照）。
【０１３５】
（第２具体例（スキャナの場合）（図１９））
本実施例の第２具体例では、Ｓ＿ＭＡＸ＞ＨＰ＿Ｓ＿ＳＩＺＥ＞Ｒ＿ＭＡＸ＞ＨＰ＿Ｒ＿ＳＩＺＥの関係が満足し、さらに、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥの関係が満足する（図４のＳ５０参照）。
【０１３６】
Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）を、Ｓ＿ＭＴＵ及びＲ＿ＭＴＵとして決定する。
【０１３７】
また、ＨＰ＿Ｓ＿ＳＩＺＥ≧Ｆ＿ＳＩＺＥ＞Ｒ＿ＭＡＸである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）、Ｒ＿ＭＡＸを用いて得られる値（Ｒ＿ＭＡＸ−Ｖ１）を、それぞれ、Ｓ＿ＭＴＵ、Ｒ＿ＭＴＵとして決定する。この場合、Ｓ＿ＭＴＵとＲ＿ＭＴＵとは、異なる値を有する。
【０１３８】
また、Ｓ＿ＭＡＸ≧Ｆ＿ＳＩＺＥ＞ＨＰ＿Ｓ＿ＳＩＺＥである場合には、決定部３０は、ＨＰ＿Ｓ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｓ＿ＳＩＺＥ−Ｖ１）、Ｒ＿ＭＡＸを用いて得られる値（Ｒ＿ＭＡＸ−Ｖ１）を、それぞれ、Ｓ＿ＭＴＵ、Ｒ＿ＭＴＵとして決定する。この場合、Ｓ＿ＭＴＵとＲ＿ＭＴＵとは、異なる値を有する。
【０１３９】
上述したように、第２具体例では、Ｒ＿ＭＡＸ≧Ｆ＿ＳＩＺＥである場合には、決定部３０は、Ｆ＿ＳＩＺＥを用いて得られる値（Ｆ＿ＳＩＺＥ−Ｖ１）を、Ｒ＿ＭＴＵとして決定する。これに代えて、変形例では、決定部３０は、Ｆ＿ＳＩＺＥの大きさにかかわらず、Ｒ＿ＭＡＸを用いて得られる値（Ｒ＿ＭＡＸ−Ｖ１）を、Ｒ＿ＭＴＵとして決定してもよい（第２実施例の第２具体例（図１１）参照）。
【０１４０】
（第４実施例の効果）
本実施例では、第１実施例と同様の効果が得られる。さらに、本実施例では、通信装置１０は、可能な限り（即ちＦ＿ＳＩＺＥ＞ＨＰ＿Ｓ＿ＳＩＺＥである場合に）、ＨＰ＿Ｓ＿ＳＩＺＥを用いて得られる値（ＨＰ＿Ｓ＿ＳＩＺＥ−Ｖ１）を、Ｓ＿ＭＴＵとして決定する。この場合、通信装置１０は、図２のＳ２０において、ＨＰ＿Ｓ＿ＳＩＺＥのデータサイズを有する送信フレームを生成し得る。従って、通信装置１０は、ＵＤＰの送信フレームのための送信処理を効率よく実行し得る。
【０１４１】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【０１４２】
（変形例１）上記の各実施例では、通信装置１０は、プリンタ又はスキャナである。ただし、通信装置１０は、ＦＡＸ装置、電話機、ＰＣ、サーバ、携帯電話、ＰＤＡ等であってもよい。この場合、通信装置１０のベンダは、データの送信機能とデータの受信機能とのうち、重視されるべき一方の機能に対応するバッファの記憶容量が、他方の機能に対応するバッファの記憶容量よりも大きくなるように、通信装置１０を設計してもよい。
【０１４３】
（変形例２）上記の各実施例では、ＣＰＵ２２がプログラムに従った処理を実行することによって、各部３０〜３８の機能が実現される。ただし、各部３０〜３８のうちの少なくとも１つの機能は、論理回路等のハードウェアによって実現されてもよい。
【０１４４】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【０１４５】
２：通信システム、１０：通信装置、３０：決定部、３６：処理実行部、３８判断部、ＦＳＢ：ＦＩＦＯ送信バッファ、ＦＲＢ：ＦＩＦＯ受信バッファ、Ｓ＿ＭＳＳ：送信用ＭＳＳ、Ｒ＿ＭＳＳ：受信用ＭＳＳ、Ｓ＿ＭＴＵ：送信用ＭＴＵ、Ｒ＿ＭＴＵ：受信用ＭＴＵ
【図１】
0005573709.tif 000002
【図２】
0005573709.tif 000003
【図３】
0005573709.tif 000004
【図４】
0005573709.tif 000005
【図５】
0005573709.tif 000006
【図６】
0005573709.tif 000007
【図７】
0005573709.tif 000008
【図８】
0005573709.tif 000009
【図９】
0005573709.tif 000010
【図１０】
0005573709.tif 000011
【図１１】
0005573709.tif 000012
【図１２】
0005573709.tif 000013
【図１３】
0005573709.tif 000014
【図１４】
0005573709.tif 000015
【図１５】
0005573709.tif 000016
【図１６】
0005573709.tif 000017
【図１７】
0005573709.tif 000018
【図１８】
0005573709.tif 000019
【図１９】
0005573709.tif 000020