ITの教科書検索
入門・発展ページ読了 約13分

伝送制御とは ― HDLC・ベーシック手順と同期方式

伝送制御は、データを誤りなく順序どおり届けるための手順です。回線をつないでから切るまでを5つのフェーズに分け、ベーシック手順とHDLC、同期方式の違いを整理します。

目次
  1. 伝送制御とは
  2. 伝送制御の5つのフェーズ
  3. データリンク制御・フロー制御・ルーティング制御
  4. コンテンション方式とポーリング/セレクティング方式
  5. 同期方式:調歩同期・SYN同期・フラグ同期
  6. ベーシック手順とは
  7. HDLCとは
  8. 動かして確かめる:ビット挿入
  9. ベーシック手順とHDLCの違い
  10. マルチリンク手順・コネクション方式
  11. 練習問題

伝送制御とは

伝送制御は、送る側と受ける側の間で、データを誤りなく順序どおりに届けるための手順です。回線をつないでから、送り終えて回線を切るまでの流れを、5つのフェーズ(段階)に分けて定めています。代表的な手順はベーシック手順とHDLCで、後から作られたHDLCの方が効率よく送れます。

誤りを検出するだけでは、データを正しく届けられません。誰がいつ送り、誤りがあればどう再送するかを決めておく必要があります。その決まりが伝送制御です。

伝送制御の5つのフェーズ

伝送制御の用語は多いですが、どれも5つのフェーズのどこかに属します。先に全体の流れを知っておけば、個々の用語がどの段階の話かが分かります。

交換回線のときだけ交換回線のときだけデータリンク制御フェーズ1回線接続フェーズ2データリンク確立フェーズ3情報転送フェーズ4データリンク解放フェーズ5回線切断時間の流れ主な方式コンテンションポーリング・セレクティング同期・誤り制御フロー制御ベーシック手順ENQ → ACKSTX…ETX → ACKEOTHDLCSABM → UAIフレームDISC → UA
伝送制御は、左から右へ5つのフェーズで進みます。点線のフェーズ1と5は、電話網のような交換回線を使うときだけ行います。下の2段は、同じフェーズでベーシック手順とHDLCがそれぞれ何を送るかを示しています。
  1. 回線接続:電話をかけるように、相手までの物理的な回線をつなぎます。
  2. データリンク確立:送る側と受ける側を決め、相手が受信できる状態かを確かめます。
  3. 情報転送:データを区切って送り、誤りがあれば再送します。
  4. データリンク解放:送り終えたことを伝え、送受信の関係を解除します。
  5. 回線切断:回線を切ります。

フェーズ1と5は、電話網のような交換回線を使うときだけ行います。専用線は常につながっているので、フェーズ2から4だけで済みます。

データリンク制御・フロー制御・ルーティング制御

フェーズ2から4で、隣り合う2台の間のやりとりを管理する制御を、データリンク制御と呼びます。ベーシック手順とHDLCは、どちらもデータリンク制御の手順です。

情報転送のフェーズで受ける側の処理が追いつかないときは、受ける側が送る側に一時停止を求めます。このように、送る量を受ける側に合わせて調整する制御を、フロー制御と呼びます。

データが中継局をいくつも経由するときは、どの経路で送るかも決める必要があります。これをルーティング制御と呼びます。インターネットでこの役割を受け持つのはルータです。

届いたデータの誤りを検出して再送を求める制御は、誤り制御と呼びます。パリティチェックやCRCの計算方法は、誤り検出の記事で実際に試せます。

コンテンション方式とポーリング/セレクティング方式

フェーズ2のデータリンク確立では、誰が送信を始めるかを決めます。決め方は、回線のつながり方によって2つに分かれます。

コンテンション方式

2局(2台の通信機器)を1対1でつなぐ回線では、送りたくなった局が自分から送信を申し出ます。この方式をコンテンション方式と呼びます。両方が送りたいときは、先に申し出た局が送信権を得ます。

ポーリング/セレクティング方式

1本の回線に多数の局がつながる構成では、各局が自由に送ると衝突します。そこで、中心となる制御局を1つ置き、ほかの局は制御局の指示で動きます。

制御局が各局に「送るデータはありますか」と順に問い合わせることを、ポーリングと呼びます。逆に、制御局からある局へ送りたいときに、先に「受け取れますか」と確かめることを、セレクティングと呼びます。

方式誰が送信を始めるか向いている構成
コンテンション方式送りたくなった局が自分から申し出る。先に申し出た局が送る2局を1対1でつなぐ構成
ポーリング/セレクティング方式制御局が順に問い合わせて、送る局と受ける局を決める1本の回線に多数の局がつながる構成

同期方式:調歩同期・SYN同期・フラグ同期

回線を流れるのは、0と1が切れ目なく続く信号です。受ける側は、どこから文字やフレームが始まるかが分からないと、ビットを正しく区切れません。送る側と受ける側で区切りの位置を合わせることを、同期と呼びます。

方式区切りの目印合わせる単位
調歩同期1文字ごとのスタートビットとストップビット1文字ずつ
SYN同期先頭に置くSYN文字文字のまとまり
フラグ同期フレームの前後に置く01111110フレーム(任意のビット列)

調歩同期

調歩同期は、1文字ごとに、先頭に0のスタートビットを、末尾に1のストップビットを付ける方式です。受ける側は、スタートビットを見つけるたびに区切りを合わせ直します。仕組みは単純ですが、1文字ごとに余分なビットが付くので効率はよくありません。

SYN同期

SYN同期は、送りたい文字のまとまりの前に、SYNという同期用の制御文字を2個以上置く方式です。受ける側は、SYNのビットの並びを見つけて、そこから8ビットずつ文字を区切ります。文字を単位に区切りを合わせるのでキャラクタ同期とも呼び、ベーシック手順がこの方式を使います。

フラグ同期

フラグ同期は、フレームの前後に、フラグと呼ぶ01111110という決まった8ビットを置く方式です。受ける側は、フラグを見つけてフレームの始まりと終わりを判断します。文字ではなくフレームを単位に区切りを合わせることをフレーム同期と呼びます。フラグ同期はフレーム同期の方式の1つで、HDLCが使います。

ベーシック手順とは

ベーシック手順は、制御文字を使って伝送を進める手順です。国際規格はISO 1745で、日本ではJIS X 5002「基本形データ伝送制御手順」として定められています。もともと文字のデータを送るために作られたので、文字を単位に送ります。

手順の制御には、文字コードの中にある制御文字を使います。主な制御文字は次のとおりです。

制御文字意味使う場面
SYN同期を取るブロックの先頭
ENQ相手に応答を求めるデータリンク確立
ACK/NAK正しく受け取れた/受け取れなかった確立と情報転送
SOHヘッダの始まり情報転送
STXテキストの始まり情報転送
ETB/ETXブロックの終わり/テキスト全体の終わり情報転送
EOT伝送の終わりデータリンク解放
DLE直後の文字の意味を変える透過モード

コンテンション方式なら、送りたい局がENQを送り、相手がACKを返せばデータリンクが確立します。次に、SOHから始まるブロックを送り、相手からACKかNAKが返るのを待ちます。NAKが返ったら、同じブロックを再送します。すべて送り終えたら、EOTでデータリンクを解放します。

ブロックの末尾には、誤り検出用のBCCという文字を付けます。BCCの計算には、ブロック全体の水平パリティやCRCを使います。1ブロックごとに応答を待つので、応答が返るまでの間、回線は使われません。

HDLCとは

HDLC(High-level Data Link Control)は、フラグで区切ったフレームを単位にデータを送る手順です。国際規格はISO/IEC 13239で、ベーシック手順の効率の悪さを補うために作られました。

フレームの構成

1つのフレームは、フラグで始まりフラグで終わります。間には、アドレス部・制御部・情報部・FCSの4つが入ります。アドレス部は局を識別する番号で、制御部はフレームの種類と順序番号を表します。

情報部は、運びたいデータそのものです。FCSは、フレームの誤りを検出するための値で、16ビットか32ビットのCRCで計算します。

フレームの種類

制御部が表すフレームの種類は、次の3つです。

種類役割使うフェーズ
Iフレームデータを運ぶ。送信順序番号を持つ情報転送
Sフレーム受信の確認や一時停止を伝える。RRやRNRがある情報転送
Uフレームデータリンクの確立や解放を指示する。SABM、DISC、UAがあるデータリンク確立・解放

5つのフェーズに当てはめると、送る側はまずSABMでデータリンクを確立し、次にIフレームでデータを送ります。送り終えたら、DISCでデータリンクを解放します。受ける側は、SABMとDISCにUAで応答します。

ビット透過性とビット挿入

情報部に01111110の並びがそのまま入ると、受ける側はそれをフラグと誤認します。そこで送る側は、フラグの間で1が5個続いたら、その直後に0を1個挿入します。この処理をビット挿入と呼びます。受ける側は、挿入された0を取り除いて元に戻します。

ビット挿入があるので、情報部にはどんなビット列でも入れられます。この性質をビット透過性と呼びます。そのため、文字に限らず、画像やプログラムのような任意のデータを運べます。

続けて送れる仕組み

HDLCは、データを運ぶフレームに送信順序番号を付けます。受ける側は、次に受け取りたい番号を返して受信を知らせます。番号で管理するので、送る側は応答を待たずに複数のフレームを続けて送れます。

番号が3ビットの場合、応答を待たずに送れるのは最大7フレームです。受ける側の処理が追いつかないときは、受信不可を表すRNRを返して送信を止めます。これがフロー制御の例です。

HDLCのフレームの形は、その後の手順の手本になりました。シリアル回線でPPPを使うときも、HDLCに似たフレームでデータを包みます。PPPについてはPPPoEとIPoEの記事で説明しています。

動かして確かめる:ビット挿入

次の図で送りたいデータのビットを押して変えると、送る側が挿入する0の位置が変わります。初期値には、フラグと同じ01111110の並びが含まれています。

送りたいデータ(16ビット)。押すと0と1が切り替わります

挿入前に01111110の並びが
ある
挿入した0の数
2個
実際に送るビット列(色付きが挿入した0)
001111101011111010
送るビット列に01111110の並びが
ない
受信側が0を取り除くと
元のデータに戻る

挿入後のビット列では、1が6個以上続くことはありません。フラグは1が6個続く並びなので、中身がフラグと誤認されることもありません。

ベーシック手順とHDLCの違い

2つの違いは、区切りの合わせ方と中身の単位にあります。ベーシック手順は文字を単位に区切り、HDLCはフラグでフレームを区切ります。

ベーシック手順(キャラクタ同期)SYNSYNSOHヘッダSTXテキストETXBCC同期用の文字文字の並び誤り検出HDLC(フラグ同期)F01111110ACI(情報)FCSF01111110区切りの目印局の識別種類・番号任意のビット列CRC区切りの目印
上下で同じ色の部分は、同じ役割です。SYNとFの部分は区切りを合わせる目印で、ベーシック手順はSYN文字、HDLCはフラグを使います。テキストとIの部分は運ぶ中身です。ベーシック手順は文字を単位にした並びで、HDLCは文字に限らない任意のビット列です。
項目ベーシック手順HDLC
同期方式キャラクタ同期(SYN同期)フレーム同期(フラグ同期)
運べる中身文字が単位文字に限らない任意のビット列
送り方1ブロックごとに応答を待つ応答を待たずに続けて送れる
誤り検出BCC(パリティやCRCで計算)FCS(CRC)

ベーシック手順の基本の形では、制御文字と同じ並びをテキストに入れられません。DLEを前に付けて区別する透過モードもありますが、文字を単位にする点は変わりません。HDLCはビット単位で透過性を持つので、この制約がありません。

マルチリンク手順・コネクション方式

伝送制御には、ここまでの手順を拡張したり、別の観点から分類したりする用語もあります。

マルチリンク手順

2局の間に複数のデータリンクを並べ、それらを束ねて1本の論理的なリンクとして使う手順を、マルチリンク手順と呼びます。国際規格はISO 7478です。束ねると使える帯域が増え、1本が切れても残りのリンクで通信を続けられます。

コネクション方式とコネクションレス方式

データを送る前に、相手との間で通信路を確立する方式をコネクション方式と呼びます。伝送制御のデータリンク確立と解放も、この考え方です。確立の手順を省いてすぐに送る方式は、コネクションレス方式と呼びます。

インターネットでは、TCPがコネクション方式、UDPとIPがコネクションレス方式です。TCPとUDPの違いの記事では、同じ区別をコネクション型・コネクションレス型と呼んでいます。回線交換やパケット交換といった交換方式は、回線交換とパケット交換の記事で比べています。

練習問題(全5問)

Q1交換回線を使う伝送制御の5つのフェーズを、正しい順に並べたものは?
Q2ポーリング/セレクティング方式の説明として正しいものは?
Q3ベーシック手順とHDLCの比較として正しいものは?
Q4HDLCの送信側が、フラグの間で送るデータ「01111110」にビット挿入を行うと、実際に送るビット列はどれ?
Q5コネクション方式とコネクションレス方式の説明として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す