Chapter03 OSI参照モデルとは_"物理層"
筆者が大学の講義で手に入れた情報をクラウド上(note上)に残すために書いています。講義ノートに近いものです。せっかくインプットしたので、アウトプットしときたいという目的も含まれています。
その道のプロではありません。誤情報が含まれていたり、厳密さに欠けている可能性があります。
今回からOSI参照モデルの第一レイヤー物理層に入っていきたいと思います.
Chapter02では、Webの仕組みについて投稿しました
OSI参照モデル振り返り
7 : アプリケーション層
ユーザーに特定のサービスを提供できるようにする
6 : プレゼンテーション層
データ形式を統一できるようにする
5 : セッション層
双方向に通信できるようにする
4 : トランスポート層
どのプログラムに届いたデータかを仕分けできるようにする
3 : ネットワーク層
地元エリアを連携して、全世界でのデータ通信を実現する
2 : データリンク層
地元エリア内でデータ通信を実現できるようにする
1 : 物理層(フィジカル層)
電気信号、電波、光を利用して、0 1を伝送できるようにする
OSI参照モデルの定義
レベルごとに階層化したプロトコルを作成し、世界共通で利用できるようにする。
こんな内容でした。
Chapter01でOSI参照モデルの定義については話しているのでぜひ参照して戻ってきてください
今回は、一層目 物理層に入っていきます。
物理層の役割
物理層では、これからの上位層の基礎となるようなことを決めていきます。
コンピュータ同士のつなぎ方を決める
・ケーブルやコネクタの形状
「0」「1」をどのように流すかを決める
・電圧の強さ
これらを決めることによって「0」,「1」をツナgっている機器同士でやりとりができる。情報を送れる。
「0」,「1」の伝送
コンピュータとは、情報を処理することができる機械と説明した。
電気が流れる状態を「1」、流れない状態を「0」を駆使して、情報を表現
電球が光ってるのを想像すると分かりやすいかもしれません。
コンピュータはディジタルデータ(0,1で表現されるデータ)を処理可能
Wireshark(Chapter01で紹介)で物理層のディジタルデータを実際に覗くこともできます。見てみると面白いのでぜひ。(やっぱり、0,1しか見えないのでそこまでおもしろくないかも)
電気信号の特性 :
距離が伸びると電圧が下がる(電圧降下)
・電源ON/OFFが曖昧になる
実際の電気を用いた通信では、
-1V以上2V以下 : 「0」
3V以上6V以下 : 「1」
と電圧の大きさの幅を持たせることがある。
伝送の効率化と信頼性はトレードオフ
電圧の幅を細かく区切ると、多くの数字を表現できる
・効率性
電圧の幅を荒くすると、用法を確実に送ることができる
・信頼性
「0」「1」を表現する方法は電気以外にもある。
電気
電圧が低い状態 / 高い状態
電波
電波がない状態 / ある状態
光
光のある状態 / ない状態
シリアル通信
ケーブルをつなぐ通信方法にも種類が色々とある。
シリアル通信とパラレル通信について
シリアル通信
1本の線を使って複数のデータを時間差で送る方法
パラレル通信
複数の線を使って一度にデータを送る方法
単純に考えれば、線をいっぱい使って一度にデータを送れるパラレル通信の方が利点が大きいように感じる。
だが生産コスト、購入コストはもちろん線の数が多い分、長い距離にすればするほど高くなる。
シリアル通信とパラレル通信には一長一短ある。
シリアル通信について分かりやすく説明してくれている人がいるのでぜひイメージ作りに軽く読んでみてください
RS-232C
実際に使われているシリアル通信の一つ
・PCと制御機器(モニタなど,D-Subケーブル)の接続で主に使われている
・LANとして最近使われていない
一定時間ごとに1bitずつ送る方法
8bitのデータを送信できる
このRS-232Cのシリアル通信には、重要な特徴がある。
1 : データ送信の開始と終了のタイミングを知らせる工夫がされている
2 : データの謝りを検知する仕組みがある
何が重要なのか一見してわからないかもしれないが、これから説明していく。
特徴1
データ送信の開始と終了のタイミングを知らせる
そもそもなぜデータ送信の開始と終了のタイミングを知らせる必要があるか。
具体例を挙げて説明する
「10110001」という通信を行いたいとする
一定時間(10秒)ごとに1bitずつデータを送る単純な例を考える
つまりこう言うことである。
だがこれには問題がある。
データを受け取る側はデータの開始と終了がどこかわからないのだ。
ex : 「00100010」を送りたい
一見して、何も問題はない。
ただ受信者の解釈の仕方によってこう言う受け取り方もできる
「1」が送られてきた時に、送られてきたと考えたのだ。
そうすることで、「00100010」という情報が、「10001000」と言う情報に勘違いしてしまったのだ。
勘違いした理由
電球の「OFF」「0」の意味が以下の2通りある
1 : データを送ってない状態
2 : 「0」を送信している状態
全ては、いつデータ送信が始まり、いつデータ送信が終わるかがわからないのが問題なのだ。
そこでRS-232Cでのデータ送信のルールでは
データを送っていない時、
常に「1」を送信する
データを送るときはいったん「0」を送信
スタートビットという
8bitのデータを送り終わったら最後に「1」を送信
ストップビットという
一定時間とは?
伝送速度
9600bit/秒, 19200bit/秒, 384000bit/秒, 57600bit/秒など
ストップビット
1bit, 1.5bit, 2bitの長さ
0,1の表現方法はいくつかある。
NRZ符号
「0」一定時間電源「OFF」
「1」一定時間電源「ON」
単純で分かりやすい
高速化が難しい
マンチェスタ符号
「0」一定時間以内に「ON」から「OFF」
「1」一定時間以内に「OFF」から「ON」
高速化可能
特徴2
データの誤りを検知する仕組み
そもそもなぜデータの誤り検知の仕組みが必要なのか?
例えば
RS-232C方式で
「0001000101」というデータを受け取った(スタートビットとストップビット付き)
データ送信している時に、
伝送誤り(エラー)が発生することがある
伝送エラーの原因例
・電子レンジ
・車
・雷
この雑音(ノイズ)を受けると
「00100010」という情報が「00100110」とか変化しちゃう
じゃあノイズが起きちゃたらどう確認するべきか?
受信者が、送られてきたデータが正しいかどうかを確認できる仕組みがあれば良い。
誤りを検知するため、送信者はデータに誤りを検出するためのビット列を付加する
パリティビット
データ伝送中の1bit誤りを検出するため、信号に 冗長性を持たせるビット
種類
・偶数パリティ
・奇数パリティ
偶数(奇数)パリティ
データ(8bit)の最後尾に1bit追加し、この9bit全体で1の数が偶数(奇数)個になるようにする
つまり偶数パリティでルールを決めていた場合
送られてきたデータの9bitの1の数を数えて奇数になっていたら送信者の意図ではないものが混じっているデータになってるということ
ただパリティビットの仕組みは誤りを検知できるだけ。
訂正はできない
データ受信者は送信者にもう一度同じデータを送ってもらうしかない
再度要求
無線LAN
ディジタルデータを変調させ、アナログ波形にすることでデータを送る方式
変調
ディジタル信号「0」「1」をアナログ波形に変化すること
復調
アナログ波形をディジタル信号「0」「1」に再生すること
電気信号では、「0」「1」 = 電気の「OFF」「ON」
電波では、「0」「1」 = 波、アナログ波形
変調方法の種類
(a)振幅偏移変調,AM,ASK
波(振幅)の大きさの変化で「0」「1」を表現
(b)周波数偏移変調,FM,FSK
周波数の高さの変化で「0」「1」を表現
(c)位相偏移変調,PM,PSK
位相の変化で「0」「1」を表現
位相 : 簡単に言うと波の発生位置
多値変調
・ASK,FSK,PSKは、1回の変調で1bitを送信している
・実際の無線LANでは、
1回の変調で複数bitを送信する技術
複数の変調方式
を組み合わせる技術が利用されている。
物理層での接続
信号変換
途中で通信方法が変わっても、なんらかの方法で0,1が伝えられたら良い
(OSI参照モデルの恩恵)
ipadから無線で無線LAN(波)まで、無線LANからLANケーブルであるノードまで(電気)、あるノードから海底ケーブルあるノードまで(光)
このように信号の方式が変化しても構わない
リピータ
電気信号は距離が長くなると弱くなる
0/1を判断できなくなってくる
リピータ
入力信号の0/1を識別し、単に電気信号を増幅する機器
次回はデータリンク層について話していく
この記事が気に入ったらサポートをしてみませんか?