Chapter06 OSI参照モデルとは_"前編ネットワーク層"

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

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


今回から3本は、ネットワーク層の話です。

前回はデータリンク層の話でした


OSI参照モデル振り返り


7 : アプリケーション層
ユーザーに特定のサービスを提供できるようにする
6 : プレゼンテーション層
データ形式を統一できるようにする
5 : セッション層
双方向に通信できるようにする
4 : トランスポート層
どのプログラムに届いたデータかを仕分けできるようにする
3 : ネットワーク層
地元エリアを連携して、全世界でのデータ通信を実現する
2 : データリンク層
地元エリア内でデータ通信を実現できるようにする
1 : 物理層(フィジカル層)
電気信号、電波、光を利用して、0 1を伝送できるようにする

OSI参照モデルの定義

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

こんな内容でした。

Chapter01でOSI参照モデルの定義については話しているのでぜひ参照して戻ってきてください

今回からはネットワーク層に入ります

ネットワーク層について

異なるLAN間の通信方法を決める
一度に遅れるデータ量が違うネットワーク間でもデータのやりとりをできるようにする
パケット分割による方法

こうすることで、
世界の何処かにある特定のPCと通信ができるようになる

データリンク層では同じLAN間の話でしたが、ネットワーク層からは、異なるLAN間、つまり全世界と通信を行う方法を決めていきます。


ネットワーク構成

 

スクリーンショット 2020-02-04 13.18.17

インターネットは送信元ノードから宛先ノードまで、
いくつものノードをリレーしてデータを伝送するネットワーク

ポイントは、直接ノード同士が結ばれている訳ではなくて、
間にいくつものノードが挟まっているということです。

インターネットの発想自体が、元々郵便システムから模倣されたものらしい(嘘かもしれない。歴史をあまり詳しくありません)ので郵便システムで説明していきます

郵便局のシステムを考えてみる

私(東京)がハガキを書いて、あなた(熊本)に送りたいとします。

1 : 私はポストにハガキを投函
2 : 郵便局(東京)はハガキの住所を見て、あなたの宛先の最寄りの郵便局(熊本)にそれを配送
3 : 郵便局員(熊本)がハガキをあなたに送る

このようにリレーしてってハガキが届きます。

決して、ハガキを最初に受け取った郵便局員があなたの元まで運びに行く訳ではありません。

担当範囲を分けて、ちょっとずつリレーして運んでいきます

これを思い浮かべながらネットワーク層を理解していくと分かりやすいです。

ネットワーク層の役割
複数のノードを経由しつつ、送信ノードから最終目的地の宛先ノードまで、パケットを送信する

そのためのルールが

IP : Internet Protocol : インターネットプロトコル


コマンドプロンプト(Windows)やターミナルを使って
pingコマンドを打つと実際に宛先ホストにパケットがとどけられるかどうかを確認できます

ping google.com


IPアドレス

パケットの送信元と最終目的地を表すために使うアドレス

前回のデータリンク層ではMACアドレスについて説明しました

MACアドレスは今回も使います。

 MACアドレス
次に送るべき目的地を表すために使う


MACアドレスとの関係

MACアドレス
ネットワークのハードウェアに割り当てられた1つしかないノード固有のアドレス
他のネットワークに接続しても変更されない
IPアドレス
「ネットワーク固有の番号 + 機器固有の番号」
他のネットワークに接続した際には異なったIPアドレスが割り当てられる

スクリーンショット 2020-02-04 13.49.23

ネットワーク層はこの辺から初学者にとってこんがらがってきます。

「ふーん」と言いながらよくわからないが先に進むと用語の説明が増えてきて、また最終的にここに戻ると意味がわかってきます。

詳細は省いてとりあえず、最終的な流れを見ていきます

IPアドレス192.168.10.15からIPアドレス210.149.188.66にデータを送りたい状況を想定します

前者が左側にあるPCみたいなやつです。
後者が右側にあるPCみたいなやつです。

スクリーンショット 2020-02-04 13.54.55

前者のPCから1台目のルータへ送信

スクリーンショット 2020-02-04 13.56.35

1台目のルータから2台目のルータへ送信

スクリーンショット 2020-02-04 13.57.27

2台目のルータから後者のPCへ送信

IPアドレスの意味は後にまた説明します、
なのでまだ意味がわからなくても大丈夫です。

私もこの時点では訳がわかりませんでした

とりあえず今わかって欲しいことは

IPパケット(パケットについてはあとで説明)を複数の端末でリレーする
直接のやりとりはMACアドレスを基に行う

これの何となくのイメージがつかめればいいです。

よくみるとIPと書いてあるところはずっと変わっていなくて、
MACと書かれているイーサネットフレームのところだけ次々と変わっています

コマンドプロンプト(Windows)やターミナルを使って
ipconfigコマンドを打つと実際にIPアドレスを調べることができます​

ipconfig


ARP

Address Resolution Protocol

世界中のどこかにあるコンピュータと通信するとき、
IPアドレスMACアドレスどちらも必要

スクリーンショット 2020-02-05 0.55.04

見かけ上は片方のアドレスのみで通信できた方が便利

仕組み上はどちらも使うことは構わないが、
我々が気にすることを1つの方が便利

通常、受信者のIPアドレスは分かるが、
MACアドレスはわからないもの

ARP(Address Resolution Protocol)とは

IPアドレスからMACアドレスを知るための仕組み

ex :
IPアドレス : 192.168.10.15 → ARP → MACアドレス : 88:88:88:00:00:01

ARPの仕組みの話の前に、わかりやすいようにブロードキャストの説明をしておきます

わかりやすいブロードキャストの説明のリンクも貼っておきます。

https://wa3.i-3-i.info/word17.html

ブロードキャストとは
同じネットワークにいる全員に対して同じ内容を送りつけることであ

ネットワークという言葉がすでに何回かでてきていますが、詳しいことは中編か後編で説明します。今はなんとなくでいいです。
簡単にだけ説明しますと、同じルータの配下にいるやつらは同じネットワークだと感覚的に感じてください。
(同じネットワーク番号が振られているやつらに送るという意味です)

つまり、ブロードキャストとは

同じルータの配下にいるやつ全員に対して同じ内容を送りつけること

です。

ついでにブロードキャストアドレスという言葉も確認しておきます。

わかりやすいリンクも貼っておきます。
https://wa3.i-3-i.info/word1777.html

ブロードキャストアドレスとは
ブロードキャストしたいと思ったときに、そのブロードキャストアドレス(IPアドレスとかMACアドレス)を使うと、ブロードキャストできるアドレスのことです。

とりあえず、このくらいにして次に進みます。

※ブロードキャストアドレスの中にも、リミテッドブロードキャストアドレス・ディレクテッドブロードキャストアドレスの2つがあるようです。

ARPの動作手順

ex : ホストA(192.168.10.15)がホストCにデータを送る場合を考える

スクリーンショット 2020-02-05 1.24.47

1 : ホストAは、ホストCのMACアドレスを得るため、ARPリクエストパケットをブロードキャストする

スクリーンショット 2020-02-05 1.58.18

またよくわからない言葉が出ました。

ARPリクエストパケット

ホストA(192.168.10.15、aa:aa:aa:aa:aa:aa)が
ホストC(192.168.10.7)のMACアドレスを知りたいとき

スクリーンショット 2020-02-05 1.59.28

ARPリクエストパケットを送るときのイーサネットフレーム(データリンク層)の受信者MACアドレスを見てみると、ff:ff:ff:ff:ff:ffにしてあります。
10進数に直すと、255:255:255:255:255:255になります。
2進数に直すと、11111111:11111111:11111111:11111111:11111111:11111111になります。

このように二進数に直したときに、全部のビット列が1になるようなものが
先ほど説明したブロードキャストアドレスとなります。
(MACアドレスのブロードキャスト)

このブロードキャストアドレスにすると全員に届きます。そういうルールになって作られています

ARPパケットと呼ばれる中身には(下段)、同じように受信者MACがあります。
ここは、とりあえず00:00:00:00:00:00を入れときます

2 : ハブは、以下の動作を行う
・ポート1からのパケットを受信
・ポート1以外のポート全てにリクエストパケットを送出
(受信者MACがブロードキャストアドレスだから)

スクリーンショット 2020-02-05 2.12.07

3 : ホストBCDはリクエストパケットを受信
受信パケット内の受信者IPアドレス192.168.10.17と自身のIPアドレスが一致しているかを確認する。
ホストB,Dはリクエストパケットを破棄

スクリーンショット 2020-02-05 2.14.25

4 : 受信者のIPアドレスが一致するホストCは、ARPレスポンスパケットをホストA当てに返送

スクリーンショット 2020-02-05 2.15.56

ARPレスポンスパケット
ホストC(192.168.10.7)がホストA(192.168.10.15 aa:aa:aa:aa:aa:aa)に
MACアドレスcc:cc:cc:cc:cc:ccを知らせる

スクリーンショット 2020-02-05 2.18.17

5 : (スイッチング)ハブは、以下の動作を行う
・Cからレスポンスパケットを受信
・MACアドレステーブルにあるホストAがどのポートにあるか調べる
・ポート1にパケットを送出

スクリーンショット 2020-02-05 2.20.20

6 : レスポンスパケットを受け取ったホストAは、
ホストCのIPアドレスとMACアドレスの対応を
「ARPキャッシュ」に保存

スクリーンショット 2020-02-05 2.21.42

次回以降、ホストAがホストCにデータを送るときは、
ARPキャッシュからMACアドレスを直接調べる

スクリーンショット 2020-02-05 2.22.55

ARPキャッシュは、一定時間が経過すると削除される
(ネットワーク状況が常に変化するから、ずっと記憶しとくとだめ)

AEPリクエストはブロードキャストとして送信される

範囲 : 同じネットワーク上のホストに限られる
リクエストパケットはルータを通過しない

ARPリクエストが届く範囲を、ブロードキャストドメインという

コマンドプロンプト(Windows)やターミナルを使って
ARPを利用するためのコマンドというものがあります。
arp -aでMACアドレステーブルを確認できます。

arp -a


IPの役割

出発地から目的地まで適切にパケットを送るためのルートを決定し、届くようにすること。
ベストエフォートなので、確実に届く保証はない
(TCPなどのトランスポート層のプロトコルとともに用いる必要がある)

traceroute / tracertコマンド

特定のIPアドレスまでの経路を探索してくれるコマンド(ICMP)

tracert google.com



今回はここまでとして、次回に続きます

一回で理解はできないと思います。全体を何となくスッと見ていきもう一度戻ってくると全体の構造が理解できてより理解ができると思います

次回は現状まだまだ謎のIPアドレスとパケットについて入っていきます



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