ITインフラを支えるのは、ネットワークです。ネットワークがなければ、コンピュータを使う意味がないと言ってもいいでしょう。ここでは、ネットワークの基本について解説します。
■ネットワークの基本概念
国際標準化機構 (ISO)が提唱したOSI(Open Systems Interconnection)が、ネットワークの基本概念です。ネットワークの機能を下位から上位に7つのレイヤに分け、ネットワークの機能を構造化しています。
こうすることで、単に、データを送受信するだけではなく、信頼性、接続性、パフォーマンスの確保できます。
レイヤ毎にデータフォーマット、データを送受信するための手順などの規定(プロトコル)が厳格に決められます。そうすることで、通信機器名ーカーが開発する機器での実装の独自性を無くし、どんなメーカーの機器であっても相互に通信を可能となります。
プロトコルは、法律のようなものであり、公開されています。プロトコルを決める国際的な標準化団体と呼ばれるものがあり、そこのワーキンググループによって決められ、勧告として文章化されます。
「同じレイヤで、同じプロトコルを使って、会話する」ことが通信です。同じ国に住み、同じ言葉を話すことができなければ、会話が成立しません。プロトコルは、言葉です。
ISOも、OSIの7つのレイヤのプロトコルを規定していますが、あまりにも厳密過ぎて、実際には利用されていません。その概念は、理解しやすく、汎用的なので、ネットワークの基本を理解するために使われています。
■プロトコルの処理
ネットワークを送受信されるデータは、パケットと呼ばれます。一言でいうと、プロトコルとは、パケットのヘッダの定義と、それを使った制御手順を決めたものです。
パケットは、ヘッダとペイロードで構成されます。ヘッダには、パケットの種別や宛先情報などのそのレイヤのプロトコル処理のために使われるデータが設定され、ペイロードに実際のデータが設定されます。階層毎に、異なるヘッダが付与され、上位層のパケットが、下位層のペイロードに設定される入れ子構造になっています。
プロトコルの処理は、主に以下の3つです。①と②は、レイヤの「ヨコ」の動作、③はレイヤの「タテ」の動作です。
①パケットの解釈と生成
②シーケンスの実行
③下位層、上位層とのデータやり取り
①パケットの解釈と生成
プロトコル処理は、受信と送信に分かれます。
受信処理は、パケットのヘッダの中身を解釈し、送信処理は、逆にヘッダをデータに付与してパケットを生成します。
②シーケンスの実行
パケットを生成し、相手から受信したパケットの解釈し、また、パケットを生成するという時系列の流れがシーケンスです。
ピア(Peer)と呼ばれる1対1のネットワーク機器同士で通信をする場合、シーケンス通りに、同じレイヤのプロトコル間でパケットを解釈し合うことで、データの送受信を実現します。
③下位層、上位層とのデータやり取り
実際のパケットのやり取りは、ピア同士の同じレイヤで直接やり取りされるわけではありません。同じネットワーク機器内の上下のレイヤ間でデータをやりとりすることで実現されます。
データを送信する場合、最上位のレイヤが、まず、アプリケーションからデータをもらい、それにヘッダをつけてパケットを生成し、下位層に引き渡します。下位層では、ヘッダをつけてパケットを生成し、さらに下位層に引き渡します。これを、最下層まで繰り返すことで、LANや光ファイバなどの通信媒体を通してデータが送信されます。その結果、実際に通信媒体を流れるパケットは、各ヘッダが付与される分、サイズが大きくなります。
データを受信する場合には、その逆のことが行われます。最下層でパケットをヘッダを取り除き、データを上位層に引き渡します。上位層では、ヘッダを取り除き、さらに下位層に引き渡します。これを、最上位層まで繰り返すことで、アプリケーションは、データを取得することができます。
このような送受信の処理が行われる過程で、各レイヤにおいてプロトコルで必要な②のシーケンスが実施されます。
■インターネットの基本概念
インターネットにも、プロトコルがあり、レイヤ構造をとります。ただし、これらは、OSIの7つのレイヤに沿ってつくられたわけではなく、結果的に似たようなレイヤ構造と機能となったに過ぎません。その構造は、よりシンプルで、3層構造をとります。
インターネットプロトコルは、ISOではなく、アメリカのDARPA(国防高等研究計画局)によってつくられ、「TCP/IP」と呼ばれています。
あえて、OSIの7つのレイヤに当てはめると、下位の4層に相当し、セッション層、プレゼンテーション層がなく、「TCP/IP」の上位には、アプリケーションがあるだけです。
・TCP/UDP層
アプリケーション毎にデータの送受信をするプロトコル。データを送受信するためにコネクション型のTCPと、コネクションレス型のUDPがあります。
アプリケーションを識別するために、ポート番号を使います。送信元のポート番号と送信先のポート番号が、TCP/UDP層パケットのヘッダ部に設定され、アプリケーションのデータが送受信されます。
メール、Web など、汎用的なアプリケーションのために予約された番号があり、独自で開発するアプリケーションは、それ以外のポート番号を使って、通信をします。
コネクション型のTCPは、通信する同士(ピア)で、電話をかけるように接続する必要があります。接続後、データを送受信する経路を「コネクション」と言います。TCPでは、接続する手順と、接続後のコネクションを使ったデータの送信と受信、ACKよる送信と受信の送達確認の手順、再送手順などを規定しています。これによって、アプリケーション同士で、データを損失することなく、通信できることを保証します。
コネクションレス型のUDPは、接続する手順はなく、データを送信、受信するだけの単純なプロトコルです。また、ACKによる送信と受信の送達確認、再送なども規定しておらず、データの損失が発生する可能性があります。その代わり、TCPよりも早く通信することができます。
・IP層
コンピュータやネットワーク機器など装置毎にデータの送受信をするプロトコル。装置を識別するために4バイト(32ビット)のIPアドレスを使います。IP層パケット(IPパケット)のヘッダ部には、送信元のIPアドレスと送信先のIPアドレスが設定され、TCP/IP層パケットがデータとして送受信されます。IPパケットのヘッダ部には、送信先のIPアドレスに加え、IPパケットをネットワーク機器に優先的に処理させるための優先度を設定することができます。
IP層のプロトコルは、インターネットなどのネットワークを構成するための制御を実現するためにあります。
ネットワークにとって、流れるパケットの総量(トラフィック)を減らすことが課題となります。できるだけ必要なパケットのみが、ネットワークに流されるように、トラフィックを制御する仕組みが必要になるのです。
そのために、IP層のプロトコルでは、IPアドレスによる工夫がされています。それは、IPアドレスのグループ分けであるセグメント化です。IPアドレスは、セグメントを識別するネットワーク部と、個々の装置を識別するためのホスト部に分割されます。それによって、セグメント外のネットワークには、不要なパケットが流入しないようになり、トラフィック量を抑制しています。
また、IPアドレスには、グローバルアドレス、ローカルアドレスという分類があります。グローバルアドレスとは、全世界でユニークであるIPアドレスであり、インターネットでは、このグローバルアドレスを使って、世界中のコンピュータと通信ができます。
一方、ローカルアドレスは、インターネットのように全世界とつながったネットワークではない、個別のネットワーク内だけに限定して使われます。したがって、同じIPアドレスを使っても構いません。
・イーサネット層
物理的に配線された隣接する機器同士の間でデータを送受信するプロトコル。6バイト(48ビット)のMACアドレスによって、機器を識別します。イーサネット層のパケット(イーサパケット)のヘッダ部には、送信元のMACアドレスと送信先のMACアドレスが設定され、IPパケットがデータとして送受信されます。
通常、イーサパケットとIPパケットの送信先・受信元は異なります。イーサパケットは、あくまでも近くにあるネットワーク機器にデータを転送するために使われ、最終目的地の宛先まで送信するためのものではありません。
接続されたネットワーク機器の間で、イーサパケットをバケツリレーのように転送することで、最終目的地の宛先まで送り届けます。
そのために必要となるのが、MACアドレスとIPアドレスの変換です。そのために、IP層とイーサネット層の間に、ARP(Address Resolution Protocol)というプロトコルがあります。IPアドレスを指定したパケットを送信し、MACアドレスを応答として受け取ります。
この仕組みによって、次に送信すべきMACアドレスを知ることができ、イーサパケットを送信することができます。
これを繰り返すことで、宛先のIPアドレスまで、データを送り届けます。
■ネットワーク機器
ネットワークを形成するには、ただ単に配線すればいいというわけではありません。データを中継するネット―ワーク機器を使って、ネットワークを「構築」する必要があります。インターネットのネットワーク機器は、主に次の2つの種類があります。
・ブリッジ/ハブ
イーサネット層のプロトコルが実装されたネットワーク機器。目的は、隣接する複数の装置同士をつなげることです。ハブには、配線するためのポートがあり、同じハブのポートにつながれた各装置のイーサパケットを転送します。
ポートを介してハブ同士を繋ぐことをカスケードといいます。これによって、複数のハブを連結することができ、接続できる装置を増やすことができます。
・ルータ
IP層のプロトコルが実装されたネットワーク機器。目的は、ネットワークをサブネットに分割することで、ネットワークのトラフィックを抑制することです。
ハブと同じようにポートがあり、ポート毎に別々のサブネットが割り当てられます。そして、そのポートには、そのサブネット宛て以外のIPパケットが流入しないように制御されます。
また、フィルタリング機能により、TCP/UDP層のポート番号を認識し、設定したポート番号を持つIPパケットの流入をさせないようにすることもできます。
インターネットとは、これら機器を組み合わせて接続されているネットワーク機器の集合体のことです。適切に設定されたネットワーク機器を接続することで、階層化された各パケットが経路づけ(ルーティング)され、しかるべき装置までは運ばれます。
■ まとめ
データリンク層、ネットワーク層、トランスポート層のプロトコルは、送信元から宛先にパケットを運ぶためのルーティング制御を目的とする様々なプロトコルが駆動しています。例えば、SPF、OSPF、BGP、VXLANなどがあります。
また、ネットワークセキュリティを確保するため、データリンク層のIPsecプロトコル、トランスポート層・セッション層のSSLプロトコルを使ったVPN(Virtual Private Network)が使われます。ネットワーク機能がもつパケットのフィルタリング機能にも、L2SWで実施されるDHCPスヌーピングやIGMPスヌーピングなどの機能が付加され、不要なパケットの流出を防止しています。
これらによって、ますます大規模化・複雑化するネットワークにおいて、安定的かつ安全にパケット制御できる仕組みが取り入れられています。
イーサネット、IP、ICMP、UDP/TCPといった従来のプロトコルに加え、これらの新しいプロトコルを組み合わせるには、個別のプロトコル精通し、整合性のとれた緻密なネットワークを全体最適化できる高度なスキルが必要とされます。
ソフトウェア開発・システム開発業務/セキュリティ関連業務/ネットワーク関連業務/最新技術に関する業務など、「学習力×発想力×達成力×熱意」で技術開発の実現をサポート。お気軽にお問合せ下さい