数学

大学数学の「わからない」を「わかる」に。線形代数、解析学、離散数学、確率・統計の基本科目から制御数学、複素解析などの応用科目まで。

情報

計算機システム、アルゴリズムの基本科目から、画像処理などの専門科目まで。ITエンジニアを目指す学生をサポート。

うさぎ模試

自分の実力を試す「うさぎ模試」。オリジナル演習問題と丁寧な解説で、試験対策もバッチリ。

大学生活

工大生のリアルな日常と生存戦略。就活とか工業大学生の恋愛など。

SHARE:

うさぎでもわかるネットワーク Part01 プロトコルとOSI参照モデルとTCP/IP

うさぎでもわかるネットワーク Part01 プロトコルとOSI参照モデルとTCP/IP

こんにちは、ももやまです。

今回から数回に分けてネットワークに関するまとめ記事を書いていきたいと思います。

 

最初は、コンピューター同士の通信規格の1つであるOSI参照モデルや、TCP/IPについて説明していきたいと思います。

 

 

1.プロトコル

(1) プロコトルとは

皆さんの中で、手紙を出したことがない人はいないと思います。

手紙を出すときを思い出してみましょう。住所や郵便番号などの宛名を書いて、伝えたいことを書いて、切手を貼って、ポストに入れたら勝手に郵便局のバイクの人が回収してくれます。このように、手紙を書くときはいくつかのおやくそくが決まっていますよね*1

ネットワークの世界も同じように、コンピュータ同士が通信するためのおやくそくが決まっています。これがプロトコルです。

(2) 代表的なプロトコル

ところでプロトコルって具体的にどんなものがあるのでしょうか。

いくつか、代表的なプロトコルと下の表で確認しておきましょう。

プロトコル名略称役割
HTTPHyperText Transfer ProtocolChromeなどのWebブラウザでHTMLで記述された文書を見るときに使うプロトコル。
FTPFile Transfer Protocolファイル転送のときに使うプロトコル。
TelnetTelnet他のコンピュータにログインして、遠隔操作を行うときに使うプロトコル。
SNMPSimple Networok Management Protocol構成機器を構成、制御するときに使うプロトコル。
NTPNetwork Time Protocolコンピュータの時間をあわせるときに使うプロトコル。

なお、メール関係のプロトコルは複雑なので、次の(3)で説明したいと思います。

(3) メール関係のプロトコル

皆さんがメールを受け取ったり送るときにも様々なプロトコルが役に立っています。

メール関係で使われるプロトコルの具体例を見ていきましょう。

プロトコル名略称役割
SMTPSimple Mail Transfer Protocol利用者がメールを送信するとき、メールサーバー間での送受信時に使うプロトコル。
POPPost Office Protocolメールサーバー上にあるメールボックスから、受信したメールを取り出すときに使うプロトコル。
IMAPInternet Message Access ProtocolPOPと同じくメールを受信するプロトコルだが、送受信データをサーバー上で管理する。
MIMEMultipurpose Internet Mail Extetnsion英数字(ASCIIコード)以外にも、日本語(2バイト文字)や画像などのファイルも送れるように拡張するプロトコル。
S/MIMESecure MIME電子メールの中身を暗号化したり署名したりすることでセキュリティを高めるプロトコル。

なお、具体的にどうやってメールが送られるかについては、また別の回に説明したいと思います。

2.OSI基本参照モデル

(1) OSI基本参照モデルとは

皆さんが手紙を出したあと、どうやって宛名主に届くか知っていますか?

届くまでの流れとしてはおおまかに、

  • バイクに乗った人が手紙を回収し、近くの郵便局へ輸送し、消印を押す。
  • さらに大きい郵便局へ郵送し、地域ごとに仕分けされる
  • 配達先地域の大きい郵便局(目的地に近い中央郵便局とか)へ輸送
  • 宛先に近い郵便局へ輸送
  • 配達員によって配達される

のように5つ程度に分けることができます。

このような段階を追って行われるおやくそく(処理)は、ネットワークの世界にも同じく存在しており、例えば、

  • どんなケーブルを使えばいいか
  • どうやって2つのコンピュータ同士を通信するか

などが事細かく決まっています。

そのようなおやくそくを7つに分け、さらに階層化したものをOSI基本参照モデルと呼びます。

f:id:momoyama1192:20200314095931g:plain

上から順番にア・プ・セ・ト・ネ・デ・ブと呪文のように唱えていたらいつのまにか覚えていると思います。

太った人の前で言うのはやめたほうがいいかもしれません。

階層モデルの特徴

階層モデルの特徴として、

  • 各層の実現した仕事(サービス)を1つ下の層に提供
  • 下の層は、上の層のサービスの引き渡し方法さえ知っておけばデータをそのまま利用可能

という特徴があります。

そのため、1つ上(下)の階層へのサービスの受け渡しの方法(インターフェイス)さえ決めておけば、他の層の中身を確認することなく結果を利用することができるのです。

各層におけるデータ送信時の処理

データ送信時には、

  • それぞれの層から受け取ったデータ(ペイロードと呼ばれます)に各層で行った仕事(使った情報)をヘッダとして追加
  • どんどん下位の層に追加

されていきます。なお、受信時は送信時と反対の操作が行われます。

f:id:momoyama1192:20200315182842g:plain

例えば、ネットワーク層であれば、1つ上のトランスポート層のサービス(ペイロード)を受け取ってからネットワーク層で必要な処理データ(ヘッダ)を追加、1つ下のデータリンク層へ処理結果(サービス)を渡します。

(2) それぞれの層の役割

では、それぞれの層の役割を上から順番にちょっと詳しく見ていきましょう。

第7層 アプリケーション層

アプリケーション(ブラウザ・メールなど)間でやりとりするデータの形式、および内容を提供します。

 

Chromeなどのブラウザ、Outlookなどのメールサービスが使えているのはこのアプリケーション層のおかげです。

第6層 プレゼンテーション層

コンピュータ同士のデータ表現形式の違いを補正し、データを正しく表現(プレゼンテーション)する役割があります。

 

この層がもしないと、データを送っている間に文字化けが起こったり、めちゃくちゃな画像や音楽データになってしまう可能性があります。

第5層 セッション層

セッション(通信が始まってから終わるまでの一連の流れ)を管理し、プログラム間の会話の制御を行います。

手紙を例に例えると、AさんがBさんに手紙を送ったときに、Bさんに手紙が届く前にBさんがAさんに手紙を返してしまうと、会話(返信)が成立しませんね。

会話のドッヂボールが始まります。

 

通信においても、通信の順番がおかしくならないように管理、同期を行っているのがセッション層の役割です。

会話のドッヂボールを防ぎ、キャッチボールにするのがセッション層!

第4層 トランスポート層

送信元から送られたデータを確実に送信先に確実に届けられるよう、つまりデータ転送の信頼性を提供するのがトランスポート層の役割です。

第3層 ネットワーク層

送信元のコンピュータから送信先のコンピュータまで、どのルートを経由して通信すればいいかを選択し、実際に選択したルートでデータを運ぶ役目をするのがネットワーク層の役割です。

第2層 データリンク層

ケーブルなどで繋がれている同一ネットワークの間で、正確にデータをやり取りする役割があります。

第1層 物理層

LANケーブルは何を使うか、コネクタはどんな形にするかのように物理的・電気的な規格を決めるのが物理層の役割です。

この層で、ビットで表されたデータを電気的な信号に変換します。

 

3.用語確認

次の章以降でIPアドレスとMACアドレスが出てくるので、簡単にですが説明しておきたいと思います。

(IPアドレスの詳しい説明は次回行いたいと思います。)

(1) IPアドレス

皆さんが住んでいる家の場所には必ず「住所」があります。

ネットワーク世界上にも同じようにコンピュータの場所を表す「住所」があるのです。これがIPアドレスです。

 

IPアドレスは32ビットの数字で表されるのですが、覚えにくいのはもちろんのこと、解読するのも一苦労です。

 

そこで、8ビットずつ区切ってグループにし、グループごとに10進数に直して表します。

f:id:momoyama1192:20200315060852g:plain

4グループの10進数をドット . ごとで区切って表しているのでドットアドレス(DDN)と呼ばれます。

(2) MACアドレス

例えば、「東京から博多」まで出張することを考えます。

このとき、いろんなルートが考えますよね。例えば、

  • 東京→品川→羽田空港→(飛行機)→福岡空港→博多
  • 東京→名古屋→新大阪→岡山→広島→博多
  • 東京→松本→名古屋→大阪→鳥取→松江→下関→博多

のように様々なルートが考えられます。

 

ネットワークの世界でも、IPアドレスで示される目的地までは様々な機器(ルート)を経由します。

そこで、それぞれの機器に48ビットの数字を振って、経由する機器を数字で指定できるようにしたのがMACアドレスです。

 

表記される際は、「32:4f:70:a8:be:02」もしくは「32-4f-70-a8-be-02」のように6組の16進数2桁(8ビット)ずつに分け、コロン「:」かハイフン「-」で区切ります。

 

f:id:momoyama1192:20200315060857g:plain

ちなみに、MACアドレスのうちの最初の24ビットは、機器を製造したメーカー番号(ベンダーID)、残りの24ビットが固有製造番号(メーカーが番号を設定)となっています。

(3) ポート番号

皆さんがパソコンで作業などをする際に複数のソフト(Word、ブラウザ、メールソフトなど)を開くことはよくあると思います。

同じように、ネットワーク上で動いているサービス(アプリケーション / プログラム)は、1台のサーバー内でたくさんあります。

 

そのため、IPアドレスを指定しただけでは、宛先コンピュータはわかってもどのプログラム宛なのがわかりません

宛先を書くときに「組織の住所」を指定しただけでは、その組織の中の誰かがわからないのと同じです。

 

そこで、プログラム側に0~65,535までの範囲で番号を付けることにより、どのアプリケーションかがわかるようにします。この番号のことをポート番号と呼びます。

 

IPアドレス / MACアドレス / ポート番号

IPアドレス
→  コンピュータの住所を32ビットで表したもの

MACアドレス
→ 機器ごとに割り振られた48ビットのアドレス、どの通信機器を経由するかを設定するときなどに使用

ポート番号
→ コンピュータ内で動いているプログラム(サービス)の特定に使われる数字

(4) パケット

ネットワークに一度に流せるデータの量は決まっています。

例えば、1秒間に100MB流せるネットワークに2GBのデータを一気に流すことを考えてみましょう。

 

2GB (2048MB)のデータを1秒100MBずつ流すので、約20秒ほどかかってしまいます。

さらに、100MB流せるネットワークにはこれ以上ネットワークを流すことができないので、20秒の間、誰もネットワークを利用できなくなってしまいます。

 

このように、誰かがデータを流すたびに止まるネットワークなんて誰もつかいたくありませんね。オンラインゲームをしている人は、大容量が流されるたびに嫌な気分になります。

 

そこで、つぎに紹介するTCP/IPでは、通信データを、送受信する際に通信データを小さく分割し、さらに「送信元 / 宛先のIPアドレス」などのヘッダ情報を加えたパケットという形にしてから通信を行います。

 

4.TCP / IP

(1) TCP/IPとは

現在、インターネットで広く使われているのはOSI参照モデルではなく、TCP/IPと呼ばれる階層モデルが標準として使われています。

(TCP/IPプロトコルスイートや、TCP/IPモデルと呼ばれることもあります)

 

まずは、OSI基本参照モデルとTCP / IPの層がどう対応しているのかを、下の表で確認していきましょう。

f:id:momoyama1192:20200314095934g:plain

TCP/IPでは、OSI基本参照モデルにおける5層目以上の部分をすべてアプリケーション層としています。

また、OSI基本参照モデルではネットワーク層と呼ばれていたものがTCP/IPではインターネット層になっていることや、下位2層の部分も、ネットワークインターフェイス層と1つにまとめているのも特徴です*2。 

(2) 代表的なプロトコル

TCP/IPに出てくる代表的なプロトコルとして、TCP・UDP・IPの3つがあります。

 

TCP・UDPはネットワーク層で用いられるプロトコルで、どちらもパケットをどうやって送るかを担当し、IPはネットワークの送信経路の設定を担当しています。

(i) TCP (Transmission Control Protocol)

TCPは、通信相手とコネクションを取りながら、パケットを送受信していきます。

データを確実に届けられる可能性は高い一方、コネクションを取る分だけ時間がかかってしまうのが特徴です。

 

コネクションを行う際に、通信相手と3ステップのやり取りを行うので、コネクションのことを3ウェイハンドシェイクと呼ばれます。

 

3ウェイハンドシェイクを実際の会話っぽくとらえると、

Aさん:「接続するけどいい?」
Bさん:「大丈夫よ! こっちから接続するけどいい?」
Aさん:「おけまる!」

みたいな感じです。

通信相手とパケットのキャッチボールをするのがTCPです。

 

[ちょっとTCPの難しいお話・資格試験対策では無視してOK]

なお、ネットワーク世界のでは「大丈夫 / OK」のような応答のことをACKと呼びます。ACKnowledgementの略です。

ただし、ただ「大丈夫 / OK」と言っただけでは、何が大丈夫なのかがよくわかりません。

そこで、ACKに番号(ACK番号)を付けることで、どこまでが大丈夫なのかをわかるようにしています。

 

なお、接続のときだけでなく、パケットを送受信する際にも逐一やり取りを行いながら通信を行います。

 

しかし、送受信の際にいちいちやり取りしてたら時間がすごいかかってしまいます。そのため、実際にはある程度連続したパケットを送受信していきます。

一度に連続して送るパケット量はウィンドウサイズと呼ばれ、

  • 広告ウィンドウ(advertised window)
    (相手のキャパシティ / 処理能力)
  • 輻輳(ふくそう)ウィンドウ(congestion window)
    (ネットワークの混雑具合)

の2つのうちの小さい方*3になります*4

[送信に失敗したとき]

もし、相手側にうまくパケットが送れてなさそうなとき、具体的には

  • タイムアウト(パケットを送ったのに返信がかえってこない)
    [一定時間以内に返信が来ない場合、タイムアウトが発生。]
  • 重複ACK(相手が「全く同じACK」を3回以上繰り返す)
    [同じACK番号が3回続いた場合、重複ACKが発生]

が発生したときは、改めてうまくパケットが送れなかった部分だけをもう1度送信します。

パケットにわけてるからこそできる技です。
(もしわけていなければ、失敗した時点で最初から通信がやり直しになる)

 

(ii) UDP (User Datagram Protocol)

UDPでは、通信相手とコネクションを取らずに、ひたすらパケットを送信していきます。

いちいちデータが届いたかどうかなんて気にしないので、リアルタイムにデータを送ることができます。当然ながら、パケットを正しく届けられない可能性も出てきます。

 

実際の会話に例えると、

Aさん「ほら、ご飯!!」
----------------------------
Bさん「今から帰る!」

みたいな感じです。

 

通信相手とパケットのドッヂボールをするのがUDPです。

 

TCP・UDPの違い

TCP(キャッチボール)
→ 通信相手とコネクションを取りながらデータを送信
→ 正しくデータを送受信できる信頼性は高い一方、速度は遅め

UDP(ドッヂボール)
→ 通信相手を気にせず、リアルタイムにデータを送信
→ リアルタイム性があり、速度も早いが、正しくデータを送受信できるとは限らない

 

(iii) IP (Internet Protocol)

ネットワークから(IPアドレスで示された)別のネットワークへとパケットを運ぶのがIPの役割です。

(3) TCP / UDPを使う代表的なサービス

ネットワーク上で動いている様々なプロトコルを見ていきましょう。

それぞれのプロトコルがTCP、UDPのどちらを使うか、ポート番号はなにが使われるかを下の表に示しています。

f:id:momoyama1192:20200314095938g:plain

 なお、代表的なプロトコルにはあらかじめポート番号が予約されており、ウェルノウンポートと呼ばれます(ポート番号:0~1,023)。

5.いろんなネットワークの装置とOSI基本参照モデル

代表的なネットワークの装置

ネットワークの世界では、通信を行うために様々な装置が利用されています。

具体的にどんな装置がどの層で役に立っているのかをまず見ていきましょう。

f:id:momoyama1192:20200314095946g:plain

(1) 物理層

(i) NIC [Network Interface Card] (LANカード)

コンピュータをネットワークに接続するために必要な拡張カードNIC (LANカード)と呼びます。

NICを使うことで、データ(ビット)を電気的な信号に変換することができます。

(ii) LANケーブル

NICで変換した電気的信号を、他の機器につなぐために必要な物理的ケーブルです。

(iii) リピータ

LANケーブルの長さには限界があり(総延長距離)、限界距離を超えてしまうと信号が弱くなってしまい、まともに通信することができません。

そこで、リピータを間に挟むことで、弱くなった信号を増幅させ、より長い距離の通信ができるようになります。

 

また、リピータを複数にまとめたリピータハブというものもあります。

(2) データリンク層(ブリッジ)

第2層のデータリンク層を中継機能を提供するのがブリッジです。

セグメント*5間の中継役となります。

 

流れてくるMACアドレス情報を確認し、必要であれば(その先に目的のMACアドレス情報となる装置があれば)パケットを流す役割を持っています。

f:id:momoyama1192:20200314205721g:plain

また、ブリッジを複数にまとめたスイッチングハブ(レイヤ2スイッチ)というものもあります。

ハブはハブでも、リピータハブとスイッチングハブでは役割が異なるので注意しましょう。

(3) ネットワーク層(ルータ)

第3層のネットワーク層(TCP/IPだとインターネット層)の中継機能を提供するのがルータです。家に置いている人も多いのではないでしょうか。

異なるネットワーク間の中継役となります。

f:id:momoyama1192:20200314205725g:plain

※インターネットと書いてありますが、組織内でのみ構築されたネットワーク環境(イントラネット)でもルータは使用されます。

 

ルータは、パケットに書かれている宛先IPアドレス(手紙でいう住所)を確認し、目的のルータまでパケットを送る働きをします。

 

ですが、インターネットのような膨大な数のネットワークが接続されている場合、目的のネットワークまでルーターを何台も経由する必要があったりします。

そのような場合でも、ルーターには経路表(ルーティングテーブル)を用いて、最適な経路を選択(経路選択・ルーティング)し、中継されます。

(4) ゲートウェイ

第4層以上(TCP/IPだとアプリケーション層)において、プロトコル変換をすることによって、異なるプロトコル間でも通信を行えるようにするのがゲートウェイです。

 

 

各層で使われる周辺機器

物理層 → リピータ・NIC・LANケーブル
(伝送できる距離を延長する)

データリンク層 → ブリッジ
(MACアドレスで中継先をチェック)

ネットワーク層 → ルータ
(IPアドレスで中継先をチェック)

トランスポート層以上 → ゲートウェイ
(異なるプロトコル間での通信を可能にする)

 

6.練習問題

では、基本情報の問題で5問ほど練習しましょう。

練習1

OSI基本参照モデルにおいて,エンドシステム間のデータ伝送の中継と経路制御の機能をもつ層はどれか。

[基本情報平成24年秋期 問34]

ア:セッション層
イ:データリンク層
ウ:トランスポート層
エ:ネットワーク層

解答1

解答:エ

[他の選択肢]

ア:ユーザーのセッション開始~終了までの対話を行う
イ:同一ネットワーク内で正しく通信が行えるようにする
ウ:データが正しく転送できるように信頼性の確保を行う

練習2

複数のLAN同士を,ネットワーク層で相互に接続するのに使用する装置はどれか。

[基本情報平成21年春期 問37]

ア:ハブ
イ:ブリッジ
ウ:リピータ
エ:ルータ

解答2

解答:エ

[他の選択肢]

ア:ハブは物理層、スイッチングハブはデータリンク層で使う機器
イ:データリンク層で使う機器
ウ:物理層で使う機器

練習3

トランスポート層のプロトコルであり,信頼性よりもリアルタイム性が重視される場合に用いられるものはどれか。

ア:HTTP
イ:IP
ウ:TCP
エ:UDP

解答3

解答:エ

トランスポート層のプロトコルはTCPとUDPの2つがある。

TCPとUDPの違いとしては、

TCP:信頼性を重視した通信
UDP:リアルタイム性を重視した通信

が挙げられる。よって答えはエとなる。

[その他の選択肢]

ア:HTTPはアプリケーション層のプロトコル
イ:IPはネットワーク層のプロトコル

練習4

TCP/IP環境において,タイムサーバの時刻を基に複数のコンピュータの時刻を同期させるプロトコルはどれか。

[基本情報平成22年春期 問37]

ア:FTP
イ:NNTP
ウ:NTP
エ:RTP

解答4

解答:ウ

タイムサーバーの時刻から時刻を同期させるプロトコルはNTP(Network Time Protocol)なので、答えはイとなる。

(ちなみにNTPはUDPを用いて通信している珍しいプロトコルです。)

練習5

TCP/IPネットワークで利用されるプロトコルのうち,ホストにリモートログインし,遠隔操作ができる仮想端末機能を提供するものはどれか。

[基本情報平成23年特別 問41]

 

ア:FTP
イ:HTTP
ウ:SMTP
エ:Telnet

解答5

解答:エ

ア:ファイル転送のときに使うプロトコル。
イ:WebブラウザでHTMLで記述された文書を見るときに使うプロトコル。
ウ:利用者がメールを送信するとき、メールサーバー間での送受信時に使うプロトコル。

7.さいごに

今回は、ネットワーク分野における、

  • プロトコルとはなに?
  • プロトコルの代表例
  • OSI参照モデル
  • TCP/IP
  • 様々な周辺機器と層の対応

についてまとめていきました。

次回は、IPアドレスやMACアドレスについて少し詳しく説明したいと思います。

*1:極端な例ですが、切手もはらず、宛名も書かなかったらいくら「届け!」と思っていても届きません。

*2:なお、下位2層(データリンク層と物理層)部分は場合によってはまとめず、データリンク層、物理層とバラバラに取り扱っている参考書もある。

*3:どんなに相手がキャパシティがあって速度が出せても、ネットワークが混雑していれば速度は出せません。もちろんどんなにネットワークが空いていようが相手のキャパシティがなかったら速度を出しても無駄です。

*4:広告ウィンドウを決定することをフロー制御、輻輳ウィンドウを決定することを輻輳制御と呼びます。

*5:論理的に1本のケーブルがつながっている範囲のことをセグメントと呼びます。なお、リピータは、ただ単純に信号を増幅するだけなので、リピーターが入ったからと言ってセグメントは分離されません。

あなたへのおすすめ