「全二重」と「半二重」の違いって?

2015年4月16日(木)
榊 正憲(さかき まさのり)

全二重と半二重

シリアル伝送の際に必要なことを簡単に紹介しましたが、ここでいくつかの事柄をちょっと詳しく説明しておきます。

2台のコンピュータのシリアルポートを接続すると、双方向のデータのやり取りが可能になります。つまりコンピュータAからBにデータを送ること、BからAにデータを送ることができます。これは、AのTxDとBのRxD、AのRxDとBのTxDを2本の線で接続しているからです。双方向の通信を行うために、単方向の通信路を2組用意しなければならないということです。

このようなやり方とは別に、1組の通信路で双方向の通信を行うという方法もあります。2組の通信路を使って双方向の通信を行う形式を全二重通信といい、1組の通信路を使って双方向の通信を行う形式を半二重通信といいます(図1)。

全二重通信と半二重通信

図1:全二重通信と半二重通信

全二重通信が、伝送方向が固定された通信路を2組使うのに対し、半二重通信は、1本の通信路で双方向の通信を行います。半二重通信は通信路が1組で済みますが、その代わり、送信と受信を同時に行うことができません。例えばコンピュータAがBに送信している間は、BはAにデータを送ることはできません。1組しかない通信路が使用中だからです。全二重通信の場合は、2組の通信路が独立しているので、AからBへの送信中であっても、BからAに送信することができます。

データの伝送効率という面では、全二重方式が有利ですが、半二重方式は、通信路が1組で済む(つまり電線が1本でよい)というメリットがあります。ケーブルを長く伸ばさなければならない場合などは、このメリットは大きく、不利な部分に目をつぶって半二重方式を選択することもあります。

また、電波や赤外線を使った双方向通信は、基本的に半二重となります。同じ周波数の電波で信号を送る場合や同じ場所で赤外線通信を行う場合、双方が同時に送信したら混信してしまい、正しい通信が行えません。つまり特定の周波数帯域や空間を使うということは、通信路が1組しかないということです。代表的な例が、トランシーバーなどの無線機です。一方が話している(送信している)時は、相手側はそれを受信するだけで、送信することはできません。送受の切り換えは、相手が「どうぞ」というまで待たなければなりません(もちろん、送信と受信に異なる電波の周波数帯域を使えば、送受を同時に行う全二重通信も可能です)。

情報の表し方

シリアル伝送では、送信するデータの内容に従って、通信路にデジタルデータの0と1を順次送り出していきます。このとき通信路上で、0と1はどのように表されているのでしょう。

データの0と1を表す基本的な方法は、電気信号の2種類の状態を使うというものです。もっとも単純なやり方は、2種類の電圧に対して0と1を割り当てるという方式です。例えばグラウンドレベル(0V)と正の電圧(数ボルト)とか、正の電圧と負の電圧、あるいは電流が流れているかいないかといった、比較的簡単に生成/検出できる2種類の電気的状態に0と1を割り当てるのです。RS-232準拠のシリアルポートの場合、-5V以下が1、+5V以上が0と定められています(図2)。

電圧により0と1を表す

図2:電圧により0と1を表す

0と1をそれぞれ一定の電圧で表現するという方式では、データとして0か1が続いた場合、電圧がずっと変化しないことになります。長時間同じ状態が続けば、タイミングがずれてしまう可能性もあります(電圧が変化すれば、その時にタイミングを修正できます)。送信側が1000ビットの0を送ったつもりなのに、受信側は999ビットとみなしてしまうかもしれません。

また通信の方式によっては、別の条件が求められる場合があります。例えば0、1のデータが送られている状態と、データ送信を行っていない状態を区別したい時などです。2種類の電気的な状態で0と1を表している限り、3番目の状態、つまりデータがないという状況を表すことができません。

こういった要件を満たすために、電気信号の静的な状態で0と1を表すのではなく、信号波形の変化のパターンによって0と1を表現するという方法もあります。例えば、0と1を電圧波形の変化のパターンで表現するのであれば、0や1がずっと続くといった特殊なパターンであっても、何らかの電圧の変化を常に発生させることができ、データの送信が行われていない状態(電圧変化が起こらない状態)と区別することができます。

本書の第4章で説明する10Baseイーサネットでは、マンチェスタ符号化という方式で、ケーブル上に送られる0と1を表現しています。図1-9に示したように、0を表す信号波形のパターンはLH、1を表すパターンはHLとします(Lは低い電圧レベル、Hは高い電圧レベル)。つまり0であろうと1であろうと、そのデータを表現する信号波形のパターンは、中間で1回必ず電圧が変化するのです。

このような形でシリアル伝送を行えば、たとえ0か1がずっと続くというデータパターンであっても、常に電圧波形が変化し続ける形で信号を送ることができます。そして伝送路で電圧変化がなければ、データ送信が行われていないとみなすことができます。

マンチェスタ符号化

図3:マンチェスタ符号化

2種類の電気的な状態を使うという方法は単純で確実なのですが、通信速度を上げていくと問題が発生します。単純な符号化方法では伝送するデータ量が増えるほど、通信路での信号の変化の回数が増えていきます。これは伝送する信号の周波数が高くなるということを意味します。高い周波数の信号を送るためには、より周波数帯域の広いケーブルを使う必要があります。また周波数が上がるほど、ノイズの影響を受けやすくなり、延長距離も短くなります。

単純に考えると、10Mbpsの10Base-Tイーサネットと100Mbpsの100Base-TXイーサネットではデータ通信速度が10倍ですから、もし同じ方式でデータを送っていたら、信号周波数も10倍になってしまい、同じようなケーブルで配線したり、同等の延長距離を実現するのは難しくなります。そのため高速の通信では、信号の周波数をあまり高くすることなく、より多くのビットを送るための方式が考案され、使われています。

符号化

符号化にはいくつかの意味があります。文字、画像などの情報をデジタルデータに変換することを符号化といいます。画像をピクセルに分解し、個々のピクセルを数値化して並べて画像情報を構成したり、文字に2進数の値を割り当てて文字コードとして表すなどです。

通信の際に使われる符号化というのは、0と1で表されるデジタルデータを、その通信路の特性や要件に合わせて別の形に変換することです。そして通信路で送られる符号化されたデータは、受信側で元のデータに復元されます。これを復号といいます。

適切な符号化を行うことで、通信路でより多くの情報を誤りなく送ることが可能になります。

この記事のもとになった書籍
完全マスターしたい人のためのイーサネット&TCP/IP入門

榊 正憲 著
価格:2,000円+税
発売日:2013年12月19日発売
ISBN:978-4-8443-3511-5
発行:インプレスジャパン

完全マスターしたい人のためのイーサネット&TCP/IP入門

世の中で広く知られているイーサネットとTCP/IP、つまりインターネットや社内LANなどで、標準的に使われているネットワーク方式とプロトコルについて詳しく解説。 各項目については初歩的なレベルから解説し、中級レベルまで掘り下げています。 その過程で、仕組みや原理についてなるべく詳しく、そしてなぜそのような仕組みになっているのか、といったことを説明しています。 「これはこうなっている」という知識だけではなく、「これは何をするために、どのような原理でそうなっているのか」まで、きちんと体系立てて理解できる、ネットワーク初心者必携の1冊です。

Impress詳細ページへ

連載期間中、電子書籍版を20%オフでご提供します!

本連載の掲載に合わせて、本書籍の電子版を特別に20%オフでご提供します。興味のある方は是非ご検討ください。

クーポンコード:get3gerc

今すぐImpressで電子書籍を購入

※クリックすると購入ページに移動します。あらかじめクーポンコードをお控えください。
※クーポンコードの利用には、CLUB Impress会員の登録(無料)が必要です。
※リンク先で注文内容を確認後、「レジに進む」をクリックするとクーポン入力欄が表示されます。
※クーポンの利用期限は2015/04/30までです。

著者
榊 正憲(さかき まさのり)

電気通信大学卒業。プログラミング、システム管理などの仕事のあと、フリーランスで原稿翻訳、執筆などを行う。現在は、有限会社榊 製作所 代表取締役。著書に『復活!TK-80』『コンピュータの仕組み ハードウェア編(上・下)』、翻訳書に『Inside Visual C++ Version 5』(いずれも旧アスキー発行)、『Pthreadsプログラミング』(オライリー・ジャパン)などがある。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています