Chapter01 OSI参照モデルとは_"インターネット"

筆者が大学の講義で手に入れた情報をクラウド上(note上)に残すために書いています。講義ノートに近いものです。せっかくインプットしたので、アウトプットしときたいという目的も含まれています。

その道のプロではありません。誤情報が含まれていたり、厳密さに欠けている可能性があります。


Chapter0からの続きものです。0を見なくてもいいですが、完全にIT系の初学者の人は見といた方がわかりやすいかもしれません。

OSI参照モデルの概念に入るのはもうちょっと下の方からになるので、最初の概念の説明で挫折しないで頑張ってください。



インターネットとは

インターネットとは地球規模のネットワークのことである。

まだなんのことやら意味がわからないので順を追って説明する。

コンピューターネットワーク
複数のコンピューターを接続する技術全般のこと

インターネットを理解するには、まず小さいネットワークから理解していく必要がある。コンピューター同士の通信全体を表す言葉として、コンピューターネットワークという言葉がある。

すごい近い距離にパソコンやスマホなどのコンピューターが二台あることを考えてみる。これら同士でなんらかの通信をするときはなんとなく感がつくのは、2台を直接ケーブル繋いだらいけるのかなってかんじだと思う。

次に、会社内の、学校内のコンピューター同士を通信させたいときはどうするか。学校に100台ぐらいコンピューターがあったとして100台全部から100本の線が伸びてて、それぞれにコンピューターに繋がってるみたいなバカみたいな状況は見たことないと思う。このぐらいの規模感のネットワークをLAN(Local Area Network)と呼ぶ。

次に、大阪の会社から宮城の会社へ、青森の学校から鳥取の学校へのようにさらにLANとLAN同士のつながりのネットワークをWAN(Wide Area Network)と呼ぶ。

もっと規模感を大きくしていく。全世界同士をつなぐようなネットワーク。kれをインターネットと呼ぶ。つまり、小規模なネットワークを相互接続し、構築される大規模ネットワークのことを言う。コンピューターネットワークの一つ。

インターネットの仕組み(軽く簡単に)

分散型ネットワークとよばれている。
LANが世の中にたくさんあります。これらのネットワークを通って、特定の送信者の情報が、特定の受信者まで情報を届けない方といけません。
ノード(node)と呼ばれる、コンピューターネットワークにおいて、送信者、中継点、分岐点、宛先などのネットワークの節目があります。

インターネットは、
送信元ノードから宛先ノードまで、いくつものノードを運動会みたいにリレーしてデータを伝送するネットワーク方式が使われています。

画像1

つまり、一番下にいる緑の服の人から、一番上にいるおばあちゃんにまでインターネットを使って情報をやりとりするには、たくさんのノードを通って届けなければいけないということです。ここでは深く考えず、イメージでいいです。


インターネットの歴史

歴史についてはあんまり詳しく触れていないので、良さげなリンクを貼っておく。ざっくり話すと1958年にARPAという米国防衛省に高等研究計画局という局が発足された。つまり最初は軍事利用からの発展である。


インターネットの特徴

特徴は3つあるみたい

・デジタルデータの通信
・ベストエフォート
・パケット

一個一個説明していく。

ディジタルデータとアナログデータ

アナログデータ(analog)
連続的に表現されたデータ
人間が作成するマルチメディア
ディジタルデータ(digital)
離散的に表現されたデータ
1,0で表現
コンピュータの処理で使用
インターネット配信も可能

簡単に言うとこんな感じ。
アナログデータではなく、ディジタルデータを使って通信される
音声とかも実際にはアナログではなく、限りなく近似されているデータだということだ。

よくわからなくても、あんまり気にしなくてもいいかもしれない。


とにかくデジタルデータ、1 0で表現されているんだなとわかればいい


ベストエフォート(best effort)

最大限努力するが、多くのデータが送られた場合、
データが相手まで確実に届けられる保証をしないこと

インターネットはベストエフォート = 最大限頑張る
ような仕組みだということだ。確実性を保証しない。

ベストエフォートではない例としては、

電話
相手に確実に声が届いていることを保証
手紙
郵便局が郵送を保証


パケット(packet)

ネットワークにおいて、送信元ノードから宛先ノードに送るひとかたまりのデータのこと

パケットとは後のOSI参照モデルでも出てくるワードである。

パケットの中身
・送信元アドレス
・宛先アドレス
・データの長さ
・内容
パケットの分割
・送りたいデータサイズが大きい場合、分けて送ることもできる

※送信データのかたまりを状況により、「フレーム」、「セグメント」、「メッセージ」と呼ぶこともある

なんのことだかこの段階ではよくわからないと思う。

私もわからなかった。
後々のnoteでも、詳細については説明されるので心配しなくていい
初学者はとりあえず「ふーん」と言って次に進もう

回線交換
・電話のように回線を切り替えて接続する方式
・送信元ノードから宛先ノードの経路を確保してからデータを送信
パケット交換
・パケットに分割し、送信元ノードから宛先ノードに届ける方式
・複数経路の中から分岐点ごとにパケットの宛先を見て経路を決定
・状況に応じて最適な経路を動的に変更

「ふーん」


プロトコル(protocol)

ここは覚えておくと、この先の話が分かりやすい。

プロトコルとは(コンピューターネットワークの場合)、
ノード間でデータを送受信するためのルール

簡単に言うとルールということである。
この先に色んなルールが出てくる。そのことをプロトコルというそれだけ。

イメージの例としてあげると
・のろしによる襲撃伝達
・信号機による交通ルール

こんなのもプロトコルと言えるだろう


プロトコルの種類

ネットワークにおいて、プロトコルによってどう言うことが変わってくるのか。

・どんなケーブルを使うのか?
・同じLANに接続されたPCにどのようにデータを届けるのか?
・世界のどこか(異なるLAN)にいるPCにどのようにデータを届けるか?
・他のPCとどのように「会話」をするのか?
・文字形式はどうするのか?

ざっとサービスとプロトコルも載せてみる

FTP
(File Transfer Protocol)
ファイルを転送
ssh
(secure shell)
安全にターミナルを実行
SMTP
(Simple Mail Transfer Protocol)
メールの送信
DNS
(Domain Name Service)
「ドメイン名 ⇔IPアドレス」 の変換
HTTP
(Hypertext Transfer Protocol)
HTMLの転送
POP3
(Post Office Protocol version 3)
IMAP3
(Interactive Mail Access Protocol version 3)
メールの受信
HTTPS
(HTTP Secure)
暗号技術を用いたHTTP

何かしら聞いたことあるものも混じっていたかもしれないと思う。
言いたいことは、プロトコルという共通のルールというものが決まっているよと言うこと。

じゃあ、誰が決めているのか?

IFTF(Internet Engineering Task Force)
インターネット関連のプロトコルの多くを決めている団体
標準化されたプロトコルにはRFC番号というものがつけられている


階層構造

上記でも説明したが、インターネット上にはいくつもの機器を介して、世界中のノードとつながっている。

じゃああなたが、今noteを読んでいるように、どのようにあなたの機器(LAN)からnoteのサービスを行なっている機器(LAN)につなげられているのだろうか

3つのポイントで気になってくる

1 : データを送る先をどのように特定するのか?
2 : LAN内でPCをどのように特定するのか?
3 : データを受け取るべきアプリをどのように特定するのか?

1は、あなたがtwitterでtweetしようとするとき「twitter社のサーバーはここにあるからこのルートを通って...」なんて考えたことはないと思う。つまり、気にしなくてもtweetできるようにどの機器(LAN)につながっているのか特定できているということ。

2は、1をクリアして、特定のLANまで特定することができたとする。
だが、あなたの家の中のWi-Fiのようなものを想像してほしい。
そのWi-Fiにつながっている機器は一つだろうか?おそらくそんなことはないと思う。PC,スマホ,PS4,Switch,DS,スマートスピーカー......いっぱい繋がっている。どのように情報をLAN内の特定の機器に転送しているのか。

3は、1と2をクリアしてあなたのスマホまで特定できて情報が届いたとする。じゃあ、次はどのアプリ(プロセス)宛てなのだろうか?
LINE,Twitter,Chrome,Facebook,note,.......いっぱい動いている。
どのようにデータを受け取るべきアプリを特定できるのか

インターネットでは
以上の仕組みをそれぞれ独立に検討する
階層構造を作って考える

階層の考え方を採用することで、

送信元ノードから宛先ノードへの実際のデータのやりとりの際、どんな手段でどんなルートで送られたかなどを意識しなくてよくなる。


OSI参照モデルとは

OSI参照モデルの定義

レベルごとに階層化したプロトコルを作成し、世界共通で利用できるようにする。

簡単に言うと、インターネットを実現するために色んな問題がある。これをレイヤー(階層)ごとに分けて、個別に考えることができるような仕組みを作ろうよ!という一つのモデルのことである。

メリットとしては、通信を行うごとに毎回伝送経路から文字形式まで一から考えなくてもよくなる。


実際にOSI参照モデルには7つの階層がある。見てみよう

7 : アプリケーション層
ユーザーに特定のサービスを提供できるようにする

6 : プレゼンテーション層
データ形式を統一できるようにする

5 : セッション層
双方向に通信できるようにする

4 : トランスポート層
どのプログラムに届いたデータかを仕分けできるようにする

3 : ネットワーク層
地元エリアを連携して、全世界でのデータ通信を実現する

2 : データリンク層
地元エリア内でデータ通信を実現できるようにする

1 : 物理層(フィジカル層)
電気信号、電波、光を利用して、0 1を伝送できるようにする

上から順に番号が小さくなっているのがわかると思う。

photoshop(画像処理ソフト)のような物を使ったことがある人は分かりやすいと思うが、1 ~ 7まで下から順に上に重なっていってるイメージを立てると分かりやすい。ケーキのスポンジみたいな

上位の層になればなるほどユーザーレベルに近づいていく感覚。下位になればなるほど根本的な仕組みである。

スクリーンショット 2020-02-03 17.26.52

1 : 物理層と7 : アプリケーション層を除く、各層のデータにはヘッダペイロードと呼ばれるものがある。

ヘッダとは
送るべきデータの付加情報が入ってる部分と考えていい。
例えば、送信元ノードのアドレスや宛先ノードのアドレスなど

ペイロードとは
データ本体のことを表す

なぜ先ほど重なっているイメージと言ったかというと、
例えば、
データリンク層にとってのヘッダは上の画像でいう「ヘッダ3」で、ペイロードは「ヘッダ2 + ヘッダ1 + 本体」である。
データリンク層のペイロードの中の「ヘッダ2」はネットワーク層のヘッダであり、「ヘッダ1 + 本体」はネットワーク層のペイロードに当たる。

こんな感じで上位レイヤーが重なっている感じなのだ。

プロトコルアナライザ

送られているヘッダ・ペイロードを確認できるものがある。

Wiresharkというソフトウェアだ。

実際の通信の内容を監視することができて、実際のOSI参照モデルに従っているヘッダやペイロードの中身や物理層の「0」「1」のデータをみることができます。

Wireshark使い方について



Chapter2はWebの仕組みについて一度説明します





この記事が気に入ったらサポートをしてみませんか?