HONESTY

嘘はつかない。全て正直に書きます。

【ネットワーク】の基礎知識 | トネ講座10日目

f:id:mtakeo:20190327162901j:plain

こんにちは!!

本日はネットワークの技術を理解していきましょう!!

 

 

 

サーバーでは無線LANは使用しない


一般的に言われている「LAN」は、LANケーブルを利用してデータを転送する「有線LAN」と、電波を利用してデータを転送する「無線LAN」に大別されます。この内、サーバーを接続する時は有線LANが基本です。どんなに無線LANが高速になったと言っても、速度的にも品質的にも有線LANにはまだまだかないません。無線LANはあくまでクライアント側だけのものです。本研修ではサーバーで使用する有線LANのみを前提として取り扱います。

 

下位レイヤーから順に理解すると分かりやすい


本研修ではネットワークの基本中の基本である「OSI参照モデル」をベースとして、下位レイヤー(物理層)から上位レイヤー(トランスポート層)に向かって順に説明していきます。また、各レイヤーの開設は「技術パート」と「機器パート」の2パターンで構成しています。はじめに、技術パートでそのレイヤーにおいてポイントとなる技術的な要素や代表的なプロトコル(通信するときのルール)を説明します。次に、機器パートでそのレイヤーで動作するネットワーク機器や、そのネットワーク機器が持つ代表的な機能について説明します。例えば、レイヤー3(ネットワーク層)の場合、技術パートでは、レイヤー3において代表的なプロトコルである「IP」と「ARP」、技術的な要素として「IPアドレス」を取り上げています。また、機器パートでは、レイヤー3で動作するネットワーク機器である「ルーター」と、その中核を担う機能である「ルーティング」を取り上げています。

  

OSI参照モデルプロトコル

 

プロトコル=通信するときのルール


ネットワークを学習する時、最初に理解しなければならない概念が「OSI参照モデル」です。OSI参照モデル国際標準化機構(ISO)がコンピューターの通信機能を階層構造に分けて整理したモデルで、簡単に言ってしまうと「通信するときのルールの集まり」みたいなものです。ネットワークにおけるルールとはプロトコルと呼ばれています。たとえば、皆さんがWebサイトを見る時、 「http://www.◯◯」 のようにURLを入力したことがあるとおもいます。ここで最初に入力する「http」がプロトコルにあたります。HTTPは「HyperText Transfer Protocol」の略で、WebサーバーとWebクライアントでデータを送受信するときに使用する通信のルール、つまり通信プロトコルです。

 

使用するプロトコルはごくわずか


OSI参照モデルでは、このプロトコル

という7つの階層構造(レイヤー)に分けています。それぞれのレイヤーは全く異なる役割を持ち、別々に動作するようになっています。そうすることによって、レイヤーとレイヤーが影響し合わないようにするだけでなく、レイヤーごとに分離したトラブルシューティングが出来るようにしています。
OSI参照モデルはたくさんのプロトコルで構成されていますが、実際のネットワークで使用されているプロトコルはごくわずかで、かなり限定されています。レイヤー1とレイヤー2は「イーサネット」、レイヤー3は「IP」「ICMP」「ARP」、レイヤー4は「TCP」「UDP」、そしてレイヤー5からレイヤー7は「アプリケーションプロトコル」というように、実際に使用しているプロトコルだけをピックアップして理解すれば、ネットワークの基礎を制覇したといっても過言ではないでしょう。

 

プロトコルの役割


送信側ではカプセル化、受信側では非カプセル化を行う

 

サーバーで行う処理がカプセル化です。サーバーはレイヤーの上流から下流に向けてカプセル化の処理を行い、転送用のデータを作っていきます。サーバーアプリケーションは、アプリケーションデータを作ると、そのままの状態でトランスポート層に渡します。トランスポート層は、受け取ったセグメントのIPのカプセル(パケット)に入れて、データリンク層に渡します。データリンク層は、受け取ったパケットをイーサネットのカプセル(フレーム)に入れて、物理層に渡します。物理層は受け取ったフレームを信号に乗せやすいビットに変換した後、電気信号や光信号にして送ります。
それに対して、クライアントで行う処理が非カプセル化です。クライアントはレイヤーの下流から上流に向けて非カプセル化の処理を行い、オリジナルのアプリケーションデータに戻していきます。物理層で電気信号や光信号を受け取ると、ビットに変換した後、フレームにして、データリンク層へと渡します。データリンク層は受け取ったフレームからパケットを取り出して、ネットワーク層へと渡します。ネットワーク層は受け取ったパケットからセグメントを取り出して、トランスポート層へと渡します。トランスポート層は受け取ったセグメントからデータを取り出して、オリジナルのアプリケーションデータをクライアントアプリケーションに渡します。

 

イーサネットMACアドレス

 

イーサネットでフレームを作る


レイヤー1とレイヤー2で必要不可欠な規格が「イーサネット」です。有線ネットワークであれば、ほぼ間違いなくイーサネットを使用していると考えて良いでしょう。イーサネットはレイヤー3(ネットワーク層)から受け取ったデータ(パケット)に、フレームの最初を表す「プリアンブル」、宛先と送受信を表す「ヘッダー」、ビットエラーのチェックに使用する「FCS(Frame Check Sequence)」を付加することによってフレームを作ります。

 

MACアドレスでコンピューターを識別する


イーサネットは「MACアドレス」という48ビットの識別子を使用して、コンピューターを識別します。MACアドレスは「ax:44:4r:09:78:90:」
や「11-34-90-p9-22-01」のように8ビットずつハイフンやコロンで区切って、16進数で表記します。MACアドレスは上位24ビットと下位24ビットで異なる意味を持っています。上位24ビットは電気・電子関係の技術団体である米国電子学会が機器のベンダーごとに割り当てたベンダーコードです。これは「OUI(Organizationally Unique Identifier)」と呼ばれており、この部分を見るとコンピューターのベンダーが分かります。また、下位24ビットはベンダー内で機器ごとに一意に割り当てられているコードです。MACアドレスIEEEによって一意に管理されている上位24ビットと、各ベンダーによって一意に管理されている下位24ビットの2つのアドレスを組み合わせて定義します。その為、各NICに割り当てられているMACアドレスは世界で一つだけのものになります。
コンピューターがデータを送信する時は、自分のMACアドレスを「送信元MACアドレス」、データを送る相手のMACアドレスを「あて先MACアドレス」としてヘッダーに入れることによって、フレームにします。

 

スイッチング

 

イーサネットのネットワークはスイッチを中心にして作る


イーサネットは「スイッチ」と呼ばれるネットワーク機器を中心として、コンピューターを配置していく「スター型トポロジー」という接続形態を採用しています。大きな家電量販店や会社の机の上などで、LANのポートをたくさん搭載したネットワーク機器を見たことがりませんか?あれがスイッチです。有線ネットワークであれば、コンピューターはLANケーブルを経由してスイッチにつながっていると考えてよいでしょう。

 

MACアドレステーブルを使用してスイッチング


スイッチはフレームがはいってきた「LANポート番号」とそのフレームの「送信元MACアドレス」をテーブル(対応表)にして一定時間覚えておくことによって、不必要なフレーム転送を避け、イーサネットネットワークにおける通信効率の向上を図っています。スイッチの行うフレーム転送の事を「スイッチング」、またスイッチがスイッチングで使用するLANポート番号と送信元MACアドレスのデータデーブルを「MACアドレステーブル」といいます。スイッチは以下の手順でMACアドレステーブルを作り、必要なポートにだけフレームを転送するようにします。

 

  1. フレームを受け取ったスイッチはフレームが入ってきたLANポートの番号と送信元MACアドレスMACアドレステーブルに記録します。
  2. あて先MACアドレスの情報がをMACアドレステーブルに載っていれば、その情報に基づいてフレームを転送します。載っていなければ、全てのポートにフレームのコピーを送信します。該当するコンピューターだけがフレームを受け取り、それ以外のコンピューターはフレームを破棄します。
  3. 以降、フレームが入ってくる度にMACアドレステーブルの情報を更新します。使用しなくなった情報は一定時間経過すると削除します。
 
IPとIPアドレス


レイヤー3 で最も重要なプロトコルが「IP(Internet Protocol)」です。現在の ネットワークはほぼ間違いなくIPを使用しています。 IPは、レイヤー4(トランスポート層)から受け取ったデータ(セグメント)に「IP ヘッダー」をくっつけてパケットにします。 IPヘッダーはパケットの送り先を示す宅配伝票のようなものです。パケットは深海底から山中に至るまで、世界中のありとあらゆるネットワークを経由します。IPヘッダーはそうした環境の差を吸収できるようにたくさんのフィールドで構成されています。IP は「IP アドレス」という32 ビットの識別番号を使用して、コンピューターを識別します。IP アドレスは「192,168.1.1」や「172.16.25.254」のように、8 ビットずつドットで区切って、10 進数で表記します。ドットで区切られたグループのことを「オクテット」といい、先頭から「第1 オクテット」「第2オクテット」……と呼びます。
IPアドレスは、それ単体で使用するのではなく「サブネットマスク」という32ビットの値とセットで使用します。IPアドレスは、サブネットマスクで分割した「ネットワーク部」と「ホスト部」の2つで構成されています。ネットワーク部はネットワークそのものを表しています。また、ホスト部はそのネットワークに接続している端末そのものを表しています。サブネットマスクはこの2つを区切る目印のようなもので、「1」がネットワーク部「0」がホスト部を表しています。サブネットマスクには「10進数表記」と「CIDR 表記」という2種類の表記方法があります。10 進数表記はIPアドレスと同じように32ビットを8ビットすつ4つのグループに分け、10 進数に変換して、ドットで区切って表記します。CIDP 表記はIPアドレスの後にスラッシュと「1」 の個数を付与して表記します。
たとえば「172.1 6.1.1」というIPアドレスに「255.255.0.0」というサブネットマスクが設定されていたら、「172.16.1.1/16」と表記することもでき、「172.16] というネットワークの「1.1」というホストであることがわかります。

 

いろいろなIPアドレス

 

IPアドレスは「0.0.0.0」から「255.255.255.255」まで、2の32乗(約43億)個あります。しかし、どこでも好き勝手に使ってよいかといえば、そういうわけではありません。使用用途や使用場所によって、 どこからどこまでをどのように使っていいのか決められています。それぞれ説明しましよう。

 

使用用途による分類


Pアドレスは使用用途に応じて、クラスAからクラスEまでの5つのアドレスクラスに分けることができます。 その中で一般的に使用するのはクラスAからクラスCまでです。コンピユーターに設定し、1対1の通信(ユニキャスト)で使用します。 この3つのクラスの違いをざっくり言うと、 ネツトワークの規模の違いです。この3つのクラスA→クラスB→クラスCの順に規模が小さくなります。クラスDとクラスEは特殊な用途で使用し、一般的には使用しません。アドレスクラスの分類は、IPアドレスの32ビットのうち先頭の1〜4ビットで行っています。先頭のビットによって、使用できるIPアドレスの範囲も必然的に決まってきます。

 

使用場所による分類


IPアドレスは使用場所に応じて、「グローバルIPアドレス」と「プライベートIP アドレス」の2つに分類することもできます。
グローバルIPアドレスはインターネットにおいて一意なIPアドレスです。「ICANN(Internet Corporation for Assigned Names and Numbers)」という民間の非営利法人によって、インターネット上で一意になるように管理されています。 それに対して、プライベートIPアドレスは組織や家庭などのLAN で自由に割り当ててよいIPアドレスです。クラスAだったら「10.0.0.0 〜10.255.255.255」、クラスBだったら「172.16.0.0〜172.31 .0.0]、クラスCだったら「192.168.0.0〜192.168.255.255」というように、アドレスクラスごとに範囲が決められています。

  

ルーティング

 

ルーティングテーブルでパケットを転送


イーサネットで作ったネットワークとネットワークをつなぐときに使用するネットワーク機器が「ルーター」です。ルーターはあらかじめ作っておいた「ルーティングケーブル」を利用して、パケットを転送します。ルーターが行うパケット転送のことを「ルーティング」といいます。ルーティングテーブルは「あて先ネットワーク」と、 そのあて先ネットワークに対する送り先となるIPアドレスネクストホップ)で構成されています。ルーターはパケットを受け取ると、そのパケットのあて先IPアドレスとルーティングテーブルのあて先ネットワークを照合します。あて先IPアドレスがあて先ネットワークにヒットしたら、ネクストホップのIPアドレスにパケットを転送します。ヒットしなかったら破棄します。

 

ルーティングテーブルの作り方は2種類


ルーティングテーブルを作る方法には、「静的ルーティング」と「動的ルーテイング」 の2 種類があります。 静的ルーティングは手動でルーテイングテーブルを作る方法です。あて先ネットワークとネクストホップを1つひとつ設定します。静的ルーティングは、ネットワ ークを構成するすべてのルーターに対してルーティングの設定が必要になりますが、 設定がわかりやすく管理しやすいため、小規模なネットワーク環境でよく使用されています。
動的ルーテイングは隣接するルーター間でルート情報を交換して、自動的にルー ティングテーブルを作る方法です。ルート情報を交換するためのプロトコルを「ルーティングプロトコル」といいます。動的ルーティングは、少し動作の理解が難しいで すが、ネットワーク環境の変化にも対応しやすく、耐障害性の向上も図ることができ るため、中規模から大規模なネットワーク環境でよく使用されています。

 

ARP


MACアドレスはコン ピューターの NIC(Network interface Card) に焼き付けられている物理的なアドレスです。それに対してIPアドレスはOSで設定する論理的なアドレスです。2つのア ドレスは、別々に利用されるのではなく、協調して利用される必要があります。この2 つのアドレスを協調して利用できるように物理と論理の架け橋的な役割を果たしているのが「 ARP (Address Resolution Protocol」です。
物理と論理の架け橋というと、なんとなく難しそうな感じがしますが、実際にやっているのはIPアドレスMACアドレスの関連づけだけです。コンピューターはレイヤー3から受け取ったパケットをフレームにして、ケーブルに流す必要があります。しかし、パケットを受け取っただけでは、フレームを作るための情報が不足しています。送信元MACアドレスは自分自身のNICに書かれているMACアドレスなのでわかりますが、あて先MACアドレスがわかりません。そこで、ARPを使して、IPアドレスからMACアドレスを求めます。

 

ARPの処理の流れ

 

データ送信するコンピューターがレイヤー3からパケッ トを受け取ると、パケットのあて先IPアドレスを見ます。それが同じネットワークにいるコンピューターのものだったら、そのIPアドレスをAFPで問い合わせ(AREリクエスト)、その応答結果(ARPリプライ)を「ARPテーブル」と呼ばれるメモリ上のテーブルに登録し、その情報をもとにフレームを作ります。また、 異なるネットワークのコンピューターのものだったら、デフォルトゲートウェイMACアドレスARPで問い合わせ、同様の処理を行います。デフォルトゲートウェイとは自分以外のネットワークに行くときに使用する出口のIPアドレスです。 ファイアウォールルーターIPアドレスデフォルトゲートウェイになることが多いでしょう。自分が知らないネットワークのあて先IPアドレスのパケットだったら、とりあえずデフォルトゲートウェイMACアドレスに送信しようとします。

 

TCPUDP

 

信頼性を求めるか、即時性を求めるか


レイヤー4は、通信制御とサービスの識別を行うレイヤーです。レイヤー4ではアプリケーションが求める通信要件を「信頼性」と「即時性」れぞれにプロトコルを用意しています。
データを大事に、しっかりやりとりしたいときには 「TCP(Transmission Control Protocol)」を使用します。TCPは通信するコンピューター同士が「送りました」「届きました」とお互いに確認のメッセージを送り合いながら、データをやりとりすることによって、通信の信頼性を高めています。Webやメール、ファイル共有など、データを取りこぼしたくないようなサービスはTCPを使用しています。 それに対して、データの信頼性はさて置き、とにかく速く送りたいときに、「UDP (User Datagram Protocol)」を使用します。 UDP はデータを送ったら送りっぱなしなので、信頼性はありませんが、確認応等の手順を省くことによって、通信の即時性を高めています。VoIP(Voce over IP)や時刻同期、名前解決など、何より速度を必要とするサービスはUDPを使用しています。

 

ポート番号でサービスを識別する


TCPUDPは「ポート番号」という数字を利用して、 コンピューターの中のどのサービス(アプリケーション) にデータを渡せばよいかを識別しています。 ボート番号は「0〜65535」(16ビット分)までの数字で、 範囲によって用途が決められ ています。
「0〜1023」は「ウェルノウンボート」といい、 Webサーバーやメールサーバーなど、一般的なサーバーソフトウェアがクライアントのサービス要求を待ち受けるときに使用します。「1024〜49151」は「レジスタードポート」といい、 メーカー独自のサーバーソフトウェアがクライアントのサービス要求を待ち受けるときに使用します。「49152〜65535」は「ダイナミックボート」 といい、 サーバーがクライアントを識別するために使用します。

 

ポート番号の使い方

 

クライアントからサーバーに対する接続(リクエスト)

 

  1. WebクライアントはWebブラウザが作ったリクエストデータを受け取ると、送信元ポート番号にタイナミックポートの中からランダムに選択した数子を、あて先ポート番号にWebサービスを表す「80」を入れて、セグメントにします。
  2. WebクライアンはIPとイーサネットの力プセル化を行いWebサーバーに転送します。
  3. WebサーバーはイーサネットとIPの非力プセル化を行い、あて先ポート番号をチェックします。あて先ポート番号は「80」です。80番はWebサービスを表すウェルノウンポート番号なので、Webサービスを提供するサーバーソフトウェア にリク工ストデータを渡します。サーバーソフトウェアはクライアントのリク工ストに対する処理を行い、レスポンスデータを作ります。

 

サーバーからクライアントに対する接続(レスポンス)

 

  1. Webサーバーはサーバーソフトウェアからレスポンスデータを受け取ると、送信元ボート番号にWebサービスを表す「80」を、あて先ボート番号に受け取ったセグメントの送信元ボート番号を入れて、セグメントにします。
  2. WebサーバーはIPとイーサネットカプセル化を行い、Webクライアントに転送します。
  3. WebクライアントはイーサネットとIPの非カプセル化を行い、あて先ポート番号をチェックします。あて先ポート番号は自分で割り当てたポート番号なので、 それに紐づくアプリケーション、つまりWebブラウザにデータを渡します。

 

NATとNAPT

 

NATはIPアドレスを1対1で変換する


NATはプライベートIPア ドレスとグローバルIPア ドレスを1対1に紐づけて変換します。NATはLANからインターネツトに接続するときには、送信元IPアド レスを変換します。逆にインターネットからLANに接続するときには、あて先IPアドレスを変換します。

 

NAPTはIPアドレスとポート番号を変換する


NAPTはプライベートIPアドレスグローバルIPアドレスをn対1に紐づけて変換します。NAPTはLANからインターネットにアクセスするときに、送信元IP アドレスだけでなく送信元ボート番号も変換することによって、n対1の変換を実現しています。ここでは、LANにいるクライアントがインターネットにあるサーバーと通信することを例に、NAPTの処理を具体的に説明します。

  1. ルーターはクライアントから受け取ったパケットの送信元IPアドレスをプライベートIPアドレスからクローバルIPアドレスに変換します。あわせて、 送信元ポート番号も変換し、その変換情報を記憶したうえでサーバーに転送します。
  2. サーバーはクライアントからパケットを受け取り、 その処理結果をクライアン に返します。
  3. ルーターは受け取ったパケットのあて先IPアドレスとあて先ボート番号を①で作った変換情報にもとづいて元に戻し、クライアントに返します。

 

では^^