受信側の通信装置から再送要求されたシーケンス番号のデータユニットを再送信する機能を有する通信装置であって、送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット以下、PDUという。を格納する送信バッファ手段と、前記PDUのヘッダに送信側トランザクション識別子を付加して前記受信側の通信装置へ送信する送信手段と、前記送信したPDUに対して前記受信側の通信装置から異常受信応答NAKを受信したとき、当該NAKに前記シーケンス番号と前記送信側トランザクション識別子とが含まれているならば、前記送信側トランザクション識別子を更新したPDUを前記受信側の通信装置へ再送信し、前記送信側トランザクション識別子を更新した後で前記受信側の通信装置から受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する制御手段と、を有することを特徴とする通信装置。前記送信バッファ手段に格納される前記PDUの格納アドレスを当該PDUの前記シーケンス番号として用い、当該シーケンス番号に次に送信すべきPDUのPDU長を加算した値を当該次に送信すべきPDUのシーケンス番号として用いることを特徴とする請求項1に記載の通信装置。前記次に送信すべきPDUのシーケンス番号が前記送信バッファ手段の格納容量の先頭アドレスを超えて一巡する場合には前記送信側トランザクション識別子を更新することを特徴とする請求項2に記載の通信装置。正常受信応答ACKあるいはNAKの生成要求と前記送信バッファ手段からのPDU読出しとが競合する場合、当該PDUのヘッダに正常受信応答ACKあるいはNAK用のシーケンス番号およびトランザクション識別子を付加することを特徴とする請求項1-3のいずれか1項に記載の通信装置。受信側の通信装置から再送要求されたシーケンス番号のデータユニットを再送信する機能を有する通信装置における通信制御方法であって、送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット以下、PDUという。を送信バッファ手段に格納し、送信手段が前記PDUのヘッダに送信側トランザクション識別子を付加して前記受信側の通信装置へ送信し、前記送信したPDUに対して前記受信側の通信装置から異常受信応答NAKを受信したとき、当該NAKに前記シーケンス番号と前記送信側トランザクション識別子とが含まれているならば、前記送信側トランザクション識別子を更新したPDUを前記受信側の通信装置へ再送信し、前記送信側トランザクション識別子を更新した後で前記受信側の通信装置から受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する、ことを特徴とする通信装置における通信制御方法。前記送信バッファ手段に格納される前記PDUの格納アドレスを当該PDUの前記シーケンス番号として用い、当該シーケンス番号に次に送信すべきPDUのPDU長を加算した値を当該次に送信すべきPDUのシーケンス番号として用いることを特徴とする請求項5に記載の通信装置における通信制御方法。前記次に送信すべきPDUのシーケンス番号が前記送信バッファ手段の格納容量の先頭アドレスを超えて一巡する場合には前記送信側トランザクション識別子を更新することを特徴とする請求項6に記載の通信装置における通信制御方法。正常受信応答ACKあるいはNAKの生成要求と前記送信バッファ手段からのPDU読出しとが競合する場合、当該PDUのヘッダに正常受信応答ACKあるいはNAK用のシーケンス番号およびトランザクション識別子を付加することを特徴とする請求項5-7のいずれか1項に記載の通信装置における通信制御方法。端末間で再送要求されたシーケンス番号のデータユニットを再送信する再送機能を有するデータ通信システムであって、送信側端末が、送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット以下、PDUという。を送信バッファ手段に格納し、前記PDUのヘッダに送信側トランザクション識別子を付加して受信側端末へ送信し、前記受信側端末が、前記PDUを正常受信できなかった場合には、前記シーケンス番号および前記送信側トランザクション識別子含む異常受信応答NAKを前記送信側端末へ返信し、前記PDUを正常受信した場合には、次に受信すべきPDUのシーケンス番号および前記送信側トランザクション識別子含む正常受信応答ACKを前記送信側端末へ返信し、前記送信側端末が、前記NAKを受信したならば、前記送信側トランザクション識別子を更新したPDUを前記受信側端末へ再送信し、前記送信側トランザクション識別子を更新した後で前記受信側端末からNAKを受信した場合、当該受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する、ことを特徴とするデータ通信システム。受信側の通信装置から再送要求されたシーケンス番号のデータユニットを再送信する機能を有する通信装置におけるプログラム制御プロセッサを機能させるプログラムであって、送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット以下、PDUという。を送信バッファ手段に格納し、送信手段が前記PDUのヘッダに送信側トランザクション識別子を付加して前記受信側の通信装置へ送信し、前記送信したPDUに対して前記受信側の通信装置から異常受信応答NAKを受信したとき、当該NAKに前記シーケンス番号と前記送信側トランザクション識別子とが含まれているならば、前記送信側トランザクション識別子を更新したPDUを前記受信側の通信装置へ再送信し、前記送信側トランザクション識別子を更新した後で前記受信側の通信装置から受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する、ように前記プログラム制御プロセッサを機能させることを特徴とするプログラム。しかしながら、上記したNAKによるパケット再送要求方式では、送信側で保持しているRTF以降、送信RTFと称すの値と現実のRTT以降、現実RTTと称すとの間に差が生じると、次のような問題が発生する。以下、図3を参照して現実RTTと送信RTFの差による問題を示す。図3Aは、現実RTTg-21が送信RTFの時間g-20より小さい場合現実RTT<送信RTF-1×FTの例であり、図3Bは、現実RTTg-25が送信RTFの時間g-20より大きい場合現実RTT>送信RTF-1×FTの例である。なおFTFrameTimeは1フレーム送信するのにかかる時間である。図3Aの場合、g-23およびg-24以外のNAK2N2が全て無視されるため、NAK無視による再送遅延g-22が発生する。図3Bの場合、無視すべきg-27、g-28のNAKを無視することが出来ず、NAK誤認による誤再送g-26が発生する。このように、現実RTTと送信RTFとの間に差が生じると、遅延あるいは無駄な再送が発生しスループットが低下する。また、可変長フレームの場合にも誤再送または再送遅延によりスループットが低下する。その理由は、送信RTFが送信側のRTTに相当するフレーム数としているため、フレーム長が一定でない可変フレーム長の場合にはフレーム毎にFTが変わり送信RTF-1×FTが変化する。このために、送信RTFと現実RTTとの間に差が発生し、同様にスループット低下の問題が生じてしまう。そこで本発明の目的は、ラウンドトリップ遅延時間RTTの変化および可変長フレームに起因するスループット低下を回避でき、NAKを用いた高速再転送を達成できる通信装置および通信制御方法を提供することにある。本発明による通信装置は、受信側の通信装置から再送要求されたシーケンス番号のデータユニットを再送信する機能を有する通信装置であって、送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット以下、PDUという。を格納する送信バッファ手段と、前記PDUのヘッダに送信側トランザクション識別子を付加して前記受信側の通信装置へ送信する送信手段と、前記送信したPDUに対して前記受信側の通信装置から異常受信応答NAKを受信したとき、当該NAKに前記シーケンス番号と前記送信側トランザクション識別子とが含まれているならば、前記送信側トランザクション識別子を更新したPDUを前記受信側の通信装置へ再送信し、前記送信側トランザクション識別子を更新した後で前記受信側の通信装置から受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する制御手段と、を有することを特徴とする。本発明による通信制御方法は、受信側の通信装置から再送要求されたシーケンス番号のデータユニットを再送信する機能を有する通信装置における通信制御方法であって、送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット以下、PDUという。を送信バッファ手段に格納し、送信手段が前記PDUのヘッダに送信側トランザクション識別子を付加して前記受信側の通信装置へ送信し、前記送信したPDUに対して前記受信側の通信装置から異常受信応答NAKを受信したとき、当該NAKに前記シーケンス番号と前記送信側トランザクション識別子とが含まれているならば、前記送信側トランザクション識別子を更新したPDUを前記受信側の通信装置へ再送信し、前記送信側トランザクション識別子を更新した後で前記受信側の通信装置から受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する、ことを特徴とする。本発明によれば、ラウンドトリップ遅延時間RTTの変化および可変長フレームに起因するスループット低下を回避できNAKを用いた高速再転送を達成できる。本発明によれば、送信側端末が送信フレームおよびACK/NAKフレームのヘッダにシーケンス番号に加えてトランザクション識別子を付加し、受信側の端末がNAKで要求した再送フレーム以外のフレームを受信する度に、同じ内容のNAKを送信側へ送信する。送信側端末は、受信側から受信したNAKフレームのトランザクション識別子から当該NAKに対して再送機能を適用すべきか否かを判断し、適用済みのNAKであれば当該NAKを廃棄する。再送機能を適用する場合には、トランザクション識別子の更新を行い、NAKのシーケンス番号から特定される再送フレームのヘッダに更新されたトランザクション識別子を付与して受信側端末へ送信する。このようにして送信側端末は、RTTを使用することなくNAKの識別が可能となり、フレーム誤り/ロスから回復することができる。以下図面を参照しながら本発明の実施形態について詳細に説明する。1.第1実施形態1.1構成図4に示すように、本発明の第1実施形態による通信装置は、端末10および20が具備するネットワークインタフェースカードNICNetworkInterfaceCardに適用されている。端末10と端末20とはそれぞれのNICを通して回線1および回線2により相互に接続されているものとする。ここでは、回線1を通して端末10から端末20へ信号が送信され、回線2を通して端末20から端末10へ信号が送信される。NICとしては一般的によく知られているイーサネットNICイーサネットは登録商標、以下同じ。を例示するので、以下、パケットはフレームとして説明される。また端末10と端末20とは同じ内部構成を有するので、以下、端末10の構成について説明する。端末10に設けられたNIC12は他ブロック11に接続され、NIC12を通して端末20と回線1および回線2で接続される。他ブロック11はCPU等の上位ブロックであり、外部へデータを送信するためにデータをNIC12へ出力し、外部からのデータをNIC12経由で入力する。本実施形態を適用したNIC12は、内部インタフェース部100、ヘッダ付与部101、送信バッファ部102、ACK/NAK生成部103、トランザクション識別子付与部114、ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105、送信部106、受信部108、ヘッダ誤り訂正部109、フレーム誤り検出部110、フレーム識別部111、送信バッファ制御部112、および、受信バッファ部113を有する。内部インタフェース部100は、他ブロック11から送信用のデータを入力し、ヘッダ付与部101へ出力する。また、読み出し可能なデータが受信バッファ113にある場合、受信バッファ113からデータを入力し他ブロック11へ出力する。ヘッダ付与部101は内部インタフェース部100からデータを入力し、シーケンス番号を含むフレームヘッダを付与したデータをフレームとして送信バッファ102へ出力する。また、送信バッファ102からのバッファ空き情報を入手し、空きサイズが閾値を超えた場合、内部インタフェース部100へデータ出力の停止を要求する。なお、ヘッダには、再送に使用するタイプ、フラグ、シーケンス番号以外にあて先アドレス、送信元アドレス等のフレームの送信に必要な情報が付加される。送信バッファ部102は、ヘッダ付与部101、ACK/NAK生成部103および送信バッファ制御部112に接続する。送信バッファ部102は、ヘッダ付与部101から入力したフレームをフレームに付与されているシーケンス番号に従い保存する。また、送信バッファ部102は、読出し可能なフレームが存在する場合には即読出してACK/NAK生成部103へ出力し、ACK/NAK生成部103から読出し停止の指示がある場合にはフレームの読出しを停止する。さらに、送信バッファ制御部112からの再送信指示に従い、当該再送信フレームを再度読出しACK/NAK生成部103へ出力する。また、送信バッファ部102は、送信バッファ制御部112からの指示により、送信バッファ上にあるフレームの削除を行う。ACK/NAK生成部103は、送信バッファ部102、トランザクション識別子付与部114およびフレーム識別部111に接続する。ACK/NAK生成部103は、フレーム識別部111からACK/NAK生成指示があると、送信バッファ部102へフレームの読出し停止を指示し、フレーム識別部111からのACK/NAK生成指示に従いACKまたはNAKを生成する。フレーム識別部111からACK/NAK生成指示がない場合、送信バッファ部102へフレームの読出し停止を解除し、送信バッファ部102から入力したフレームをトランザクション識別子付与部114へ出力する。なお、ACK/NAK生成指示には、次に受信すべきフレームのシーケンス番号およびそのフレームに付与されていたトランザクション識別子の情報が含まれ、生成するACK/NAKに、次に受信すべきフレームのシーケンス番号とトランザクション識別子とを付与する。トランザクション識別子付与部114は、ACK/NAK生成部103、ヘッダ誤り訂正符号付与部104およびフレーム識別部111に接続する。トランザクション識別子付与部114は、フレーム識別部111から入力した再送/更新指示により、ACK/NAK生成部103から入力したフレームが再送フレームであるか否かを知る。再送フレームである場合、トランザクション識別子を更新付与し当該フレームをヘッダ誤り訂正符号付与部104へ出力する。再送フレームでない場合、現在保持しているトランザクション識別子を付与し当該入力フレームをヘッダ誤り訂正符号付与部104へ出力する。なお、再送/更新指示には、NAKに設定されている再送を要求するフレームのシーケンス番号およびそのフレームに付与されていたトランザクション識別子の情報が含まれる。ヘッダ誤り訂正符号付与部104は、トランザクション識別子付与部114とフレーム誤り検出符号付与部105とに接続する。ヘッダ誤り訂正符号付与部104は、トランザクション識別子付与部114からフレームを入力すると、当該入力フレームのヘッダ部に対する誤り訂正符号を計算し、ヘッダの一部として当該フレームに付与する。また、ヘッダ誤り訂正符号付与部104は、ヘッダ誤り訂正符号を付与したフレームをフレーム誤り検出符号付与部105へ出力する。ヘッダ誤り訂正符号としては、一般的によく用いられるハミング、RS、BCH符号などを使用する。フレーム誤り検出符号付与部105は、ヘッダ誤り訂正符号付与部104と送信部106とに接続する。フレーム誤り検出符号付与部105は、ヘッダ誤り訂正符号付与部104からフレームを入力すると、当該入力フレームに対する誤り検出符号を計算し、当該フレームに付与する。また、フレーム誤り検出符号付与部105は、フレーム誤り検出符号を付与したフレームを送信部106へ出力する。フレームの誤り検出としては、一般的によく用いられるCRC符号などを使用する。送信部106はフレーム誤り検出符号付与部105に接続し、回線1を通して端末20に接続する。送信部106はフレーム誤り検出符号付与部105からフレームを入力し、フレームの符号化、スクランブル、シリアライズを行い、回線1を介して送信する。送信部106はイーサネットでいうPCS、PMA、PMD相当の送信機能を持つ。受信部108はヘッダ誤り訂正部109に接続し、回線2を通して端末20に接続する。受信部108は、回線2を介して受信した信号をデシリアライズ、デスクランブル、復号化し、フレームとしてヘッダ誤り訂正部109へ出力する。受信部108はイーサネットでいうPCS、PMA、PMD相当の受信機能を持つ。ヘッダ誤り訂正部109は受信部108とフレーム誤り検出部110とに接続する。ヘッダ誤り訂正部109は、受信部108からフレームを入力すると、当該入力フレームのヘッダ部に対する誤り訂正を行い、訂正結果と当該ヘッダ誤り訂正済みフレームをフレーム誤り検出部110へ出力する。フレーム誤り検出部110はヘッダ誤り訂正部109とフレーム識別部111とに接続する。フレーム誤り検出部110は、ヘッダ誤り訂正部109からフレームを入力すると、当該フレームの誤り検出を行い、誤り検出結果と、ヘッダ誤り訂正結果と、当該フレームおよび当該フレーム長とをフレーム識別部111へ出力する。フレーム識別部111は、フレーム誤り検出部110、送信バッファ制御部112、ACK/NAK生成部103、トランザクション識別子付与部114および受信バッファ部113に接続する。フレーム識別部111は、フレーム誤り検出部110からヘッダ誤り訂正結果、フレーム誤り検出結果、フレームおよびフレーム長を入力すると、ヘッダ誤り訂正結果、フレーム誤り検出結果およびフレームヘッダの内容に応じて処理を行う。具体的には、受信フレームがACK/NAKの場合、当該フレームヘッダに設定されているトランザクション識別子から適用すべきACK/NAKを判断し、適用する場合、再送/更新指示を送信バッファ制御部112およびトランザクション識別子付与部114へ出力する。受信フレームがACK/NAKフレーム以外の場合、当該フレームヘッダに設定されているシーケンス番号とトランザクション識別子を抽出し、当該フレームのフレーム誤り検出結果が誤り有の場合には、NAK生成指示を抽出したシーケンス番号とトランザクション識別子と一緒にACK/NAK生成部103へ出力し、当該フレームを廃棄する。フレーム誤り検出結果が誤り無しの場合、抽出したシーケンス番号が次に受信すべきシリアル番号であるか比較し、異なる場合、NAK生成指示を次に受信すべきシリアル番号と抽出したトランザクション識別子と一緒に、ACK/NAK生成部103へ出力し、受信バッファ部113へ出力する。抽出したシーケンス番号が次に受信すべきシリアル番号と一致する場合、ACK生成指示を、抽出したシーケンス番号にフレーム長を加算した番号と抽出したトランザクション識別子とを一緒に、ACK/NAK生成部103へ出力し、また当該フレームを受信バッファ部113へ出力する。送信バッファ制御部112は、フレーム識別部111と送信バッファ部102とに接続する。送信バッファ制御部112は、再送/更新指示をフレーム識別部111から入力すると、その内容が再送指示である場合には送信バッファ102へシーケンス番号と再送指示を出力する。更新指示の場合には、送信バッファ102内の当該フレームを削除するため、送信バッファ102へシーケンス番号と更新指示を出力する。受信バッファ部113はフレーム識別部111と受信バッファ部113とに接続する。受信バッファ部113は、フレーム識別部111からフレームを入力すると、当該フレームをシーケンス番号に従って保存する。また、フレーム識別部111からフレームの廃棄指示があると当該フレームを廃棄する。さらに、受信バッファ部113は、読出し可能なフレームが存在する場合には内部インタフェース部100へ通知し、内部インタフェース部100からのフレーム読出し指示に従いフレームを読出し内部インタフェース部100へ出力する。なお、フレームの読出しはシーケンス番号順に行われる。以上、端末10におけるNIC12の構成を述べたが、本発明に関連しない構成要素は省略されている。上記構成以外にも、たとえばコネクションの確立手段、再送信タイマ手段なども当然有している。なお、ACK/NAK生成部103、フレーム識別部111、送信バッファ制御部112およびトランザクション識別子付与部114の機能は、NIC12の制御手段としてプログラム制御プロセッサ上で図示しないメモリに格納されたプログラムを実行することにより実現することも可能である。1.2動作次に、図4~図14を参照しながら、本実施形態による通信装置の動作について説明する。ここでは、端末10から端末20へデータの転送を行うものとして説明する。図5は誤り発生時の端末間伝送シーケンスを示しているが、ここでは説明の便宜上、ACKを受信せずに送信できる受信ウインドウサイズを4フレーム分とし、フレーム長を1とし、再送回数を2回までとしている。また、図5では、送信フレームF50および再送信フレームF51でフレーム誤り/ロスが発生し、またNAKフレームN51でフレームロスが発生し、これらフレーム誤り/ロスから回復するまでのシーケンスを示している。図中のFは送信/再送信フレームを表し、NおよびAはNAKおよびACKをそれぞれ表す。これらの記号においてはフレームに付与されるシーケンス番号であり、は当該フレームのトランザクション識別子を表す。なお、本実施形態ではシーケンス番号の初期値を‘5’、トランザクション識別子の初期値‘0’として説明する。以下、図5に示す送信側端末10の処理A-1~A-10および受信側端末20の処理B-1~B-6のうち代表的な処理を図6~図11を参照しながら順を追って説明する。1.2.1送信側処理A-1まず、端末10のNIC12が他ブロック11から送信データを入力して送信部106から送信フレームF50を端末20へ送信するまでの処理動作A-1を説明する。図6AはNIC12が他ブロック11から入力する送信データを示し、ヘッダ情報g-40はデータg-41を送信するのに必要な情報であり、ここではイーサネットを例示しているので、宛先アドレス、送信元アドレスおよびType/LengthなどMACヘッダ情報である。<ヘッダ付与>端末10と端末20との間でコネクションが確立し、他ブロック11から図6Aに示す送信データが内部インタフェース部100に与えられると、内部インタフェース部100はヘッダ付与部101からの送信データ受け取り停止指示が有効でない限り、送信データをヘッダ付与部101へ出力する。なお、ヘッダ付与部101から送信データ受け取り停止指示が有効である場合、内部インタフェース部100は送信データの停止要求を他ブロック11へ出力する。送信データがヘッダ付与部101に与えられると、ヘッダ付与部101は、送信バッファ部102からフレーム出力停止指示が無い限り、送信データに再送ヘッダg-42を付与する図6B参照。送信バッファ部102のフレーム出力停止指示が有効であれば、ヘッダ付与部101は送信データ受け取り停止指示を内部インタフェース部100へ出力する。図6Bに示すように、再送ヘッダg-42はタイプ、フラグおよびシーケンス番号で構成される。タイプは再送ヘッダを識別するのに使用するため任意の値イーサネットでは2バイト分を設定する。フラグは、SN、NAK、ACK、RTの4ビットで構成し、フレームの識別に使用する。初回フレーム送信時は、SNフラグに‘1’を設定し、再送時のフレームにはRTに‘1’を設定する。また、受信側端末20でACK、NAKを送信する際に、各々のビットに‘1’を設定する。なお、図5に示す処理A-1の時点で、ヘッダ付与部101は、SN=1、ACK=0、NAK=0、RT=0を設定する。シーケンス番号は、一般的な再送制御では、送信フレームを特定するために使用されるが、本実施形態では、その他に送信バッファにおけるフレームの先頭アドレスをも示す。すなわち、当該フレームのシーケンス番号と当該フレーム長の和が次フレームのシーケンス番号であると共に、送信バッファ部102へフレームを保存する際の先頭アドレスともなる。このシーケンス番号をもとに送信バッファおよび受信バッファの読出しおよび書き込み制御が行われる。ヘッダ付与部101により再送ヘッダg-42が付与されたフレームは送信バッファ部102へ出力される。<送信バッファ保存>図6Cは送信バッファ部102に保存されたフレームと当該フレームの先頭アドレスおよびシーケンス番号の関係を示した図である。図中のSR、srd、src、SW、swrは、送信バッファ部102においてフレームの保存読出し制御に使用されるアドレスである。なお、srcは通常srdと一緒にカウントされ、初回読出しが終了したアドレスを示す。SRはACKを受信していないフレームの先頭アドレス、srdは送信バッファ部102からフレームを読出す間のアドレス、SWは次に送信バッファ部102に保存されるフレームの先頭アドレス、swrは送信バッファ部102にフレームを書き込みする間のアドレスである。この時点での各値は、SR=3d-3、srd=src=5d-5、SW=6d-6、swr=7d-7である。また図6Bのフレームに付与されるシーケンス番号g-48=5d-5である。図6Bに示すフレームF5g-49が与えられると、送信バッファ部102は、図6Bに示す再送ヘッダg-42のシーケンス番号g-48ここでは値‘5’に従って、図6Cに示すようにフレームF5g-49をアドレスd-5へ保存する。つまり、シーケンス番号g-48の値とバッファ内アドレスd-5とが等しい値となる。なお、フレームの書き込み中はswrを使用し、1フレーム分の書き込みが終了する毎にSWにswrを代入することで、バッファの書き込みアドレスを更新していく。フレームF5の書き込みが終了すると、SWには値‘6’が設定される。送信バッファ部102は、読出し可能なフレームが存在する場合、当該フレームの読出しを行い、ACK/NAK生成部103へ出力する。図6Cの場合、srd値5d-5<SW値6d-6であるため、読出し可能なフレームと判断され、srd値5d-5~SW値6d-6までのフレームが自動的に読み出されることになる。なお、srd=SWの条件の場合、読出し可能なフレームはないと判断する。ACK/NAK生成部103から読出し停止指示が与えられると、送信バッファ部102は読出し停止指示が解除されるまでフレームの読出しを停止する。<ACK/NAK生成>フレームF5g-49が与えられると、ACK/NAK生成部103は、フレーム識別部111から、ACK/NAK生成指示がない限り、当該フレームをトランザクション識別子付与部114へ出力する図12のステップS50、S51、S56を参照。ただし、ここでは図5に示すような端末10から端末20への片方向通信であるから、端末10のACK/NAK生成部103がACK/NAKを生成することはない。<トランザクション識別子の付与>図6Dに示すフレームF5g-49を送信バッファ部102からACK/NAK生成部103を通して入力したトランザクション識別子付与部114はトランザクション識別子XIDの付与を行い、図6Eに示すフレームF5g-50を出力する。以下、トランザクション識別子付与部114の動作を図13を参照しながら説明する。図13において、フレームF5g-49がトランザクション識別子付与部114に与えられるとステップS70の有、トランザクション識別子付与部114は、フレームF5g-49の初回フレーム送信を示すSNフラグが‘1’であるか否かをチェックするステップS71。この時点ではフレームF5g-49のSNフラグ=1であるからステップS71の一致、トランザクション識別子付与部114はフレーム識別部111から再送指示があるか否かをチェックするステップS72。この時点でフレーム識別部111から再送指示はないのでステップ72の無、トランザクション識別子付与部114は当該フレームF5g-49のシーケンス番号SEQと一つ前のフレームに設定されていたシーケンス番号PRE_SEQとを比較するステップS78。PRE_SEQ<SEQを満たさない場合ステップS78の偽、図6Cにおいてシーケンス番号が一巡しているため、現在のトランザクション識別子XIDを更新するステップS74。トランザクション識別子XIDの更新は、後述する受信側端末20におけるフレーム識別部111の処理ステップS07図14参照で、当該フレームが未受信であるかどうかを判断する際に必要となる。この時点で図6Cで示すようにPRE_SEQ=4、SEQ=5であるから、トランザクション識別子付与部114は、図6Eのg-51で示すように、トランザクション識別子XID=0を当該フレームへ付与しステップS75、またPRE_SEQの値を更新するステップS76。こうしてトランザクション識別子XID=0を付与したフレームF5g-50すなわち、F50をヘッダ誤り訂正符号付与部104へ出力するステップS77。なお、後述するように、図5におけるA-4処理においてフレーム識別部111から再送指示、RCV_SEQ、RCV_XIDを含む再送指示が与えられた場合にはステップS72の有、トランザクション識別子付与部114はフレームF5に設定されている再送を示すRTフラグ=‘1’であり、且つ当該フレームのシーケンス番号とRCV_SEQが一致する場合にはステップS73の真、トランザクション識別子XIDをRCV_XIDに1を加算した値に更新してステップS74、当該フレームに付与しステップS75、ヘッダ誤り訂正符号付与部104へ出力するステップS77。ステップS73において一致しない場合はステップS73の偽、フレーム識別部111で保持しているXIDを当該フレームのトランザクション識別子XIDとして付与するステップS75。以上のステップS73~S75については、A-4処理のところで改めて説明する。<誤り訂正、検出>図4および図6に戻って、こうして図6Eに示すフレームF5g-50が与えられると、ヘッダ誤り訂正符号付与部104は図6Eに示すフレームF5g-50の宛先アドレス~Type/Length領域前までの領域に対する誤り訂正符号を計算し、Type/Length領域の前にその計算結果を付与した後図6Fのg-53、当該フレームをフレーム誤り検出符号付与部105へ出力する。図6Fに示すフレームF5g-52が与えられると、フレーム誤り検出符号付与部105は、図6Fに示すフレームF5g-52の宛先アドレス~データまでの領域に対する誤り検出符号を計算し、フレームの末尾に付与した後図6Gのg-55、当該フレームを送信部106へ出力する。<送信>こうして送信部106は、図6Gに示すフレームF5g-54すなわち、図5のF50を符号化、スクランブリング、シリアライズし、回線1を介して端末20へ送信する。以上、送信側では、上記の動作を図5における処理A-2、A-5、A-6、A-8、A-10で同様に行う。なお、処理A-6において、ACKを受信することなく送信できるウインドウサイズ値4に達するため、処理受信側のB-5のNAKN51を受信するまでフレーム送信を停止する。1.2.2受信側処理B-1次に、図5の受信側処理B-1について説明するが、上述したように端末20に設けられたNICは図4に示す送信側端末10のNIC12と同じ内部構成を有するので、以下、図4のNIC12を参照しながら、受信側処理B-1、すなわちデータ部に誤りがあるフレームF50を受信してからNAKN50を送信するまでの処理動作を説明する。<受信>図7Aに示すように、受信側端末20のNICにおける受信部108は受信フレームF50を受信すると、受信フレームデータをデシリアライズ、デスクランブリング、復号化し、ヘッダ誤り訂正部109へ出力する。<誤り訂正、検出>受信部108からフレームF50を入力すると、ヘッダ誤り訂正部109は宛先アドレスからヘッダ誤り訂正符号領域前までのヘッダ誤りを当該フレームに付与されているヘッダ誤り訂正符号を使用して訂正する。また、ヘッダ誤り訂正部109は訂正済み当該フレームと訂正完了/訂正未完了示す誤り訂正結果をフレーム誤り検出部110へ出力する。フレーム誤り検出部110は、ヘッダ誤り訂正済みフレームF50と訂正結果を入力すると、宛先アドレスからデータまでのフレーム誤りを当該フレームに付与されているフレーム誤り検出符号を使用して検出する。さらに、フレーム誤り検出部110は当該フレーム長をカウントする。ただし、フレーム長のカウントは、送信バッファと受信バッファのアドレスの整合をとるため、当該フレームに含まれるXIDとフレーム誤り検出符号とを除いて行う。そして、フレーム誤り検出部110は、図7Bのg-60、g-61およびg-62に示すように、誤り訂正結果、誤り検出結果およびフレーム長LENを当該フレームに含めてフレーム識別部111へ出力する。<フレーム識別>図14において、ステップS30~S34は送信側におけるフレーム識別部111の処理フロー、ステップS03~S23は受信側におけるフレーム識別部111の処理フローである。ステップS00~S02は送受信両側で行われる処理である。フレーム識別部111は、フレームの識別、管理を行うため、NAKテーブルと以下の変数を使用する。NEXT_SEQ:受信側の変数であり、次に受信すべきシーケンス番号である。NHED_SEQ:受信側の変数であり、NAKテーブル上に登録された受信済み先頭フレームのシーケンス番号である。NNAK_SEQ:受信側の変数であり、NAKテーブル上に登録されたNEXT_SEQの次に要求すべきフレームのシーケンス番号である。REG_SXID:送信側の変数であり、受信したフレームに付与されているトランザクション識別子と比較することで、送信側で適用すべきACK/NAKを判定する際に使用する。REG_RXID:受信側の変数であり、受信したフレームに付与されているトランザクション識別子と比較することで、受信側で受信済みフレームであるかを判定する際に使用する。RCV_SEQ:当該受信フレームに含まれるシーケンス番号である。RCV_XID:当該受信フレームに含まれるトランザクション識別子である。LEN:受信した当該フレームのフレーム長である。本実施形態は、説明を容易にするためLEN=1としているが、実際には、MACのフレーム長である64バイト~1518バイト設定される。NAKテーブルは、受信側で、NEXT_SEQ以降のシーケンス番号を含むフレームを受信バッファ部113上で管理するために使用される。受信側では、このNAKテーブルにより既受信フレーム/未受信フレームを判断し、NEXT_SEQの次に受信すべきシーケンス番号を管理する。図15は、送信側端末10および受信側端末20にそれぞれ設けられたフレーム識別部111における図5の送信側処理A-1~A-10と受信側処理B-1~B-6における上記各変数の値と受信フレームおよび送信フレームとを示している。図5の処理B-1時点での各変数は、図15AのB-1よりNEXT_SEQ=5、REG_RXID=0、RCV_SEQ=5、RCV_XID=0であり、その他の値はNULLである。図14に戻って、フレーム識別部111は、図7Bに示すフレームを入力すると、ヘッダ誤り訂正が完了しているか否かをチェックするステップS00。ヘッダ誤りが完了していない場合、当該フレームを削除するステップS01。ヘッダ誤り訂正が完了している場合、フレーム識別部111は当該フレームに付与されているフラグの確認を行うステップS02。図7Bに示すフレームF50のフラグには、SN=1、ACK=0、NAK=0、RT=0が設定されているため、受信したフレームが初回送信フレームであると識別できる。なお、フラグのACKまたはNAKに1が設定されている場合、当該フレームがACK/NAKであると判断する。続いて、当該フレームに設定されているシーケンス番号RCV_SEQが、NEXT_SEQの値と一致するか確認を行うステップS03。図5の処理B-1において、RCV_SEQとNEXT_SEQとは一致するため、次に、フレーム識別部111は、REG_RXIDの値を更新しステップS21、当該フレームに誤りが無いか否かをチェックするステップS04。図5の処理B-1では、フレームF50に誤りが含まれているため、フレーム識別部111は、NEXT_SEQのシーケンス番号を含むNAK生成指示をACK/NAK生成部103へ出力しステップS05、当該フレームを廃棄するステップS06。<ACK/NAK生成>ACK/NAK生成部103は、図7Cに示すNEXT_SEQのシーケンス番号を含むNAK生成指示を入力すると、NAK生成指示に従いNAKを生成し、トランザクション識別子付与部114へ出力する図12におけるステップS50、S52、S57参照。このときフレームに付与されるフラグはSN=0、ACK=0、NAK=1、RT=0であり、シーケンス番号には‘5’が、XIDには‘0’がそれぞれ設定される。なお、送信バッファ部102からの読出しフレームが有る場合、ACK/NAK生成部103は読出し停止指示を送信バッファ部102へ出力し、フレーム識別部111からのACK/NAK生成指示に従い、ACKまたはNAKを生成してトランザクション識別子付与部114へ出力する図12のステップS50、S51、S53、S54、S55、S56参照。<トランザクション識別子付与>図13に示すように、トランザクション識別子付与部114は、図7Dに示すNAKN50を入力するとステップS70、NAKN50のSNフラグが1であるかをチェックするステップS71。NAKN50のSNフラグは0であることから、送信/再送信フレームでないと判断し、トランザクション識別子付与部114は当該NAKをヘッダ誤り訂正符号付与部104へ出力するステップS77。<誤り訂正、検出>ヘッダ誤り訂正符号付与部104は、トランザクション識別子付与部114からNAKN50を入力すると、図7Dに示すNAKN50の宛先アドレス~Type/Length領域前までの領域に対する誤り訂正符号を計算し、Type/Length領域の前にその計算結果を付与した後図7Eのg-53、当該フレームをフレーム誤り検出符号付与部105へ出力する。図7Eに示すNAKN50を入力すると、フレーム誤り検出符号付与部105は当該NAKN50の宛先アドレス~パディングまでの領域に対する誤り検出符号を計算し、フレームの末尾に付与した後図7Fのg-55、当該フレームを送信部106へ出力する。<送信>送信部106は、図7Fに示すNAKN50を入力すると、フレームデータを符号化、スクランブリングおよびシリアライズし、回線2を介して端末10へ送信する。1.2.3送信側処理A-3次に、図5の処理A-3、すなわち端末10がNAKN50を受信してから再送フレームF51を送信するまでの処理動作を説明する。まず、NAKN50を受信部108で受信してからフレーム誤り検出部110でフレーム誤りを検出するまでの処理<受信>および<誤り訂正、検出>に関しては、送信側でも前述の処理B-1と同様であるから省略する。<フレーム識別>図14において、フレーム識別部111は、フレーム誤り検出部110から、NAKN50、当該NAKヘッダの誤り訂正結果、当該NAKの誤り検出結果および当該NAKフレーム長を入力すると、ヘッダ誤り訂正が完了しているか否かをチェックするステップS00。なお、図5の処理A-3時点での各変数は、図15AのA-3欄よりREG_SXID=0、RCV_SEQ=5、RCV_XID=0、LEN=1であり、その他の値はNULLである。処理A-3でNAKN50には誤りがないためヘッダ誤り訂正が完了しているステップS00の完了。次に、フレーム識別部111は、当該フレームに付与されているフラグの確認を行うステップS02。NAKN50のフラグには、SN=0、ACK=0、NAK=1、RT=0が設定されているため、受信したフレームがNAKであると識別できるステップS02のACK/NAK。続いて、当該フレームに設定されているトランザクション識別子以降RCV_XIDが次に適用すべきACK/NAKに付与されるトランザクション識別子以降REG_SXIDと、以下の条件4を満たすか否かをチェックするステップS30。RCV_XID≧REG_SXID条件4条件4を満たさない場合ステップS30の偽、当該ACK/NAKは適用済みと判断し無視廃棄する。この時点ではREG_SXID=0、RCV_XID=0であるから条件4を満たすステップS30の真。次にフラグからACK/NAKの識別を行うステップS31。N50にはNAK=1のフラグが設定されているため、当該フレームよりRCV_SEQ、RCV_XIDを抽出し、図8Aに示す再送指示を送信バッファ制御部112とトランザクション識別子付与部114へ出力するステップS34。この時点でRCV_SEQ=5、RCV_XID=0である。続いて、RCV_XIDに1を加算した値をREG_SXIDに設定して更新するステップS33。この時点でREG_SXID=1となる。なお、本実施形態では、REG_SXIDの更新にRCV_XIDを使用しているが、トランザクション識別子付与部114で保持しているXIDを使用しても良い。<送信バッファ制御>図8Aに示す再送指示が送信バッファ制御部112に与えられると、送信バッファ制御部112は、再送指示と再送フレームの先頭アドレスを示すRCV_SEQ値5を送信バッファ部102へ出力する。送信バッファ部102は、再送指示および再送フレームの先頭アドレスを示すRCV_SEQ値5を入力すると、RCV_SEQのアドレス5d-5に保存されているフレームから読出しを開始する。また、このとき、初回読出しが終了しているフレームに対して、再送フレームであることを示すRT=1のフラグを付与する。図5の処理A-3の時点で、送信バッファ部102内の各アドレスは、図8Bに示すように、SRはACK/NAKを受けていないので、図6と同じ値3d-3であり、srdとsrcはフレームF60が送信されているため値7d-7であり、SWは値7d-7、swrは値8d-8である。ここで、送信バッファ部102が再送指示とRCV_SEQ値5を受けると、図8Cに示すように、srd値7d-7およびSR値3d-3の値を受信したRCV_SEQ値5d-5に設定し、アドレスsrdからフレームの読出しを開始する。また、src=srdになるまで、読み出されたフレームのRTフラグに1を設定する。なお、アドレスSR=5d-5に更新されることで、それ以前のフレームF3およびフレームF4は送信バッファ部102上から削除される。<ACK/NAK生成>再度読み出されたフレームF5がACK/NAK生成部103に与えられると、ACK/NAK生成部103は、上述した処理A-1と同様にフレーム識別部111からACK/NAK生成指示がない場合には当該フレームをトランザクション識別子付与部114へ出力する。図12のステップS50、S51、S56。<トランザクション識別子付与>図13において、図8Dに示すフレームF5がトランザクション識別子付与部114に与えられステップS70、S71、さらにフレーム識別部111から再送指示、RCV_SEQ、RCV_XIDを含む再送指示が与えられるとステップS72、トランザクション識別子付与部114はフレームF5に設定されているRTフラグ再送を示すが‘1’であり且つ当該フレームのシーケンス番号とRCV_SEQが一致するか否かチェックするステップS73。RT=1かつRCV_SEQ=SEQであればステップS73の真、RCV_XIDに1を加算した値をトランザクション識別子XIDg-65として図8Eのg-65のように当該フレームへ付与しステップS74、S75、ヘッダ誤り訂正符号付与部104へ出力するステップS77。一致しない場合はステップS73の偽、フレーム識別部111で保持しているXIDを付与するステップS75。図5の処理A-3の時点では、RCV_SEQ値5、RCV_XID値0、フレームFのシーケンス番号は値5、RTフラグは値1であるから、XID=1となる。<誤り訂正、検出および送信>ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106は、図5の処理A-1と同様の処理であり再送フレームF51が回線1を介して端末20へ送信される。以上、送信側では上記の動作を図5における処理A-7でも同様に行う。1.2.4受信側処理B-2次に、図5の処理B-2、すなわち端末20がフレームF60を受信してからNAKフレームN50を送信するまでの処理動作を説明する。図5の受信側処理B-2において、フレームF60を受信部108が受信してからフレーム誤り検出部110でフレーム誤りを検出するまでの処理<受信>および<誤り訂正、検出>は前述の処理B-1と同様であるから説明は省略する。<フレーム識別>図14において、フレーム識別部111は、フレームF60、ヘッダ誤り訂正結果、フレーム誤り検出結果および当該フレーム長を入力すると、ヘッダ誤り訂正が完了しているか否かをチャックするステップS00。フレームF60には誤りが無いため、ヘッダ誤り訂正結果は完了訂正の必要がないとなる。なお、図5の処理B-2時点での各変数は図15BのB-2欄よりNEXT_SEQ=5、REG_RXID=0、RCV_SEQ=6、RCV_XID=0、LEN=1であり、その他の値はNULLである。次にフレーム識別部111は、当該フレームに付与されているフラグの確認を行うステップS02。図9Aに示すフレームF60のフラグには、SN=1、ACK=0、NAK=0、RT=0が設定されているため、受信したフレームが初回送信フレームであると識別できるステップS02のSN。したがって、フレーム識別部111は、当該フレームに設定されているシーケンス番号RCV_SEQがNEXT_SEQの値と一致するか否かをチェックするステップS03。図5の受信側処理B-2の時点で、当該フレームのRCV_SEQは値6、NEXT_SEQは値5であるから、不一致となるステップS03の不一致。次にフレーム識別部111は、RCV_SEQ、RCV_XIDが以下の条件1を満たすか否かをチェックするステップS07。RCV_SEQ<NEXT_SEQ且つRCV_XID==REG_RXID条件1条件1を満たす場合ステップS07の真、受信フレームは既に受信しているフレームとなるため無視廃棄し、NAK生成指示をACK/NAK生成部103へ出力するステップS05。図5の処理B-2の時点で条件1は満たされないためステップS07の偽、フレーム識別部111は当該フレームF60がNAKテーブルに登録済みであるか否かをチェックするステップS08。図5の処理B-2の時点で、NAKテーブルには登録がないので、当該フレームF60をNAKテーブルに登録するステップS09。NAKテーブルへの登録は、受信フレームのシーケンス番号RCV_SEQをNHED_SEQへ、シーケンス番号RCV_REQ受信フレーム長LENをNNAK_SEQへ設定することで行う。この時点では、RCV_SEQ=6、LEN=1であるため、図9Bに示すNHED_SEQ1には値6d-6、NNAK_SEQ1には値7d-7が登録される。次にフレーム識別部111は、NEXT_SEQを含むNAK生成指示をACK/NAK生成部103へ出力するステップS10。ここで出力されるNAK指示は図5の処理B-1で供給されたNAK指示と同一の指示となる。次にフレーム識別部111は、当該フレームに誤りの有無をチェックするステップS11。フレームF60には誤りが無いため、当該フレームからRCV_XID、ヘッダ誤り訂正結果、フレーム誤り検出結果およびLENを削除した図9Cに示すフレームF6とNEXT_SEQとを受信バッファ部113へ出力するステップS12。なお、誤りがある場合、当該フレームを廃棄するステップS06。次に、ステップS09におけるNAKテーブルへの登録方法について図16を用いて詳しく説明する。<NAKテーブルへの登録>図16A~Gは、NAKテーブルへ、受信フレームのRCV_SEQおよびRCV_SEQLENをNHED_SEQpとNNAK_SEQpとして登録する際の処理を示した図であり、Fwは登録すべきフレームであり、Fx、Fyは既に登録されているフレームである。また左のNAKテーブルはA~GにおけるNAKテーブルのFw登録前後の状態をそれぞれ示す。テーブル内のHpはNHED_SEQpであり、NpはNNAK_SEQpである。図16における参照記号d-99は受信側で次に受信すべきシーケンス番号NEXT_SEQであり、d-100~d-107は受信フレームのシーケンス番号RCV_SEQまたは受信フレームのシーケンス番号RCV_SEQに受信フレーム長LENを加算した番号である。まず、登録無のNAKテーブルにフレームFwを登録する場合、図16Aのように、フレームFwのRCV_SEQd-102を、NHED_SEQ1に、RCV_SEQLENd-103を、NNAK_SEQ1へ登録する。次に図16Bのように、登録済みフレームFxがあり、フレームFxのシーケンス番号d-102とフレームFwのRCV_SEQLENとが一致する場合、フレームFwのRCV_SEQd-101をNHED_SEQ1に設定してNHED_SEQ1を更新する。次に図16Cのように、登録済みフレームFxがあり、フレームFxのシーケンス番号LENd-103とフレームFwのRCV_SEQとが一致する場合、フレームFwのRCV_SEQLENd-104をNNAK_SEQ1に設定してNNAK_SEQ1を更新する。次に図16Dのように、登録済みフレームFxがあり、フレームFxのシーケンス番号d-102とフレームFwのRCV_SEQLENd-101とが一致しない場合、フレームFxのシーケンス番号d-102をNHED_SEQ2へ、またフレームFxのシーケンス番号LENd-103をNNAK_SEQ2に設定し、フレームFwのRCV_SEQd-100をNHED_SEQ1へ、フレームFwのRCV_SEQLENd-101をNNAK_SEQ1に登録する。次に図16Eのように、登録済みフレームFxがあり、フレームFxのシーケンス番号d-102とフレームFxのシーケンス番号LENd-103とが、フレームFwのRCV_SEQまたRCV_SEQLENと一致しない場合、フレームFwのRCV_SEQd-106をNHED_SEQ2に設定し、また、フレームFwのRCV_SEQLENd-107をNNAK_SEQ2に登録する。次に図16Fのように、登録済みフレームFxとフレームFyがあり、フレームFxのシーケンス番号LENd-103とフレームFwのRCV_SEQとが一致し、またフレームFyのシーケンス番号d-106とフレームFwのRCV_SEQLENとが一致する場合、フレームFxのシーケンス番号d-102をNHED_SEQ1に設定し、また、フレームFyのシーケンス番号LENd-107をNNAK_SEQ1設定し、NHED_SEQ1、NNAK_SEQ1を更新する。また、NHED_SEQ2、NNAK_SEQ2をNAKテーブル上から削除する。次に図16Gのように、登録済みフレームFxとフレームFyがあり、フレームFxのシーケンス番号LENd-103とフレームFwのRCV_SEQとが一致せず、またフレームFyのシーケンス番号d-106とフレームFwのRCV_SEQLENとが一致しない場合、フレームFyのシーケンス番号d-106をNHED_SEQ3へ、またフレームFyのシーケンス番号LENd-107をNNAK_SEQ3に設定し、フレームFwのRCV_SEQd-104をNHED_SEQ2へ、フレームFwのRCV_SEQLENd-105をNNAK_SEQ3に登録する。このように、NAKテーブルは、当該フレームが未登録である場合、SEQの若い順に登録し、NHED_SEQとNNAC_SEQとが同じ値になる行を統合することで、登録数を抑えることが出来る。なお、図14内で使用されるNHED_SEQとNNAC_SEQとは、図9Bに示すp=1の行に登録されたNHED_SEQ1、NNAC_SEQ1になる。<受信バッファ>図9Cに示すフレームF6とNEXT_SEQとが受信バッファ部113に与えられると、受信バッファ部113はフレームF6内のRCV_SEQに従い当該フレームF6を保存する。図9DにおけるRR、rrd、RW、rwrは、送信バッファ部102と同様に受信バッファ部113内でのフレームの保存読出し制御に使用されるアドレスを示している。RRは読出しが完了していないフレームの先頭アドレス、rrdは受信バッファ部113からフレームを読出す間のアドレス、RWは次に受信バッファ部113へ保存されるフレームの先頭アドレス、rwrは受信バッファ部113へフレームを書き込みする間のアドレスである。この時点での各値は、RR=rrd=RW=rwr=5d-5である。与えられたフレームF6のRCV_SEQは値6であることから、受信バッファ部113上のアドレスrwrに値6d-6を設定し、アドレスd-6から当該フレームF6を保存する。受信フレームF6保存後の、受信バッファ部113上の各アドレスは、図9Eに示すように、RR=rrd=RW=5d-5、rwr=7d-7となる。また、保存終了後、アドレスRWにNEXT_SEQを代入し、アドレスRWを更新し、更新したアドレスRWとアドレスRRを内部インタフェース部100へ出力する。受信バッファ部113上のd-6はNAKリストのNHED_SEQ1であり、d-7は、NAKリストのNNAK_SEQ1となる。受信バッファ部113からのフレーム読出しは、RR<RWの条件が満たされるとき読出しが開始される。RWはACK/NAKを返信する際に更新され、その値はNEXT_SEQとなる。rrdとRRは受信バッファ部113からフレームを読み出す毎に更新される。<読み出し>更新されたアドレスRWとアドレスRRが内部インタフェース部100に与えられると、内部インタフェース部100は、受信したアドレスが、以下の条件2を満たすか否かをチェックする。RR<RW条件2図5の処理B-2において、RR=5、WR=5であり、条件2を満たさないため、受信バッファ部113内に読出し可能なフレームがないと判断し読出し処理を行わない。なお、条件2が満たされた場合、内部インタフェース部100は受信バッファ部113へ読出し指示を出力し、受信バッファ部113から読み出されたフレームを他ブロック11へと出力する。<送信>なお、図4におけるACK/NAK生成部103、トランザクション識別子付与部114、ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106の処理は、図5の処理B-1と同様の処理であり、NAKN50を回線2を介して端末10へ送信する。以上、受信側では上記の動作を図5における処理B-4および処理B-5でも同様に行う。1.2.5送信側処理A-4次に、図5の処理A-4、すなわち端末10がNAKN50を受信した際の処理動作を説明する。図5の処理A-4において、NAKN50を受信部108が受信してからフレーム誤り検出部110でフレーム誤りを検出するまでの処理は前述の処理B-1と同様であるから説明は省略する。図14において、フレーム誤り検出部110からNAKN50、当該NAKヘッダの誤り訂正結果、当該NAK誤り検出結果および当該NAKフレーム長を入力すると、フレーム識別部111はヘッダ誤り訂正が完了しているか否かをチェックするステップS00。図5の処理A-4ではNAKN50には誤りが無いため、ヘッダ誤り訂正が完了訂正の必要がないためしている。図5の処理A-4時点での各変数は、図15AのA-4欄よりREG_SXID=1、RCV_SEQ=5、RCV_XID=0、LEN=1であり、その他の値はNULLである。次に、フレーム識別部111は、当該フレームに付与されているフラグの確認を行うステップS02。NAKN50のフラグには、SN=0、ACK=0、NAK=1、RT=0が設定されているため、受信したフレームがNAKであると識別できる。次に、フレーム識別部111は、当該フレームに設定されているRCV_XIDとREG_SXIDとが、上述した条件4を満たすか否かをチェックするステップS30。この時点で、REG_SXID=1、RCV_XID=0であり、条件4を満たさない。よって、フレーム識別部111は当該NAKN50が、既に適用済みであると判断し無視廃棄する。1.2.6受信側処理B-3次に、図5の処理B-3において、端末20がフレームF61を受信してからNAKフレームN51を送信するまでの処理動作を説明する。図5の処理B-3でフレームF61を受信部108が受信してから、フレーム誤り検出部110でフレーム誤りを検出するまでの処理は前述のB-1での処理と同様である。図14において、フレームF61、ヘッダ誤り訂正結果、フレーム誤り検出結果および当該フレーム長を入力すると、フレーム識別部111はヘッダ誤り訂正が完了しているか否かをチェックするステップS00。フレームF61には誤りが無いため、ヘッダ誤り訂正結果は完了訂正の必要が無いとなる。図5の処理B-3時点での各変数は、図15BのB-3欄より、NEXT_SEQ=5、NHED_SEQ=6、NNAK_SEQ=7、REG_RXID=0、RCV_SEQ=6、RCV_XID=1、LEN=1であり、その他の値はNULLである。次にフレーム識別部111は当該フレームに付与されているフラグの確認を行うステップS02。フレームF61のフラグには、SN=1、ACK=0、NAK=0、RT=1が設定されているため、受信したフレームが再送フレームであると識別できる。次に、当該フレームに設定されているシーケンス番号RCV_SEQがNEXT_SEQの値と一致するか否かをチェックするステップS03。図5の処理B-3の時点で、当該フレームのRCV_SEQは値6であり、NEXT_SEQは値5であるため、不一致となる。次にフレーム識別部111はRCV_SEQ、RCV_XIDが上述した条件1を満たすか否かをチェックするステップS07。条件1を満たす場合、受信フレームは既に受信しているフレームとなるため、無視廃棄してNAK生成指示をACK/NAK生成部103へ出力するステップS05。図5の処理B-3の時点で条件1は満たされないため、フレーム識別部111は当該フレームF60がNAKテーブルに登録済みであるか否かをチェックするステップS08。図5の処理B-3の時点ではNAKテーブルに登録があるため、フレーム識別部111は、次にNAK生成指示をACK/NAK生成部103へ出力するステップS10。本NAK指示には、NEXT_SEQ値5とRCV_XID値1とが設定される。以降の処理ステップS11、S12の説明は、図5の処理B-2で説明したとおりであるからここでは省略する。また、ACK/NAK生成部103、トランザクション識別子付与部114、ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106の処理は、図5の処理B-1と同様であり、NAKN51を回線2を介して端末10へ送信する。1.2.7受信側処理B-6次に、図5の処理B-6において、端末20がフレームF52を受信してから、ACKフレームA92を送信するまでの処理動作をを説明する。図5の処理B-6でフレームF52を受信部108が受信してからフレーム誤り検出部110でフレーム誤りを検出するまでの処理は、前述のB-1での処理と同様である。<フレーム識別>図14において、フレームF52、ヘッダ誤り訂正結果、フレーム誤り検出結果および当該フレーム長を入力すると、フレーム識別部111はヘッダ誤り訂正が完了しているか否かをチェックするステップS00。フレームF52には誤りが無いため、ヘッダ誤り訂正結果は、完了訂正の必要が無いとなる。図5の処理B-6時点での各変数は、図15BのB-6欄より、NEXT_SEQ=5、NHED_SEQ=6、NNAK_SEQ=9、REG_RXID=0、RCV_SEQ=5、RCV_XID=2、LEN=1であり、その他の値はNULLである。次にフレーム識別部111は、当該フレームに付与されているフラグの確認を行うステップS02。図10Aに示すフレームF52のフラグには、SN=1、ACK=0、NAK=0、RT=1が設定されているため、受信したフレームが再送フレームであると識別できる。次に、当該フレームに設定されているシーケンス番号RCV_SEQがNEXT_SEQの値と一致するか否かをチェックするステップS03。図5の処理B-6の時点で、当該フレームのRCV_SEQは値5でありNEXT_SEQは値5であるから、一致する。次にフレーム識別部111は現在のトランザクションであるRCV_XID値2をREG_RXIDに保持するステップS21。ステップS21の後、フレーム誤りの有無を確認するステップS04。受信したフレームF52には誤りがないため、次の処理ステップS13へ進む。なお、誤りがある場合、NEXT_SEQ、REG_RXIDを含むNAK生成指示をACK/NAK生成部103へ出力しステップS05、当該フレームを廃棄するステップS06。受信したフレームF52には誤りがない場合ステップS04の無、NAKテーブル上にNNAK_SEQの登録があるか否かをチェックするステップS13。図5の処理B-6の時点で、NAKテーブル上にNNAK_SEQの登録があるためステップS13の有、次の処理ステップS15へ進む。なお、無い場合ステップS13の無、当該受信フレーム以降フレーム誤り/ロスが発生していないため、現状のNEXT_SEQに当該フレーム長LENを加算してNEXT_SEQを更新した後ステップS14、NEXT_SEQ、RCV_XIDを含むACK生成指示をACK/NAK生成部103へ出力しステップS24、当該フレームを受信バッファ部113へ出力するステップS12。NAKテーブル上にNNAK_SEQの登録がある場合ステップS13の有、フレーム識別部111は、既に受信しているフレームと受信したフレームとの間に未受信のフレームがないかどうかを判断するため、以下の条件3を満たすか否かをチェックするステップS15。NHED_SEQ==NEXT_SEQLEN条件3図5の処理B-6の時点で、NHED_SEQ=6、NEXT_SEQ=5、LEN=1であることから条件3を満たすので、次のステップS18の処理を行う。なお、条件3を満たさない場合には、既に受信しているフレームと受信したフレームとの間に未受信のフレームがあるため、現状のNEXT_SEQに当該フレーム長LENを加算してNEXT_SEQを更新した後ステップS16、更新したNEXT_SEQ、RCV_XIDを含むNAK生成指示をACK/NAK生成部103へ出力しステップS17、当該フレームとNEXT_SEQを受信バッファ部113へ出力するステップS12。条件3を満たす場合ステップS15の一致、フレーム識別部111は、現状のNEXT_SEQにNAKテーブル上NNAK_SEQ1を代入してNEXT_SEQを更新した後ステップS18、図10Bに示すようにNAKテーブルからNHED_SEQ1とNNAK_SEQ1を削除してNAKテーブルを更新するステップS19。ステップS19のNAKテーブル更新では、NHED_SEQp=NHED_SEQp1およびNNAC_SEQp=NNAC_SEQp1の処理を行う。図5の処理B-6では、NAKテーブルの更新によりNAKテーブル上にNNAK_SEQの登録が無くなるため、更新したNEXT_SEQ、RCV_XIDを含むACK生成指示をACK/NAK生成部103へ出力しステップS22、当該フレームとNEXT_SEQを受信バッファ部113へ出力するステップS12。なお、ステップ19実施後、NAKテーブル上にNNAK_SEQの登録ある場合、更新したNEXT_SEQ、RCV_XIDを含むNAK生成指示をACK/NAK生成部103へ出力しステップS23、当該フレームを受信バッファ部113へ出力するステップS12。<受信バッファ>図10Cに示すフレームF5とNEXT_SEQとが受信バッファ部113に与えられると、受信バッファ部113はフレームF5内のRCV_SEQに従い、当該フレームF5を保存する。図10DにおいてRR、rrd、RW、rwrは、受信バッファ部113内でフレームの保存読出し制御に使用されるアドレスを示している。RRは読出しが完了していないフレームの先頭アドレス、rrdは受信バッファ部113からフレームを読出す間のアドレス、RWは次に受信バッファ部113へ保存されるフレームの先頭アドレス、rwrは受信バッファ部113へフレームを書き込みする間のアドレスである。この時点での各値は、RR=rrd=RW=5d-5、rwr=9d-9である。与えられたフレームF5のRCV_SEQは値5であることから、受信バッファ部113上のアドレスrwrを5d-5に設定し、値5d-5から当該フレームF5を保存する。また、保存終了後、アドレスRWにNEXT_SEQを代入し、アドレスRWを更新する。受信フレームF5保存後の受信バッファ部113上の各アドレスは、図10Eに示すように、RR=rrd=5d-5、RW=9d-9、rwr=6d-6となる。受信バッファ部113からのフレーム読出しは、RR<RWの条件が満たされるときに開始される。RWはACK/NAKを返信する際に更新され、その値はNEXT_SEQとなる。rrdとRRは受信バッファ部113からフレームを読み出す毎に更新される。<読み出し>更新されたアドレスRWとアドレスRRが内部インタフェース部100に与えられると、内部インタフェース部100は受信したアドレスが上述した条件2を満たすか否かをチェックする。図5の処理B-6において、RR=5、RW=9であり、条件2を満たすため、受信バッファ部113内に読出し可能なフレームが有ると判断し、受信バッファ部113へ読出し指示を出力する。これによって受信バッファ部113から読み出されたフレームが他ブロック11へ出力される。<送信>ACK/NAK生成部103、トランザクション識別子付与部114、ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106の処理は、図5の処理B-1と同様であり、ACKA92を回線2を介して端末10へ送信する。1.2.8送信側処理A-9次に、図5の処理A-9において、端末10がACKA92を受信した際の処理動作を説明する。図5の処理A-9でACKA92を受信部108が受信してからフレーム誤り検出部110でフレーム誤り検出するまでの処理は前述のB-1での処理と同様である。<フレーム識別>図14において、フレーム誤り検出部110からACKA92、当該ACKヘッダの誤り訂正結果、当該ACKの誤り検出結果および当該ACKフレーム長を入力すると、フレーム識別部111はヘッダ誤り訂正が完了しているか否かをチェックするステップS00。処理A-9では、ACKA92に誤りが無いためヘッダ誤り訂正が完了訂正の必要がないためしている。図5の処理A-9時点での各変数は、図15AのA-9欄より、REG_SXID=2、RCV_SEQ=9、RCV_XID=2、LEN=1であり、その他の値はNULLである。次に、フレーム識別部111は当該フレームに付与されているフラグの確認を行うステップS02。ACKA92のフラグには、SN=0、ACK=1、NAK=0、RT=0が設定されているため、受信したフレームがACKであることが識別できる。したがって、ステップS02の後、フレーム識別部111は当該フレームに設定されているRCV_XIDとREG_SXIDが上述した条件4を満足するか否かをチェックするステップS30。この時点で、REG_SXID=2、RCV_XID=2であるから一致するステップS30の真。よって、当該ACKA92は、未適用済みであると判断する。その後、フレーム識別部111は、受信したACKの含まれるRCV_SEQ、RCV_XIDが適用された更新指示を送信バッファ制御部112とトランザクション識別子付与部114へ出力するステップS32。<送信バッファ制御>図11Aに示す更新指示が送信バッファ制御部112に与えられると、送信バッファ制御部112は更新指示とRCV_SEQ値9とを送信バッファ部102へ出力する。更新指示とRCV_SEQ値9とが送信バッファ部102に与えられると、送信バッファ部102はアドレスsrdと受信したRCV_SEQとを比較し、値の大きい方をsrdに設定し、フレームの読出しを開始する。また、このとき、アドレスsrcが受信したRCV_SEQより小さい場合には、同様にsrcの値も更新する。図5の処理A-9の時点で、送信バッファ部102内の各アドレスは、図11Bに示すように、SR=5d-5、srd=7d-7、src=9d-9、swr=SW=11d-11である。ここで、送信バッファ部102が更新指示とRCV_SEQ値9を受けると、図8Cに示すように、srd値7d-7およびSR値5d-5の値を受信したRCV_SEQ値9に設定し、アドレスsrdからフレームの読出しを開始する。なお、アドレスSR=9d-9に更新されるため、それ以前のフレームF5、フレームF6、フレームF7およびフレームF8は送信バッファ部102上から削除される。<ACK/NAK生成>読み出されたフレームF9がACK/NAK生成部103に与えられると、ACK/NAK生成部103は、処理A-1と同様に、フレーム識別部111からACK/NAK生成指示がない場合には当該フレームをトランザクション識別子付与部114へ出力する図12のステップS50、S51、S56。<トランザクション識別子付与>図13において、フレームF9がトランザクション識別子付与部114に与えられ、さらに、フレーム識別部111から更新指示、RCV_SEQ、RCV_XIDを含む更新指示が与えられると、トランザクション識別子付与部114は、再送指示でないので、当該フレームF9のシーケンス番号SEQと一つ前のフレームに設定されていたシーケンス番号PRE_SEQとを比較するステップS78。図5の処理A-9の時点で、PRE_SEQは6、SEQは9であるから、トランザクション識別子付与部114は現状のトランザクション識別子XIDである‘2’を当該フレームへ付与するステップS75。また、PRE_SEQの値を更新しステップS76、XIDを付与した当該フレームF92をヘッダ誤り訂正符号付与部104へ出力するステップS77。<送信>ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106は、図5の処理A-1と同様の処理を行い、再送フレームF51を回線1を介して端末20へ送信する。以上のように動作することで、図5において発生したフレーム誤りおよびロスから回復することが出来る。1.3効果上述したように、本発明の第1実施形態によれば、トランザクション識別子を付与し、再送が発生する毎にトランザクション識別子を更新しているので、RTTの変化および可変長フレームによる誤再送または未再送を防ぐことができ、スループットを向上させることができる。さらに、本実施形態では、シーケンス番号をバッファのアドレスとし、NAKテーブルにより受信済みフレームの範囲をシーケンス番号で管理しているので、シーケンス番号とバッファアドレスの対応テーブルをもつ必要がない。このため、RTTが大きいネットワークで送受信バッファサイズが増加した場合でも、シーケンス番号とバッファアドレス対応テーブルの規模が大きくなることがなく長距離高RTTにおいても規模を抑えた再送制御により高品質なデータ通信が可能となる。また、本実施形態では、シーケンス番号をバッファのアドレスとし、NAKテーブルにより受信済みフレームのシーケンス番号を管理しているので、フレームロス/誤りが発生した後に受信した正常フレームを保存する。したがって、再送信時に他のフレームにロス/誤りが発生しても再々送を防ぐことができ、スループットを向上させる効果もある。さらに、本実施形態では、トランザクション識別子を付与し再送が発生する毎にトランザクション識別子を更新する以外に、シーケンス番号が一巡する毎にトランザクション識別子を更新しているので、シーケンス番号が一巡した際も、既に受信済みのフレームであるか否かの識別が可能となり、フレーム識別誤りによるフレーム廃棄を防ぐことが出来るため、スループットを向上させる効果がある。言い換えれば、この更新を行わない場合、シーケンス番号が一回りしてしまうと、上述した条件1が満たされるため、受信バッファ部113へ保存すべきフレームを廃棄することになる。たとえば、図17はシーケンス番号が値10で一巡する例であり、図17Aはトランザクション識別子XIDを更新しない場合、図17Bは更新した場合のシーケンスである。図17Aにおいて、フレームF100にロスが発生した後、受信側でフレームF00を受信すると、受信側の各変数はNEXT_SEQ=10、REG_RXID=0であるため、条件1が満たされ、SEQ=0以降のフレームを受信済みフレームと判断し廃棄してしまう。これに対して、図17Bでは、シーケンス番号が一巡する際にXIDを更新するため、フレームF100にロスが発生した後、受信側でフレームF01を受信しても条件1が満たされない。従ってフレームF01以降の廃棄を防ぐことができる。このように図17Bでは、F102を受信した時点で、F01~F21は受信済みであるためACKA32が返信されるのに対し、図17AではF00~F20を廃棄したためACKA01を返信することになる。なお、上記実施形態では、端末10から端末20へのフレーム送信であったが、その逆においても同様の手順で送信を行うことができる。また、データリンク層での再送制御としてイーサネットNICを例としているが、データの再送信を行う方式であればすべてに適用することができる。また、上述の実施形態ではヘッダ誤り訂正符号を使用しヘッダ情報を保護しているが、ヘッダ情報の誤りを確認できれば良いため、ヘッダ誤り訂正符号付与部104およびヘッダ誤り訂正部109としてフレーム誤り検出符号付与104およびフレーム誤り検出部110のような誤り検出符号を使用してもよい。2.第2実施形態2.1構成本発明の第2実施形態による通信装置は、図4に示す内部構成と基本的に同じであるが、ネットワークインタフェースカードNIC12における再送ヘッダ処理とACK/NAK生成103およびフレーム識別部111での処理とが異なっている。そこで、図4におけるACK/NAK生成部103をACK/NAK生成部203とし、フレーム識別部111をフレーム識別部211として、第2実施形態におけるACK/NAK生成部203とフレーム識別部211の説明を行う。その他のブロックおよび機能は図4と同じであるから同じ参照番号を付して説明は省略する。図18に示すように、本実施形態を適用したNIC12aにおけるACK/NAK生成部203は、送信バッファ部102、トランザクション識別子付与部114およびフレーム識別部211に接続する。ACK/NAK生成部203は、後述するように、ACK/NAK用のシーケンス番号AN_SEQ領域とACK/NAK用のトランザクション識別子AN_XID領域を再送ヘッダに追加する。フレーム識別部211からのACK/NAK生成要求と送信バッファ部102からの読出しフレームが競合する場合、ACK/NAK情報を読み出してフレームに相乗りpiggybackさせる。フレーム識別部211は、フレーム誤り検出部110、送信バッファ制御部112、ACK/NAK生成部203および受信バッファ部113に接続する。フレーム識別部211は、フレーム誤り検出部110からヘッダ誤り訂正結果、フレーム誤り検出結果、フレーム長およびフレームを入力すると、ヘッダ誤り訂正結果、フレーム誤り検出結果およびフレームヘッダの内容に応じて処理を行う。ヘッダ誤り訂正結果が誤り無しの場合は後述の処理を行い、誤り有の場合は当該フレームを廃棄する。受信フレームのACK/NAKフラグが1の場合、当該フレームヘッダに設定されているACK/NAK用シーケンス番号AN_SEQとACK/NAK用トランザクション識別子AN_XIDから適用すべきACK/NAKを判断し、適用する場合には再送/更新指示を送信バッファ制御部112とトランザクション識別子付与部104へ出力する。受信フレームのSNフラグが1の場合、当該フレームヘッダに設定されているシーケンス番号RCV_SEQとトランザクション識別子RCV_XIDを抽出し、当該フレームのフレーム誤り検出結果が誤り有の場合にはNAK生成指示を抽出したRCV_SEQとRCV_XIDと一緒にACK/NAK生成部203へ出力し当該フレームを廃棄する。誤り無しの場合には、抽出したRCV_SEQとRCV_XIDが次に受信すべきシーケンス番号であるか比較し、一致しない場合はNAK生成指示を次に受信すべきシリアル番号と抽出したトランザクション識別子と一緒にACK/NAK生成部203へ出力し、当該フレームを受信バッファ部113へ出力する。抽出したRCV_SEQとRCV_XIDが次に受信すべきシーケンス番号と一致する場合には、ACK生成指示を抽出したRCV_SEQとRCV_XIDと一緒にACK/NAK生成部203へ出力し、当該フレームを受信バッファ部113へ出力する。受信フレームのACK/NAKのいずれかのフラグとSNのフラグが1である場合には上述の処理を同時に行う。2.2動作次に、第2実施形態におけるACK/NAK生成部203とフレーム識別部211の動作について説明する。図19は、実施例2における誤り発生時の双方向端末間伝送シーケンスを示した図であり、説明の便宜上、ACKを受信せずに送信できるサイズを示す受信ウインドウサイズを4フレーム分としている。また、再送回数も1回まで行うこととする。また、端末10から端末20へ送信されるフレームF50および端末20から端末10へ送信されるフレームf130A70でフレーム誤りまたはフレームロスが発生しており、これらフレーム誤り/ロスから回復するまでのシーケンスも示している。図19において、Fは、端末10から端末20への送信再送信フレームを表し、N、およびAは、端末20から端末10へのACK/NAKを表す。fは、端末20から端末10への送信/再送信フレームを表し、n、およびaは、端末10から端末20へのACK/NAKを表す。また、‘’はフレームに付与されるシーケンス番号であり、‘’は当該フレームのトランザクション識別子を表す。Fa、Fn、fA、fNは、ACK/NAKの情報を相乗りピギーバックさせたフレームである。本実施形態では、図19のC-1、C-2以外の処理動作は、図5に示した第1実施形態と同様となるため、図19のC-1におけるACK/NAK生成部203と図19のC-2におけるフレーム識別部211の動作について説明する。なお、端末10から端末20方向のシーケンス番号の初期値を値5、トランザクション識別子の初期値を値0として、端末20から端末10方向のシーケンス番号の初期値を値12、トランザクション識別子の初期値を値0とする。<処理C-1;ACK/NAK生成>まず、図19の処理C-1において、端末20のNIC12aで送信フレームf120とNAK指示N50とが競合した際のACK/NAK生成処理部203の処理動作を図20および図21を参照しながら説明する。図21において、端末20のNIC12aのACK/NAK生成部203が送信バッファ部102から読出しフレームf120を入力するとステップS90、ACK/NAK生成部203は図20Aに示すようにACK/NAK用のシーケンス番号AN_SEQ領域g-70とACK/NAK用のトランザクション識別子AN_XID領域g-71を再送ヘッダに追加するステップS91。続いて、ACK/NAK生成部203はフレーム識別部211からのACK/NAK生成指示の有無をチェックするステップS94。図19の処理C-1の時点では、NAK生成指示があるためNAKフラグに1を設定し、NAK生成指示に含まれるNEXT_SEQ値5を再送ヘッダのAN_SEQ領域へ、RCV_XID値0をAN_XID領域へそれぞれ設定しステップS95、NAK情報を付与した当該フレームをトランザクション識別子付与部114へ出力するステップS96。なお、ACK/NAKの生成指示がない場合には、ACK/NAK情報を付与せずに当該フレームをトランザクション識別子付与部114へ出力するステップS96。送信バッファ部102から読出しフレームがなく、NAKの生成指示がACK/NAK生成部203に与えられるとステップS90の無、ステップS92の有、ACK/NAK生成部203はACK/NAK用のシーケンス番号AN_SEQ領域とACK/NAK用のトランザクション識別子AN_XID領域とを再送ヘッダに追加した後、NAKフラグに1を設定し、NAK生成指示に含まれるNEXT_SEQを再送ヘッダのAN_SEQ領域へ、RCV_XIDまたはREG_RXIDをAN_XID領域へ設定しステップS93、NAK情報を付与した当該フレームをトランザクション識別子付与部114へ出力する。ACK指示の場合には、ACKフラグに1を設定し、上記と同様の処理を行う。トランザクション識別子付与部114、ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106は、第1実施形態において説明した処理を実行し、図20Bに示すフレームを対向側の端末10へ送信する。<処理C-2;フレーム識別>図19の処理C-2において、端末10のNIC12aでNAK情報を含む送信フレームf120N50を受信した際のフレーム識別部211の処理動作を説明する。フレーム識別部211の処理フローは図14に示す処理フローとほぼ同じであるが、図14のステップS20が異なっている。図14において、図20Cに示すACK/NAK情報を含むフレームf120N50、ヘッダ誤り訂正結果、フレーム誤り検出結果および当該フレーム長LENを入力すると、フレーム識別部211はヘッダ誤り訂正が完了しているか否かをチェックするステップS00。f120N50には誤りがないのでヘッダ誤り訂正結果は完了訂正の必要が無いとなる。なお、図19の処理C-2時点での各変数は、NEXT_SEQ=12、REG_RXID=0、RCV_SEQ=12、RCV_XID=0、AN_SEQ=5、AN_XID=0、LEN=1であり、その他の値はNULLである。次にフレーム識別部211は、当該フレームに付与されているフラグの確認を行うステップS02。図20Cに示すフレームf120N50のフラグにはSN=1、ACK=0、NAK=1、RT=0が設定されているため、受信したフレームが初回送信フレームでNAK情報を含んでいることがわかる。ここで、送信側処理と受信側処理が分岐される。すなわち、当該フレームから抽出したAN_SEQ=5、AN_XID=0に従ったステップS30~S33の送信処理と、抽出したRCV_SEQ、RCV_XIDおよびLENに従ったステップS03、S21、S04、S13、S14、S24、S12の受信処理と、が並列で実行される。なお、フレーム識別部211におけるその他処理の内容は上述した第1実施形態と同様である。フレーム識別部211は、上記の処理を行い、再送指示を送信バッファ制御部112とトランザクション識別子付与部114に出力し、またACK生成指示をACK/NAK生成部203へ出力する。2.3効果このように、第2実施形態によれば、ACK/NAK生成部203がACK/NAK用のシーケンス番号AN_SEQ領域とACK/NAK用のトランザクション識別子AN_XID領域とを再送ヘッダに追加しているので、ACK/NAK生成部203でACK/NAK生成要求と読出しフレームとが競合した場合でも、ACK/NAK情報を読み出しフレーム相乗りさせることができる。これによって双方向通信においてもACK/NAKフレームのオーバヘッドを抑え、RTTの変化および可変長フレームによる誤再送または未再送を防ぐことができ、スループットを向上させることができる。3.第3実施形態上述した第1および第2実施形態では、GoBackN-ARQ方式による再送制御を基本動作としているが、図4のNIC12あるいは図18のNIC12aにおける送信バッファ部102の読出し処理動作を以下のように変更することで、SelectiveRepeat-ARQ方式による再送制御として動作させることも可能である。本発明の第3実施形態を適用したNICの送信バッファ部を送信バッファ部202とすれば、その読み出し処理は次のように行われる。送信バッファ部202は、再送指示と再送フレームの先頭アドレスを示すRCV_SEQを入力すると、RCV_SEQ値をアドレスSRとsrdアドレスに設定し、srdアドレスのフレームを1フレーム分読み出す。また、このとき読出しフレームに対して再送フレームであることを示すRT=1のフラグを付与する。1フレーム読出し後、送信バッファ部202は、初回読出しが完了しているアドレスを示すsrcを読出しアドレスsrdに設定し、送信バッファ部202上に保存されている未送信フレームの読出しを行う。このように、送信バッファ部202でRCV_SEQで指定される再送指示があるフレームのみを再度送信することで、SelectiveRepeat-ARQ方式による再送制御として動作させることができる。SelectiveRepeat-ARQ方式による再送制御は、誤りのあるフレームのみを再送するため、再送効率がGoBackN-ARQ方式に比べて良くスループットを向上させる効果がある。4.効果上述したように、本発明の各実施形態による通信装置は次のような効果を奏する。第1に、トランザクション識別子を付与し、再送が発生する毎にトランザクション識別子を更新しているので、RTTの変化および可変長フレームによる誤再送または未再送を防ぐことができ、スループットを向上させることができる。第2に、シーケンス番号をバッファのアドレスとし、NAKテーブルにより受信済みフレームのシーケンス番号を管理しているので、シーケンス番号とバッファアドレスの対応テーブルをもつ必要が無く、RTTが大きいネットワークで送受信バッファサイズが増加した場合でもシーケンス番号とバッファアドレス対応テーブルの規模が大きくならない。したがって、長距離高RTTにおいても規模を抑えた再送制御により高品質な回線を適用できる。さらに、NAKテーブルにより受信済みフレームのシーケンス番号を管理しているので、フレームロス/誤りが発生した後に受信した正常フレームを保存し、再送信時に他のフレームにロス/誤りが発生しても再々送を防ぐことができる。さらに、再送が発生する毎およびシーケンス番号が一巡する毎にトランザクション識別子を更新することで、シーケンス番号が一巡した際においても既に受信済みのフレーム否かの識別が可能となりフレーム識別誤りによるフレーム廃棄を防ぐことが出来る。また、送信フレーム用のシーケンス番号およびトランザクション番号の領域とACK/NAK用のシーケンス番号領域およびトランザクション識別子AN_XID領域とを同じ再送ヘッダに追加しACK/NAK情報を送信フレーム相乗りさせることができるために、双方向通信においてACK/NAKフレームのオーバヘッドを抑え、RTTの変化および可変長フレームによる誤再送または再送遅延を防ぎスループットを向上させる効果がある。