Chapter07 OSI参照モデルとは_"中編ネットワーク層"
筆者が大学の講義で手に入れた情報をクラウド上(note上)に残すために書いています。講義ノートに近いものです。せっかくインプットしたので、アウトプットしときたいという目的も含まれています。
その道のプロではありません。誤情報が含まれていたり、厳密さに欠けている可能性があります。
今回はネットワーク層の中編です。
前編を見ていない人は是非。
ネットワーク層の目的
もう一度振り返っておきます。
世界にあるコンピュータ一1台1台を識別する
データ(パケット)を届けたいノードへのルートを適切に決める
データを届けたいコンピュータがいるLANはどこにあるのかを探索
IPパケット
パケットと呼ばれるものについて全編ではあまり触れられていないのでここに入っていきます。
何度か出てきているこれをもう一度見てみましょう。
まず、パケットとは
ネットワーク層で扱われるデータの事だと思ってください。
データリンク層で扱われるデータは「フレーム」と呼ばれていました。
データリンク層でのフレームと同じく、パケットもヘッダとペイロードという2種類で考えることができます。
フレームとパケットの関係
フレーム ⊃ パケット
という包含関係があります。
「パケット」に上記の画像で言えば、ヘッダ3「フレームのヘッダ」が追加されたものが「フレーム」です。
フレームの時に言われていたペイロードとは「パケットや上位層のヘッダやデータのこと」ということです。
wiresharkで実際に通信の中身を見てみるとわかると、関係性が見えやすくなってくると思います。
IPヘッダ(IPv4)
なんとなく、データの構造が分かってきたと思われます。
では、IPヘッダに入っていきたいと思います。
IPパケットにはIPv4とIPv6という二つのバージョンが存在します。
まずはIPv4というバージョンのヘッダから見ていきましょう。
相手にパケットを届けるために必要な情報が入ってる箇所で、
長さが160bit ~ 480bit分の長さがあります。
バージョン(1~4bit)
IPのバージョンを表す。今回の場合は、IPv4を表す「4(0100)」
ヘッダ長(5~8bit)
IPヘッダの長さ
DS(9~16bit)
事情がやや複雑。詳細までは省略。
ここのbitの部分に関しては色々複雑のようです。
何が複雑なのかというと、まず3度内容が変更されている歴史があるみたいです。その時に呼び名も変わっているみたいで、googleで「IPパケット DS」検索すると一番上に出てくるwikipediaのタイトルにDSという素直に検索結果が表示されなくて不安になります。
サービスタイプ (Type of Service) フィールド
DS(Differentiated Services) フィールド
ToS フィールド
DSCP(Differentiated Services Code Point)
なんかいろんな呼ばれ方で説明されているみたいです。
9~16bitの中でも、初めの3bitは優先区分 (Precedence) フィールドと呼ばれたり、調べると色々でてきます。
とりあえず、内容的にはどうやら
IPパケットに優先度を付加するために使用されているみたいです。
※もとはTOS(Type of Service)
RFC2474でIPv6のTrafffic Classと一緒にDSフィールドとして再定義された。
優先度を示す6bitのDSCP(残り2bitは未使用)を格納。
QoS((通信)品質保証)のためフィールドとなった。
こちらに詳細が書いてあったので載せておきます。
パケット長(17~32bit)
「ヘッダ+データ」の長さを表す
(最大 : 65,535Byte)
識別子(33~48bit)
データを分割した場合の、その分割すべてに共通する名前
フラグ(49~51bit)
パケットの分割に関する情報
49bit目 0
50bit目 分割許可 → 0 , 禁止 → 1
51bit目 最後の分割 → 0 , 途中 → 1
フラグメントオフセット(52~64bit)
データを分割した場合、何番目の分割かを表す
例 : 最大1500Byte送信可能な状況で2300Byteのデータを送る場合
データを分割して送信する
生存時間(TTL)(65~72bit)
通過できるルータの個数を表す
ルータを通過するたびに1ずつ減らされる。
0になったらパケットは破棄される
プロトコル(73~80bit)
上位層のプロトコルを表す
ICMP ⇒ 1(00000001)
TCP ⇒ 6(00000110)
UDP ⇒ 17(00010001)
ヘッダチェックサム(81~91bit)
IPヘッダの誤り検知符号
ネットワーク構成
ネットワーク層の前編でもネットワークという言葉が出てきました。
ネットワークとは同じLANの配下にある範囲だと考えてもいいのかもしれません。
この後説明するIPアドレスというものがこのネットワーク事に変わってきます。
同じルータ(Wi-Fi)につながっている、iPhoneやiPad,PC等でIPアドレスを確認してみてください。
iPhoneの場合、設定からWi-Fi、現在接続中のアクセスポイントのiマークを押してみましょう。
そうするとIPアドレスという項目の番号が見えます。
前半の方の番号が、同じになっているのが分かると思います。
IPv4アドレス
STD5,RFC791(Internet Protocol)でInternetプロトコルとして定められている32bitのアドレス。
通常はドットで区切られて、10進数で表されている。[RFC1392]
このIPアドレスというものを使って、TCP/IPというプロトコルを利用した通信では、世界中にあるコンピュータを識別する。
そのためには、重複しないようにIPアドレスを割り当てる必要がある。
実際には、IPアドレスは32bitのbit列(32個の0と1で表される)
192.168.10.5
(人間向けの書き方)
これらを8bitの二進数で表す
11000000.10101000.00001010.00000101
ドットを外す
11000000101010000000101000000101
(端末内での表現)
ネットワーク部とホスト部
32bitのIPアドレスは、2分割して使われる
2分割した
左側がネットワーク部
ネットワークごとに固有の値
右側がホスト部
ネットワーク内のホストごとの固有の値
同一のネットワークに接続されているノードのネットワーク部は全て同一である。
さきほど、iPhoneやPCのIPアドレスを確認してもらった人は、前半の方が一緒の数字だったと思うが、そこが今使っているルータのネットワーク部なのだ。
ネットワーク部とホスト部の区切りは可変
状況に応じて変わる
例 : 左から24bitがネットワーク部、右から8bitがホスト部
IPアドレス
192.168.10.5/24
/24の部分は、ネットワーク部のbit数を表す
192.168.10.5
11000000.10101000.00001010.00000101
太字になっている部分がネットワーク部
それ以外がホスト部ということだ
IPアドレスの割り当て
つまり、同じネットワークに接続されているホスト(iPhone,PC....)たちには、同じネットワーク部が使われていて、ホスト部は接続した順番等で1から順にどんどん割り振られていく
端末に割り当てできないIPアドレスがある
ネットワークアドレス
ネットワーク(LAN)自体を表すアドレス
ホスト部のbitを全て「0」にしたもの
ブロードキャストアドレス
同じネットワークアドレスに接続された
全てのホストにパケットを送信するときのアドレス
ホスト部のbitを全て「1」にしたもの
ブロードキャストアドレスについては少し、前編でも紹介した。
例 : IPアドレス 192.168.10.5/24 (先頭の24bitがネットワーク部)
二進数に変換したものは、
11000000.10101000.00001010.00000101
ネットワークアドレスは、(ホスト部全て0)
11000000.10101000.00001010.00000000
192.168.10.0
ブロードキャストアドレスは、(ホスト部全て1)
11000000.10101000.00001010.11111111
192.168.10.255
例 : IPアドレス 192.168.30.84/26 (先頭の26bitがネットワーク部)
二進数に変換したものは、
11000000.10101000.00011110.01010100
ネットワークアドレスは、(ホスト部全て0)
11000000.10101000.00011110.00000000
192.168.30.64
ブロードキャストアドレスは、(ホスト部全て1)
11000000.10101000.00011110.11111111
192.168.30.127
ということだ。
サブネットマスクについては、下で説明しているのでいったん安心して大丈夫です。
IPアドレスの分類
インターネットの使い始め、
「クラス」によりIPアドレスの種類を分類している
クラスごとに
IPアドレスのネットワーク部とホスト部のbit数を固定して考える
クラスの識別IPアドレスの先頭bit列で分類
(IPアドレスの先頭数bitの0/1で判断)
プライベートアドレス
インターネットに接続しないLANとホストに対しても割り当てることができるIPアドレス
グローバルアドレス : インターネットに接続時に用いるアドレス
???
何を言ってるのか分からなくなったかもしれません。
少なくとも、僕はなりました。
これだけでは説明が足りないのでこちらも参考にするとわかりやすいです。
プライベートIPアドレスの使われ方と経緯
プライベートIPアドレスが登場した背景には、IPv4のIPアドレス枯渇問題がある。IPv4のIPアドレスは32ビットで、おおよそ43億個のIPアドレスを割り当てることができる。しかし、1980年代以降にインターネットが爆発的に成長した結果、IPアドレスを必要とする端末が急増し、43億個だけではいずれ枯渇するのではないかという議論が持ち上がった。
そこで、すべての端末がインターネットからアクセスできる必要はないという概念のもとに、LAN内のコンピュータには一定の範囲のIPアドレスをプライベートIPアドレスとして割り当てる方針が立てられた。そして、そのLANとWANを接続する機器にのみグローバルIPアドレスを割り当てる形が確立された。
つまり、家の中や会社や学校みたいなのを思い浮かべてみたとする。
パソコンとかコンピューターがいっぱいありますよね。それぞれにIPアドレスを与えていたら、
世界のIPアドレスは一瞬で枯渇しそうです。
そのため、世界とつながっているルータのような同じネットワークの先端の機器だけにグローバルIPアドレスを与えて、その配下にあるコンピューターたちには、プライベートIPアドレスという概念で考えようということです。
こちらも参照しましょう
プライベートIPアドレスは、会社や家庭などの組織内(ローカル)で一意に割り当てられるIPアドレス。このIPアドレスはJPNICなどの機関に申請する必要はなく自由に使えます。自由に使用できるとはいえ組織内で一意でない場合は、宛先を混同して正常に通信できないので一意に割り当てる必要があります。また、このIPアドレスが割り当てられた機器はインターネットでは通信を行えないため、インターネット通信を行うためには、アドレス変換技術などでグローバルIPを持つ機器に中継してもらう必要があります。
なんとなく意味が分かってきたでしょうか
もう一つ参照しておきましょう
https://wa3.i-3-i.info/diff120ipaddress.html
グローバルIPアドレスは全世界で通用する住所です。
その代わり、全世界で一意になる必要があります。
あなたが使うIPアドレスは、この世には1つしかありません。
あなたが使っていれば他の人は使えないですし、他の人が使っていれば、あなたは使えないのです。
一方のプライベートIPアドレスは同一ネットワーク内でのみ通用する住所です。
同じネットワーク内では一意になる必要があります。
あくまで「同じネットワーク内で」一意になれば良いので、違うネットワークであれば同じIPアドレスを使っても問題はありません。
例えば、私が今使っているパソコンのプライベートIPアドレスは「192.168.1.2」ですが、世の中には同じ「192.168.1.2」をプライベートIPアドレスとして使っている人がたくさんいるはずです。
また、グローバルIPアドレスは世界的に管理されています。
グローバルIPアドレスを使うときは「IPアドレスを管理してやるから」団体さんから「このIPアドレスを使って良いよ」と払い出してもらって、はじめて使えます。
既に使われているIPアドレスとまだ使われていないIPアドレスを把握しておかないと、他の人と重複してしまうかもしれませんからね。
「IPアドレスを管理してやるから」団体さんが世界中で使われるIPアドレスが重複しないようにに管理しているのです。
一方のプライベートIPアドレスは自分たちで(特定の範囲内で)好きな番号を使えます。
世界的には管理されていません。
違うネットワークのことは気にしなくて良いですからね。
あくまで、そのネットワーク内で一意になるように配慮しておけば良いので、世界的に管理する必要はないのです。
ループバックアドレス
自分自身を表すアドレス : 127.*.*.*/8(クラスA)
(範囲 : 127.0.0.0 - 127.255.255.255)
多くの端末では「127.0.0.1」を使用
これだけでなく、上記範囲のアドレスすべてが自分自身を表している
実際にネットワーク接続されていない場合でも利用可能
ネットワークサービスをローカルで実行するときに便利
例 : 1台PCでクライアントとサーバを兼ねるとき
またもや、違うアドレスが出てきました。
プライベートIPアドレスのクラスの画像を見てください。
127.*.*.*/8らへんのIPアドレスが抜けていると思います。
ここのIPアドレスを使って、自分自身を表すように使おうというIPアドレスです。
下記のリンクを見るとわかりやすかもしれません。
サブネット
プライベートIPアドレスのところでも少し出ましたが、
IPアドレス枯渇問題があります。
グローバルIPアドレスは不足している
IPアドレスは全部で2^32個
世界全人類1人1つのIPアドレスがいきわたるように
例えば、クラスAのアドレスを持っている
企業のホスト数が10台しかないと ⇒ 無駄が多い
だって、クラスAのIPアドレスは,
ネットワーク部が8bitで、ホスト部は24bitあり、
ホスト部からネットワークアドレスとブロードキャストアドレスの2パターンを除けば、2^24-2個分使えるのに、結果としては10台しか使っていないみたいなことが起こりえる。
そこで
IPアドレスのクラス分類に依存しない方法を検討
CIDR(Claassless Inter - Domain Routing)
例えば、クラスAのアドレスであっても、ネットワーク部を8bitより多くする
ネットワークを増やす(分割する)
この時点ではまだ意味が分からないと思うが心配しなくてよい。
もうちょっと意味わからないまま進めさせてほしい。
クラスにより決められた分割
10.0.0.0
00001010.00000000.00000000.00000000
ネットワーク部(8bit) / ホスト部(24bit)
クラスのルールだけでやるとこうなる。
サブネットによる自由な分割
10.0.0.0
00001010.00000000.00000000.00000000
ネットワーク部+サブネット(16bit) / ホスト部(16bit)
太字じゃないところが、サブネット
サブネットというものを使うとこうなる
クラスにより指定されているネットワーク部を人工的に拡張できる
より多くののネットワークを最適に作ることができる
現状、全然意味が分からないと思う。
私も意味が分からなかった。
IPアドレス - サブネットの仕組みについてわかりやすかった、
サイトがあるので見て欲しい
ちなみに、サブネットとサブネットマスクは別概念なので混乱しないでください。
サブネットマスクについてはこの後説明します。
こちらは、サブネットをじゃあ何に使うのか?というところの説明をしてくれています。
ここからサブネットについてわかるように解説します
クラスの概念を使った場合、どうしても無駄が生まれる。
例えばクラスBを採用したとして、ネットワーク部が16bit、ホスト部が16bitあるとする。
ホスト部は計算すれば、65534台使える計算になる。
果たしてこんなに使うのだろうか?社内や学校で、ネットワーク部のアドレスが16bitのプライベートIPアドレスを使っていたとする。
全体としては2000台コンピュータがあったとし、その社内のある部署・学校のある教室では400台コンピュータを使ってたとする。
セキュリティの観点から、他の部署とは、通信を分けたいとする。
新しいアドレスとしてネットワーク部を新しく設けるのは色々と大変だ。
そんなときにサブネットを使う。
ホスト部の一部分をサブネット部という部分として扱う
例えばホストの7bitや8bitをサブネット部として使うとする。
すると、
サブネット部をまるでネットワーク部のように扱って、
ネットワークをわけるようにできる。
こうすることで起きるメリットは
・ホスト部の扱える大きさがちょうどいい感じになる。
・ブロードキャストしたときに、社内全体2000台全体に通信を行わずに済むため処理が軽くなる。
・通信を分けられるので、管理が便利になる。
なんとなくわかっただろうか?
詳しい方はこの辺の理解について、間違っていたら教えてください。
サブネットマスク
ネットワーク部(サブネット込み)とホスト部の境目を表す32bitのbit列
・ネットワーク部を全て「1」
・ホスト部を全て「0」
例 : IPアドレス 192.168.10.5/24
二進数に変換すると、
11000000.10101000.00001010.00000101
サブネットマスクは
11111111.11111111.11111111.0000000
255.255.255.0(10進数表記)
となる。
IPアドレスとサブネットマスクのbit列をbit事に掛け算してあげると、
サブネットマスクの「1」のところだけが残り、ネットワーク番号がなんなのか知ることができる。
マルチキャストアドレス
ネットワークに接続された複数のコンピュータに同時に送信するためのアドレス
これに対して、
ユニキャスト
1対1の通信のこと
既に何回かでてきている
ブロードキャスト
同じネットワーク内にいる全員に同じデータを送る
と呼ばれる。
アドレスは専用ソフトで設定
異なるLANの端末であっても同時送信可能
設定可能アドレスの範囲
224.0.0.0 ~ 239.255.255.255
クラスDのアドレス
マルチキャストアドレスについて。わかりやすく
https://wa3.i-3-i.info/word15045.html
マルチキャストアドレスの構造、仕組み、管理
DHCP_アドレス割り当て
Dynamic Host Configuration Protocolの略
ネットワークに接続されたコンピュータに対して、
IPアドレスを自動で動的に割り当てるプロトコル
同一ネットワーク(サブネット)上にDHCPサーバを設置する必要がある。
DHCPの動作
例 : ホストAがIPアドレスを取得する
前提条件 : 同一ネットワーク上にDHCPサーバが設置されている。
DHCP Discover メッセージ(DHCP Discovery)をブロードキャストして、DHCPサーバを検索
ハブは以下の動作を行う
・ホストAからのパケットを受信
・ポート2,3,4にパケットを送出(DHCP Discoverメッセージ)
受け取ったDHCPサーバーは以下の動作を行う
・リクエストパケットを受信
・一つのIPアドレスを選ぶ
・ホストAにDHCP Offerを送出
IPv6アドレス
Internet Protocol version 6
IPアドレスを128bitで構成したIPプロトコル
RFC1883,1885が最初
創られた背景は、IPv4アドレスの枯渇、不足解消のためである
特徴 :
ヘッダの単純化
・チェックサムの削除
ヘッダ長の固定化
拡張ヘッダの採用
・AH(認証)、機密保護(ESP)
IPv6ヘッダ
IPv6アドレスの表記法[JPNIC]
128bitを16bitずつ8つに[:]で区切る
各区切りは16進数で表す
例
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:DB8:0:0:8:800:200:417A
「0」が連続するときは省略も可能
例
FF01:0:0:0:0:0:0:101 ⇒ FF01::101
IPv6アドレス体系(ユニキャストアドレス)
ネットワーク部64bit
ホスト部64bit
ネットワーク部(64bit固定)
ルータかサーバから自動的に割り当てられるようになる
ホスト部(64bit固定)
LANアダプタのMACアドレスを基に自動生成
ここで中編は終わります。
次回後編でネットワーク層をとりあえず終了します
この記事が気に入ったらサポートをしてみませんか?