まえがき CCITT(国際電信電話諮問委員会)は国際電気通信連合(ITU)の常設機関である。 CCITTは世界的視野に立った通信の標準化の観点に立ち,勧告作成,技術,運用および料金問題についての研究を行っている。 4年毎に開催されるCCITT総会では,研究事項の決定と,研究グループによって作成された勧告の承認を行ってきている。 総会が開催されるまでの期間に,CCITT構成員によって勧告が承認されることがあり,これはCCITT決議事項2(1988年メルボルン)の手順による。 勧告V.42bisは研究グループXVIIにより作成され,1990年1月31日に決議事項2の手順によって承認されたものである。 ITU1990 BLUE BOOK 分冊VIII・1 目次 勧告V.42bis 電話網におけるデーター通信 まえがき 勧告V.42bis エラー訂正手順を使用するデータ回線終端装置(DCE)のためのデータ圧縮手順 1. 概要 ………… 1 2. 定義 ………… 3 3. 略語 ………… 5 4. データ圧縮機能を持ったDCEの動作概要 ………… 5 5. 制御部の動作 ………… 7 6. 辞書の使用とその更新手順 ………… 8 7. 符号化部の動作 ………… 12 8. 複合部の動作 ………… 16 9. データー圧縮部間通信 …………… 17 10. パラメーター ………… 18 付録II(勧告V.42bisのANNEXへ) 製造業者への手引き ………… 31 勧告V.42bis エラー訂正手順を使用するデータ回線終端装置(DCE)のためのデータ圧縮手順 CCITTは, (a) 公衆電話網による非同期データ伝送にVシリーズDCEが広く使用されていること, (b) 勧告V.42〔1〕はエラー品質を改善できるエラー訂正手順を規定していること, (c) データ圧縮手順を使用することによってスループットが改善できること, (d) データ圧縮機能を持たないDCEとも対向接続する必要があること, を考慮し,勧告V.42に規定するエラー訂正手順を使用するDCEに追加すべき圧縮手順をこの勧告で規定するということを表明する。 1. 概要 1.1 一般的事項 本勧告ではVシリーズDCEにおいて使用するデータ圧縮手順を説明している。 データ圧縮手順の基本的な特性は次の通りである。 a) 圧縮手順はデータ終端装置(DTE)から受信した文字列を符号化するアルゴリズムに基づくこと, b) 復合化手順は受信した符号語から文字列を再生すること, c) 圧縮できないデータを受信した時は自動的にトランスペアレントモードに切り替わること。 本勧告で使用するパラメータの意味を10節に示す。 1.2 エラー訂正手順への要求事項 データ圧縮機能が正しく動作するためには,この勧告に準拠するエンティティ間にエラー訂正手順が確立していることが必要である。 Vシリーズ勧告の場合,このことは勧告V.42に規定するLAPMエラー訂正手順を持っているか,あるいはV.120〔2〕に規定するエラー訂正手順を持っていなければならないことを意味する。 注-ビットエラーを検出できなかった場合にはデータ圧縮機能が誤動作する。 ISO3309〔3〕の32ビットフレームチェックシーケンス(FCS)が使用されており,事実上このようなビットエラーを検出できない可能性は低い。 このため,回線状態が悪い場合には,32ビットFCS(V.42 LAPMではオプション)を使用するのが望ましい。 1.3 データ圧縮機能を持つDCE 図1/V.42bisに示すように,エラー訂正DCEと一緒にデータ圧縮機能を使用する。 エラー訂正VシリーズDCEの構成要素は,勧告V.42に規定している。 図1/V.42bisデータ圧縮機能とエラー制御機能を持つDCE 2 定義 2.1 文字 予め決められたビット数(N3=8)で符号化された,データ単位である。 2.2 スタート・ストップあるいは非同期フォーマット スタート・ストップあるいは非同期フォーマットは,勧告V.7〔4〕およびV.14〔5〕に規定されている。 2.3 順序数 文字の順序数とは,文字を2進符号化したものに等しい数値である。 例えば文字“A"が2進“01000001"に符号化された場合,この順序数は65(10進)となる。 2.4 アルファベット DCE/DTEインタフェースを介して送受される,総ての文字の組合せの集合をアルファベットという。 この勧告ではN4を文字数とした時,アルファベットの順序数は0からN4-1まで連続していることを前提としている。 2.5 符号語 この勧告では,圧縮された文字列を意味する,0からN2-1までの範囲にある2進数を符号語という。 符号語はC2ビットで構成される。 ここでC2は初期値が9(N3+1)であり,最大N1まで増加する(7節参照)。 2.6 制御符号語 データ圧縮モードにあるDCE間の,データ圧縮機能に関係するの制御情報のやり取りに,制御符号語を使用する(9節参照)。 2.7 コマンドコード コマンドコードは,トランスペアレントモードにあるDCE間の,データ圧縮に関係する制御情報のやり取りに使用するオクテットである。 これは先行するエスケープやキャラクタによって普通の文字と区別される(2.13項参照)。 2.8 ツリー構造 この勧告では,先頭の文字が同一である文字列の集合を指す抽象的なデータ構造である。 (図2/V.42bisおよび6.1項参照)。 2.9 リーフ節点 この勧告では文字列の最後尾の文字を指すツリー上の点である(6.1項参照)。 2.10 ルート節点 ルート節点とは,この勧告では文字列の先頭の文字を指すツリー上の点である(図2/V.42bisおよび6.1項参照)。 2.11 データ圧縮動作 データ圧縮動作には2モードがある。 モード間遷移はDTEからの受信データにより自動的に行われる(7.1項参照)。 2.11.1 圧縮モード DTEからのデータが符号語で送信される動作モードである。 2.11.2 トランスペアレントモード データ圧縮機能が選択されたにもかかわらず,データが非圧縮フォーマットで送信される動作モードである。 トランスペアレントモードのコマンドコード列はデータ列中に挿入されて送信される。 2.12 非圧縮モード データ圧縮機能が選択されていない動作モードである。 データ圧縮機能が働いていない状態をいう。 2.13 エスケープキャラクタ この勧告ではトランスペアレントモードにおける,コマンドコード列の始まりを指す文字である。 これは初期値として0をとり,トランスペアレントモードあるいはデータ圧縮モードにかかわらず,DTEからのデータ中にエスケープキャラクタが現れるたびに更新される(9.2項参照)。 3. 略語 この勧告で使用する略語は次の通りである。 EIDEscape In Data,9節で規定するコマンドコード ETMEnter Transpearent Mode,9節で規定する制御符号語 ECMEnter Compressed Mode,9節で規定するコマンドコード 4. データ圧縮機能を持ったDCEの動作概要 4.1 概要 データ圧縮機能を持つDCEは,図1/V.42bisに示す次の構成要素を含む。 a) DTE/DCE相互接続回路 b) 信号変換器 c) 制御部 d) エラー制御部 e) データ圧縮部 制御部は,勧告V.42で説明しているエラー訂正DCEに必要な機能の他に更に機能を持たなければならない。 この機能については5節に説明してあり,データ圧縮部の動作については,6節から9節に述べている。 この節では,制御部とデータ圧縮部の概要について説明する。 4.2 制御部概要 制御部は,勧告V.42の6.2項に規定する機能の他に次の動作を行わなければならない。 a) 相手DCEにデータ圧縮機能があるかどうか,およびデータ圧縮機能動作に関するパラメータのやり取り b) データ圧縮部の初期化あるいは再初期化 c) データ圧縮機能が使用するエラー訂正接続確立のための仲介 d) ここで規定するフロー制御手順も含め,勧告V.42の6.2項および8.4項に規定する手順と一致した,DCE/DTEインタフェースとデータ圧縮部部間のデータ送受の仲介 e) エラー制御部とデータ圧縮部部間のデータ送受の仲介 f) 異常状態検出時の動作 4.3 データ圧縮部概観 データ圧縮部はこの勧告に規定する手順を持たなければならない。 これによりエラー訂正接続リンクで,データを伝送する前に効率的な符号化を行うことができる。 これは次の機能を持たなければならない。 a) データ圧縮部の初期化 b) データ圧縮のための符号化および復号 c) トランスペアレントモードとデータ圧縮モード間遷移 4.4 制御部とデータ圧縮部間の通信 制御部とデータ圧縮部間の通信は,"X-NAME-TYPE"形式の抽象的なプリミティブの集合としてモデル化される。 この形式は,タスクあるいはサービスを行うための情報と制御の論理的なやり取りを意味している。 この勧告では,制御部をサービスユーザとみなし,データ圧縮部はサービス提供者とみなしている。 このプリミティブの種類は要求(Request),通知(Indication),応答(Response)および確認(Confirm)である。 制御部が受けるサービスを表1/V.42bisに示す。 表1/V.42bis制御部が受けるサービス 5. 制御部の動作 5.1 データ圧縮部のやり取り データ圧縮部の使用とそのパラメータは,リンク確立時にプロトコルによって取り決められる(たとえば勧告V.42で規定するXID手順を使用する。) その後,エラー訂正接続中はデータ圧縮部の使用とそのパラメータは変わらない。 パラメータPOは,データ圧縮機能を使用するかどうかを提示する。 このパラメータはまた,データ伝送方向(送信のみ,受信のみ,または送信および受信)も規定している。 デフォルト値は0であり,この場合にはいずれの方向にもデータ圧縮機能なしを意味している。 もしデータ圧縮機能が一方向とだけ提示された場合には,正しい応答は提示された方向にだけデータ圧縮機能ありか,あるいはデータ圧縮機能なしかとなる。 もしデータ圧縮機能が両方向と提示された場合には,正しい応答は両方向か一方向かにデータ圧縮機能ありか,またはデータ圧縮機能なしのいずれかとなる。 パラメータP1は,符号語の総数N2の値を提示している。 P1のデフォルト値は,最小値である512でなければならない。 この勧告では最大値は規定していない。 このデフォルト値より小さい値の提示があった場合には,手順上の誤りが発生したとし,接続を解放しなければならない。 やり取り手順中にP1の値が交換された時には,いずれか小さい方の値を選択し,両方のDCEのN2にその値を設定する。 注-N2の選択とその性能への影響については,付録IIの手引を参照のこと。 パラメータP2は,文字列長の最大値N7の値を提示している。 P2のデフォルト値は6であり,このP2の値は6から250までの範囲になければならない。 この範囲を越えた値は不正である。 この不正な値の提示があった場合には手順上の誤りが発生したとし,接続を解放しなければならない。 やり取り手順中にP2の値が交換された時には,いずれか小さい方の値を選択し,両方のDCEのN7にその値を設定する。 5.2 データ圧縮部の初期化 データ圧縮に関するパラメータのやり取りがうまく行くと,制御部はC-INIT要求プリミティブをデータ圧縮部に送る。 このプリミティブにより合意したパラメータ値が通知される。 5.3 接続確立 データ圧縮部からのC-INIT確認プリミティブを受けると,制御部はデータ転送が始まったことをDTEに通知する。 5.4 DCE/DTEインタフェースとデータ圧縮部間のデータ送受の仲介 接続が確立すると,制御部はDCE/DTE間インタフェースから受けたデータを符号化するよう要求する。 データを符号化するため,制御部はC-DATA要求プリミティブをデータ圧縮部に送る。 このプリミティブはデータを符号化するよう指示するためのものである。 データ圧縮部からC-DATA通知プリミティブを受けると,制御部は復号化したデータをDCE/DTEインタフェースに送出する。 バッファオーバーフローによるデータの紛失を防ぐためフロー制御が必要になる。 この勧告で規定する手順が勧告V.42のものと一緒に使用されているときは,V.42の7.3.1項と8.4.2項のフロー制御手順が適用される。 5.5 データ圧縮部とエラー制御部間のデータ送受の仲介 データ圧縮部からC-TRANSFER通知プリミティブを受けると,制御部はL-DATA要求プリミティブをエラー制御部に出す。 エラー制御部からL-DATA通知プリミティブを受けると,制御部はC-TRANSFER要求プリミティブをデータ圧縮部に出す。 5.6 データ圧縮部の再初期化 次の条件の時には,制御部はC-INIT要求をデータ圧縮部に出す。 a) L-ESTABLISH通知またはその確認を受けた時 b) L-SIGNAL通知またはその確認を受けたとき。 ここではプリミティブは破壊形である。 符号器と復号器間の同期を保証するため,データ圧縮部間で(例えばエラー制御部間で)送信するデータがない時には,C-INIT要求プリミティブを出さなければならない。 これは制御部の責任である。 5.7 データ転送の高速化 たとえばエラー制御部が動作を停止しているような場合に,一部分しか符号化していないデータを即座に送信しなければならないような,この勧告の規定外の条件が発生する可能性がある。 その場合には,制御部はC-FLUSH要求プリミティブをデータ圧縮部に出し,5.5項に従い残りのデータを送信しなければならない。 5.8 C-ERROR受信時の動作 C-ERROR通知は,データ圧縮部がエラー(たとえば手順上のエラーまたは同期はずれ)を検出したことを制御部に通知するために使用される。 この場合,制御部はエラー訂正接続の再確立を含む回復動作に入る。 復号器では次の条件を検出したときには,C-ERROR通知プリミティブを出す。 a) C2がN1を越えたことによるSTEPUP符号語を受信した時 b) C1に等しい符号語を受信した時 c) 辞書の空きの見出しがなくなったことを示す符号語を受信した時 d) 未使用コマンドコードを受信した時 6. 辞書の使用とその更新手順 6.1 概要 データ圧縮部は,DTEからの文字列を固定長符号語に符号化するアルゴリズムを採用している。 この処理には辞書方式を採用しており,この辞書には文字列が登録され,通常の通信時に更新される。 データ圧縮部には2つの辞書がある。 1つはDTEから受信したデータを圧縮するために符号器が更新を行うものであり,他の1つはエラー制御部から受けた圧縮されたデータを復号するためのもので,復号器が更新を行うものである。 辞書の機能は次の通りである。 a) DTEからの文字列を照合しそれを辞書内で捜す,文字列照合(6.3項参照) b) 新しい文字列を辞書に追加する,更新(6.4項参照) c) 領域を再利用するため,あまり使用しない文字列を削除すること(6.5項参照) 符号化および復号化に使用する文字列を蓄えるための辞書は,抽象的データ構造により論理的に表現される。 図/V.42bisに示すように,辞書はツリーの集合により構成されており,各ツリーはアルファベットの各文字に対応するルートを持っている。 8ビット構成の文字では,256本のツリーがあることになる。 ツリーは,1つの文字から始まる既知の文字列の集合を表現している。 ツリーの各節点あるいは点が,文字列集合1つを表現している。 図2/V.42bisに示すツリーは,A,B,BA,BAG,BAR,BAT,BI,BIN,C,D,DE,DOおよびDOGの文字列を表現している。 独立の節点でなく,かつツリーにおける低位の階層にある節点を,リーフ節点という。 このリーフ節点は文字列の最後の文字を指している。 親を持たない,ツリー上で高い階層にある節点を,ルート節点という。 このルート節点は文字列の最初の文字を指している。 節点を識別するための符号語は,各節点と対応している。 データ圧縮部の符号化用辞書内の符号語の割当てと,相手DCEにあるデータ圧縮部の復号化用辞書内の符号語の割当ては一致している。 これにより符号語を文字列に戻すことができる。 図2/V.42bisツリー構造による辞書の表現 6.2 辞書初期化手順 制御部からC-INIT要求プリミティブを受けると,データ圧縮部は符号器と復号器の辞書を初期化にする。 初期化状態では,辞書の各ツリーはルート節点だけで構成されている。 各ル-ト節点に対応する符号語は,N6(制御符号語の数)と節点に対応する文字の順序数の和である。 新しい節点の配置(6.5項参照)に使用するC1カウンタは,N5に設定される。 6.3 文字列照合手順 この手順は,辞書の見出し語と連続する文字(文字列)を照合する。 この手順は文字列の最初の1文字である,単一の文字から照合を始める。 これは次の手順による。 a) 文字列の最初は文字である。 b) もし文字列がある辞書の見出し語と一致し,かつその辞書の見出し語が直前の照合手順で作られたものでなけば,次の1文字を読み込みその文字列に付け加える。 この手順を繰り返す。 c) もし文字列が辞書の見出し語と一致しないか,あるいは直前の照合手順で新たに作られた見出し語と一致すれば,最後に付け加えた文字をその文字列から切り離す。 こうして短くされた文字列は,照合できた最長の文字列であり,最後に切り離した文字は照合できなかった文字となる。 この手順は,普通最も長い文字列照合を行う。 しかし最長の文字列を見つける前にb)手順が終了してしまうような,次の2つの場合がある。 1) C-INIT要求プリミティブあるいはC-FLUSH要求プリミティブのような異常状態が起きた時(データ圧縮モードのみ) 2) 動作モードがトランスペアレントモードとデータ圧縮モード間で切り替わった時 トランスペアレントモードでは,符号器はこの2つの場合のみ文字列照合手順を終了する。 しかしデータ圧縮モードでは,符号器がこの照合手順を終了するには,これ以外の場合であっても良いことになっている(例えばタイムアウト)。 もし最長の文字列が見つかる前にこの照合手順が終了したならば、DTEからの次の文字は辞書更新上,"照合できなかった文字"として,文字列照合手順を再開する。 6.4 辞書への文字列追加手順 効率的なデータ圧縮を行うため,辞書に新しい文字列を追加するという辞書更新が行われる。 既に辞書にある文字列に、1つの文字を付け加えることによって新しい文字列が登録され,ツリーに新しい節点が付け加えられる。 単一の文字は照合の結果,照合できなかった文字となるか,復号化動作ではプリフィックスキャラクタとなる。 この手順後の文字照合動作再開に必要となる単一文字は,一致しなかった文字となる。 新しい文字列が付け加わらないような2つの場合は次の通りである。 a) もしこの手順の結果,最大文字列長N7を越える場合 b) もし文字列が既に辞書にある場合 辞書の見出し語を作った直後に,辞書の見出し回復手順を行う。 6.5 辞書の見出し回復手順 この節では,辞書の見出しが満杯になった状態から,これを再利用するための回復手順について規定している。 最後の辞書の見出しを割り当てると,空の見出し語とその符号語との間の対応付けを維持するため見出し語を一つ回復する。 カウンタC1は次の空の辞書の見出し語に対応する符号語を指しており,これはN5からN2-1の間の値をとる。 カウンタC1の初期値は,N5である。 この手順は新しい辞書の見出し語が作られた直後から適用される。 またこれは次のステップによる。 a) カウンタC1を1だけ増加する。 b) もしカウンタC1がN2-1を越えていればC1をN5とする。 c) もしC1の値の符号語に対応する節点が使用されていて,これがルート節点でなければステップa)に戻る。 d) もしそれがルート節点であればその親から外す。 7. 符号化部の動作 7.1 概要 符号化機能は次の5つの主要動作を行う。 a) DTEからの文字列が辞書の見出し語と照合するという,文字列照合(7.3項参照) b) 照合の結果,辞書の見出し語と合致した符号語をC2ビット長の2進値で表現するという,符号化(7.4項参照) c) データ圧縮モードにおける符号語,またはトランスペアレントモードにおける文字を制御部へ渡すという,転送(7.5項参照) d) 照合の結果,辞書の見出しと合致した部分と合致しなかった文字による,新しい辞書の見出し語を作成するという,辞書更新(7.6項参照) e) 次の辞書更新に使用するため,辞書の見出しを回復するという,節点回復(7.7項参照) 符号化部は2つのモードで動作する。 これらはトランスペアレントモードとデータ圧縮モードである。 次のf)に示す試験により,これらモード間切替が行われる。 その動作手順とエスケープ・キャラクタ(9節参照)の繰り返しについては,これら両モードでは全く同じである。 符号器はこれ以外に次の2つの動作を行わなければならない。 6.3項に規定するようにこの2つの動作は文字列照合手順中だけに適用する。 f) 符号化処理が効率的であるかどうかを評価し,最適な効率とするためにトランスペアレントモードかデータ圧縮モードかを選択するという,データ圧縮評価試験(7.8項参照) g) 制御部からのC-FLUSH要求が,総てのアウトスカンディングにあるデータを送信しなければならないことを通知するというフラッシュ(7.9項参照) 7.2 初期設定 C-INIT要求を受けると,データ圧縮部は符号器を初期化し,次の状態にしなければならない。 a) 辞書を,6.2項に説明した初期状態に設定する。 b) 符号語の大きさC2を,N3+1に設定する。 c) スレッショルドC3を,N4×2に設定する。 d) データ圧縮部を,トランスペアレントモードにする。 e) エスケープキャラクタを,順序数0に割り当てる。 7.3 文字列照合 C-DATA要求を受けると,データ圧縮部は6.3項に規定する文字列照合手順を開始する。 手順に必要な最初の文字は,前の手順の最後に照合できなかった文字である。 7.4 符号化 この手順はデータ圧縮モードで使用する。 符号化の目的はC2ビット長によって符号語を表現することである。 その順序とビットの番号付けを図3/V.42bisに示す。 もし一致した辞書の見出し語に対応する符号語の数値がC3以上であれば,次のようになる。 a) STEPUP制御符号語を符号化し,現在の符号語長(C2)により送信する。 b) 符号語長C2を1だけ増加する。 c) C3に2を掛ける。 d) もし符号語がそれでもC3以上であれば,上のステップa)からc)を繰り返す。 その後符号語は制御部に送られ,7.5項に規定する手順に従う。 図3/V.42bis符号語のオクテットのマッピング 7.5 転送 トランスペアレントモードでは,C-TRANSFER通知によって,オクテット配列の形で文字を制御部に送る。 この文字を,文字列照合手順中に個々に送るか,あるいは文字列照合手順終了後にまとめて文字列として送信する。 データ圧縮モードでは,文字列照合の結果一致した文字列を7.4項に規定した手順に従って圧縮する。 そして先行する符号語の最上位ビット(MSB)のすぐ後に,次の符号語の最下位ビット(LSB)がくるように,データ圧縮した形で制御部に渡す。 データ圧縮器がトランスペアレントモードからデータ圧縮モードに遷移した時には,次に送信すべき最初の符号語のLSBは次のオクテットのビット1の位置になければならない。 FLUSH制御符号語を送信した後か,またはETM制御符号語(9節参照)を送信後引き続き符号器がデータ圧縮モードからトランスペアレントモードに遷移した時には,次に送信する文字のオクテット配列を保証するため,必要な数の“0"を送信する。 データ圧縮モードからトランスペアレントモードに遷移中に,エラー制御部に渡されるデータ列の例を図3/V.42bisに示す。 2つの11ビット長の符号語AとBがデータ圧縮されて送信され,その後トランスペアレントモードに遷移する。 この例では,データ圧縮されていない文字Cのオクテット配列を保証しトランスペアレントモードで送信するため,この遷移には7個の0を挿入している。 7.6 辞書更新 6.4節に規定した文字列照合手順の結果,一致した文字列と一致しなかった文字をもとに新しい辞書節点が作られる。 7.7 節点回復 新しい辞書節点を作った後,6.5項に規定した節点回復手順を行う。 7.8 データ圧縮部試験 データ圧縮部は,データ圧縮が行われているかどうかを周期的に試験する。 この試験の内容についてはここでは述べないが,この試験はデータ圧縮の前後でデータ列のセグメントを表現するのに必要なビット数の比較を行うものであろう。 7.8.1 データ圧縮モードへの遷移 もしデータ圧縮部がトランスペアレントモードにあり,データ圧縮が有効であると判定すると,次のように動作する。 a) その時まで照合した文字列および文字列照合処理による次の文字(これはデータ縮モードで送信した,最初の符号語を意味する文字列の最初の文字である。 )を使用し,辞書更新手順を行う。 b) ECMトランスペアレントモード・コマンドシーケンス(9.1項参照)により,データ圧縮モードへの遷移が必要であることを相手データ圧縮部に通知する。 c) データ圧縮モードに入る。 7.8.2 もしデータ圧縮部がデータ圧縮モードにあり,データ列を圧縮できないと判断すると,次のように動作する。 a) 7.4項および7.5項の手順により,部分的に圧縮したデータの符号語を送信したことを確認する。 b) その時まで照合した文字列および文字列照合処理による次の文字(これはトランスペアレントモードで送信した最初の文字である。)を使用し,辞書更新手順を行う。 c) ETM制御符号語(9節参照)を送信することによって,トランスペアレントモードへの遷移が必要であることを相手データ圧縮部に通知する。 d) オクテット配列(7.5項参照)を乱さないよう,必要な数の0を送信する。 e) トランスペアレントモードに遷移する。 7.8.3 初期化機能 トランスペアレントモードでは,6.2項および7.2項の手順によりデータ圧縮用辞書を再初期化しようとしていることを,RESETコマンドコードを使用して相手データ圧縮部に通知する。 再初期化の前にエスケープキャラクタの値を使ってRESETコマンドコードを送信する。 符号器が辞書の初期化を要求する条件はこの勧告では規定していないが,一般的には符号器が辞書の初期化により性能が向上すると判定するような場合である。 リンク確立時あるいは制御部がエラー状態を検知した時に,5.2項および5.6項に規定した辞書の再初期化要求手順を行う。 C-INIT要求プリミティブを制御部から受けた時には,RESETコマンドコードは送信しない。 7.9 C-FLUSH要求受信時の動作 もし符号器がデータ圧縮モードにあり,文字列照合手順中の状態であれば,制御部からC-FLUSH要求を受けるとデータ圧縮部は次のように動作する。 a) 7.4項および7.5項の手順により,部分的に照合した文字列の符号語を送信したことを確認する。 b) その時まで照合した文字列ともし可能なら文字列照合処理による次の文字を使用し,辞書更新手順を行う。 c) もしステップa)の結果,まだ送信していないビットが残っているならば(オクテット配列処理がまだできていない),次の処理をする。 i) F-LUSH符号語を送信する(9節参照) ii) 必要であれば,オクテット配列処理のために必要とするだけ数の“0"を送信する(7.5項参照)制御部からC-FLUSH要求を受けた時に,もしデータ圧縮部がトランスペアレントモードにあれば,データ圧縮部はアウトスタンディングにあるすべてのデータを送信しなければならない。 そして文字列照合動作は終了せず,また辞書更新処理も行わない。 8. 復号部の動作 復号部は,データ圧縮モードあるいはトランスペアレントモードのいずれでも動作できなければならない。 また,6節,7節および9節の規定に従って動作する。 相手モデムのデータ圧縮部からのRESETコマンドコードを受信するか,または制御部からC-INIT要求を受けると,6.2項および7.2項に規定する手順に従ってデータ圧縮部は復号部を初期化する。 復号器用辞書が相手の符号器用辞書と対応付けができている状態にするため,トランスペアレントモードでは復号部は6.3項の文字列照合手順を行う。 ECMまたはEIDコマンドコードを受けると,復号部は7.8.1項および9.2項に規定する手順に従って動作する。 6.4項および7.3項の手順により,新しい辞書の見出しが作られる。 データ圧縮モードでは,復号部は符号化された文字列を再生する。 ETMまたはFLUSH符号語を受けると,復号器は7.8.2項と7.9項に規定した手順により符号化動作と反対の復号動作を行う。 6.4項の手順により新しい辞書の見出しが作られる。 これはその直前に復号した文字列の最初の文字(プリフィックス)を,その前に復号した文字列に付け加えることに対応する。 復号器はSTEPUP符号語を受信すると,7.4項に規定した手順にあるように,これを相手符号器が符号語長を増加したという通知と見なす。 9. データ圧縮部間通信 9.1 制御符号語とコマンドコード データ圧縮部間の通信に使用する制御符号語とコマンドコードを表2/V.42bisに示す。 表2/V.42bis 9.2 エスケープシーケンスの使用方法 トランスペアレントモードのコマンドシーケンスは,エスケープキャラクタに続く,9.1項のいずれか1つのコマンドコードからなる。 もしDTEからのデータ列中に現在のエスケープキャラクタが含まれていれば,エスケープキャラクタによってあまりデータ量が増加しないように,データ圧縮部は次の動作をする。 a) もしトランスペアレントモードであれば,DTEからのエスケープキャラクタを送信し,その後でEIDコードを送信する。 その後, b) トランスペアレントモードあるいはデータ圧縮モードのいずれの場合でも,エスケープキャラクタの値に,モジュロ256で10進数の51を加える。 10. パラメータ 次のパラメータはデータ圧縮部が必要とするものである。 N1 からN7とP0からP2までは伝送の双方向に適用するのに対し,C1,C2およびC3の変数は符号器と復号器に必要となるものである。 N1 最大符語長(ビット長) N2 符号語の総数 N3 文字長(ビット長) N3=8 N4 アルファベットにおける文字の総数 N4=2N3 N5 文字列を格納するための最初の辞書の見出しのインデックス数 N5=N4+N6 N6 制御符号語の総数 N6=3 N7 最大文字列長 C1 次の空の見出し C2 現在の符号語長 C3 符号語長を変えるためのスレッショルド P0 V.42bisデータ圧縮要求 P1 符号語数(相手との調整パラメータ) P2 最大文字列長(相手との調整パラメータ) 付録A(V.42bis) V.42とともに使用する時のV.42bisのネゴシエーション手順 V.42エラー制御とともにこのデータ圧縮勧告を使用するときには,XIDのネゴシエーション手順を使用する。 (勧告V.42の7.6項,8.10項,10節およびISO 8885-1987〔6,7〕参照)勧告V.42に規定するものの他に,データリンクレイヤ・サブフィールドを使用する。 ユーザ・データ・サブフィールドの直前にあるXIDフレームにこれがあるが,表A-1/V.42bisのように符号化される。 プロトコルフェーズ確立中は,XIDフレームのプライベートパラメータセットのデータリンクレイヤ・サブフィールドにパラメータP0があるときは,データ圧縮要求を意味する。 注-勧告V.42の中にこのANNEXAを含めるかどうかについてはSGXVIIで検討中である。 表A-1/V.42bis MSB:最上位ビット LSB:再下位ビット 付録I(勧告V.42bis) 符号器のSDLによる説明(Z.100からZ.104)〔8〕 図I-1/V.42bisに,この付録の図に使用するSDLシンボルを示す。 次の図は,符号器の動作説明である。 a) 図I-2/V.42bis:符号器(7.2,7.3,7.8,7.9項参照) この図は符号器動作の主要なものを示す。 b) 図I-3/V.42bis:文字の処理(6.3,6.4,6.5項参照) この図はその終了条件および必要とする動作条件下での文字列照合動作手順を示す。 c) 図I-4/V.42bis:符号語長の調査(7.4項参照) この図は符号語長のステップアップ手順を示す。 d) 図I-5/V.42bis:データ圧縮の試験(7.8項参照) この図はトランスペアレントモードとデータ圧縮モード間の遷移手順と,RESETの使用手順を示す。 e) 図I-6/V.42bis:FLUSH(7.9項参照) この図はC-FLUSH要求受信時の動作を示す。 f) 図I-7/V.42bis:次の文字の異常処理(7.8.1a,7.8.2b,7.9b項参照) この図はデータ圧縮モードへの遷移あるいはフラッシュ動作に引き続く,データ圧縮モードの文字処理を示す。 g) 図I-8/V.42bis:エスケープキャラクタ手順(9.2項参照) h) 図I-9/V.42bis:信号初期化手順(7.8.3項参照) i) 図I-10/V.42bis:辞書への文字列と文字の追加手順(6.4および6.5項参照) 図I-1/V.42bis使用するSDLシンボル 図I-2/V.42bis符号器 図I-3/V.42bisキャラクタ処理手順 図I-4/V.42bis符号語長調査手順 図I-5/V.42bisデータ圧縮試験手順 図I-6/V.42bisFlush手順 図I-7/V.42bis次の文字の異常処理手順 図I-8/V.42bisエスケープキャラクタ手順 図I-9/V.42bis信号初期化手順 図I-10/V.42bis“文字列+文字”を辞書に加える手順 付録II(勧告V.42bisのANNEXへ) 製造業者への手引き 以下の項目は,データ圧縮機能の内蔵とパラメータの選択に関する情報である。 II.1 符号語の総数,N2の選択 辞書の大きさはN2-N6に等しい(辞書の見出しには未使用の符号語がないと仮定している)。 N2を大きくすると,使用できる文字列の数が大きくなり,N1の値もより大きいものになってしまう。 大きい辞書を選択しても,必要とする符号語長が大きくなるためその性能上の利点が相殺されてしまう。 ある種のデータタイプの場合には,小さい辞書を使用する方がより良い性能が得られることがある。 2n+1から1.3×2nの間にあるN2の値では(n整数),2nの値を変えても性能は改善されない。 N2の値として2048を選択すると,種々のデータタイプにおいて良好な圧縮性能が得られる。 II.2 データ構造 この勧告で規定しているデータ圧縮方式は,ツリ-データ構造であるものを装置に持たせるのに適している。 このデータ構造はメモリを効率的に使用でき,かつ高速の検索が可能である。 II.3 データ圧縮性能の計算 データ圧縮性能の計算とは,符号器が受けた文字数を(エラー制御部に)符号器が送ったオクテット数によって除算することである。 この計算における文字数とオクテット数は,C-INIT要求を受信すると0にする。 II.4 符号器の動作例 次の3例は符号器の動作例を示している。 ここでは辞書が,勧告本文中の図2/V.42bisの状態にあると仮定している。 II.4:1 単純な場合:データ圧縮モードにおける"BAY" 先頭の文字"B"を読み込み,文字列"B"を辞書検索する。 この文字列は辞書にあるので,次の文字"A"を読み込み,文字列"B"に付け加え,新しい文字列"BA"を作る。 この新しい文字列を辞書内で検索し,これも辞書にあるので次の文字列"Y"を読み込み,文字列"BA"に付け加え,新しい文字列"BAY"を作る。 "BAY"を辞書検索するが,これは辞書にないので,"Y"をその文字列から取り除き,"BA"を照合できた文字列とし,"Y"を照合できなかった文字として文字列照合手順を終了する。 "BA"の符号語をC2ビットで符号化し,オクテットに圧縮し,送信するため制御部に渡す。 文字列"BA"に"Y"を付加することにより新しい文字列"BAY"を作り,この新しい文字列に値C1の符号語を割り当てる。 C1を1だけ増加し,この値に割り当てている節点(文字列)が,空かあるいはリーフ節点であるかどうかを試験する。 もしこの節点が空であれば次の辞書更新に使用する。 もしこの節点が使用されていてかつリーフ節点でなければ,すなわち長い文字列の一部であれば,C1を再度1だけ増加し,試験を繰り返す。 もし節点がリーフ節点であれば,これを親節点から切り離し,次の辞書更新に再利用する。 文字"Y"は,文字列照合を再開するのに使用する。 II.4:2 単純な場合:トランスペアレントモードにおける"BAY" トランスペアレントモードではII.4:1節と同じ動作をするが,"BA"の符号語の代わりに文字"A","Y"を送信することだけが異なっている。 II.4:3 繰り返し文字あるいは文字列:データ圧縮モードにおける"CCCCC" この具体例を挙げた理由は,本勧告のアルゴリズムの特別な一面を示すためである。 符号器は先を見越した辞書更新を行うことができるのに対し,復号器は過去の復号データを元にその辞書更新を行うだけなので,復号器にデータを送信した後でなければ符号器は新しい辞書の見出しを使用することができない。 最初の"C"を読み込み,文字列"C"は辞書の見出しにあるので,2番目の文字"C"を読み込み,これを最初の文字に付加して"CC"として辞書検索する。 辞書に"CC"がないので,照合できた文字列を"C"とし照合できなかった文字列を"C"として,文字列照合手順を終了する。 "CC"を辞書に追加し,"C"に対応する符号語を送信し,次の文字列照合を2番目の"C"から始める。 3番目の"C"を読み込み,2番目の"C"に付加し,文字列"CC"を辞書検索する。 これは辞書に登録されているが,この辞書の見出しは直前の文字列照合で作られた辞書の見出し(6.3節b)参照)なので,"C"を照合できた文字列とし,もう1つの"C"は照合できなかった文字として文字列照合手順を終了する。 "CC"は既に辞書にあるので,辞書には登録しない。 この"C"に対応する符号語を送信し,次の文字列照合を3番目の"C"から始める。 4番目の"C"を読み込み,3番目の"C"に付加し,文字列"CC"を辞書検索する。 これは辞書に登録されており,かつ直前の文字列照合で作られた辞書の見出しとは一致しないので(辞書更新は禁止されている),5番目の"C"を読み込み,文字列に付加する。 参考文献 〔1〕CCITT Recommendation Error Correcting Procedures for DCEs using Asynchromous-to-Synchronous Conversion, Vol. VIII, Rec. V.42. 〔2〕CCITT Recommendation Support by a ISDN of Data Terminal Equipment with V-Series Type Interfaces with Provision for Statistical Multiplexing, Vol. VIII, V.120. 〔3〕ISO 3309-Data Communication-High Level Data Link Control Procedures-Frame Structure. 〔4〕CCITT Recommendation Definitions of terms concernig data communication over the telephone network, Vol. VIII, Rec. V.7. 〔5〕CCITT Recommendation Transmission of Start Stop Characters over Synchronous Bearer Channels,Vol. VII, Rec. V.14. 〔6〕ISO 8885-1987 Information Processing Systems-Data Communications-High Level Data LinkControl Procedures-General Purpose XID Frame Information Field Content and Format. 〔7〕ISO 8885-1987/ADD3 Information Processing Systems-Data Communications-High Level Data Link Control Procedures-General Purpose XID Frame Information Field Content and Format-Addendum3:Definition of a private parameter data link layer subfield. 〔8〕Serie Z.100 CCITT Recommendations Functional Specification and Description Language(SDL), Vol.X. CCITTブルーブック 第VIII巻 VIII-1 勧告V.42bis 平成2年9月25日発行 定価 2,500円 編 集 発 行 財団法人日本ITU協会 〒 105 東京都港区西新橋3丁目15-12 日本ケミカルビル7F TEL. (03)435-1931(代) FAX. (03)435-1935 編 集 責任者 清水 岩幸 印 刷 キンコー