伝送制御とは ― HDLC・ベーシック手順と同期方式
伝送制御は、
伝送制御とは
伝送制御は、送る側と受ける側の間で、データを誤りなく順序どおりに届けるための手順です。回線をつないでから、送り終えて回線を切るまでの流れを、5つのフェーズ(段階)に分けて定めています。代表的な手順はベーシック手順とHDLCで、後から作られたHDLCの方が効率よく送れます。
誤りを検出するだけでは、データを正しく届けられません。誰がいつ送り、誤りがあればどう再送するかを決めておく必要があります。その決まりが伝送制御です。
伝送制御の5つのフェーズ
伝送制御の用語は多いですが、どれも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はフラグでフレームを区切ります。
| 項目 | ベーシック手順 | HDLC |
|---|---|---|
| 同期方式 | キャラクタ同期(SYN同期) | フレーム同期(フラグ同期) |
| 運べる中身 | 文字が単位 | 文字に限らない任意のビット列 |
| 送り方 | 1ブロックごとに応答を待つ | 応答を待たずに続けて送れる |
| 誤り検出 | BCC(パリティやCRCで計算) | FCS(CRC) |
ベーシック手順の基本の形では、制御文字と同じ並びをテキストに入れられません。DLEを前に付けて区別する透過モードもありますが、文字を単位にする点は変わりません。HDLCはビット単位で透過性を持つので、この制約がありません。
マルチリンク手順・コネクション方式
伝送制御には、ここまでの手順を拡張したり、別の観点から分類したりする用語もあります。
マルチリンク手順
2局の間に複数のデータリンクを並べ、それらを束ねて1本の論理的なリンクとして使う手順を、マルチリンク手順と呼びます。国際規格はISO 7478です。束ねると使える帯域が増え、1本が切れても残りのリンクで通信を続けられます。
コネクション方式とコネクションレス方式
データを送る前に、相手との間で通信路を確立する方式をコネクション方式と呼びます。伝送制御のデータリンク確立と解放も、この考え方です。確立の手順を省いてすぐに送る方式は、コネクションレス方式と呼びます。
インターネットでは、TCPがコネクション方式、UDPとIPがコネクションレス方式です。TCPとUDPの違いの記事では、同じ区別をコネクション型・コネクションレス型と呼んでいます。回線交換やパケット交換といった交換方式は、回線交換とパケット交換の記事で比べています。
練習問題(全5問)
正解:回線接続、
最初に
正解:制御局が
制御局が
正解:ベーシック手順は
ベーシック手順は、
正解:011111010
先頭の
正解:コネクション方式は、
コネクション方式は、
選んでから「採点する」を押すと、解説つきで答え合わせができます。
関連記事
おすすめの本 PR
ネットワークを初めて学ぶ人向けの入門書です。
![『[改訂新版]3分間ネットワーク基礎講座』の表紙](https://m.media-amazon.com/images/P/4774143731.09.MZZZZZZZ.jpg)
