サーバと双璧をなすインフラの中核「ネットワーク」を知ろう
はじめに
みなさん、こんにちは。第3回の今回は、インフラの中でもサーバと双璧をなす「ネットワーク」について解説します。システムが複雑さを増す中で、ネットワークにも新たな技術が生まれてきており、インフラエンジニアに期待される領域も年々増しています。ネットワークの世界は表面的には「つながる」「つながらない」の分かりやすいものですが、内部的には非常に深い世界が待っています。本記事では、よく使用されるネットワーク技術にフォーカスして解説していきます。
ネットワークとは
一般的には人やモノを網状につなげたものを「ネットワーク」と呼びます。システムの世界では、主にコンピュータを相互につなげたものが「ネットワーク」になりますが、その特徴から「コンピュータネットワーク」と呼ばれることもあります。インフラ技術には栄枯盛衰がありますが、現在のネットワークにおける主役は「TCP/IP」です。TCP/IPは「Transmission Control Protocol/Internet Protocol」の略で、TCPやIPといった後述するプロトコル(取り決め、手順)の集合体となります。
TCP/IPは元々インターネットを支える技術でしたが、インターネットの広がりとともにLAN環境でも使用されるようになり、最近ではTCP/IPを使用しないネットワークを見つける方が難しくなりました。コンピュータをTCP/IPでつなげたものがネットワークと言っても過言ではないでしょう。
LAN
LANは「Local Area Network」の略で、家庭や企業の拠点内に閉じたネットワークを指します。また、LANをお互いにつなげたものをWAN(Wide Area Network)と言います(図1)。最近では社員1人にパソコン1台が当たり前になってきていますが、オフィス内のそれぞれのパソコンやサーバを接続するためにLANを組んでいます。さらに、東京と大阪にオフィスがあれば、それぞれのオフィス内でLANを組み、NTTやKDDI等の回線を利用してオフィス間を接続することでWANを組んでいます。
TCP/IP
1. 階層構造による通信
TCP/IPはプロトコル(取り決め、手順)の集合体と説明しましたが、処理フローから見ると4階層の構造になっています(図2)。データを送信するコンピュータは、この階層構造に従って上から下へと処理を行い、データを受信するコンピュータは逆に下から上へと処理を行っていきます。
イメージしづらいと思いますので、具体的に各層でどのような処理が行われているのかを見ていきましょう。図3は処理をイメージ化したものですが、各層では受け取ったデータに付加情報(ヘッダ)を付けたり、削除したりすることでコンピュータ間の通信を実現しています。基本的に各層ではその層に必要な情報(図中の赤色箇所)だけを確認して処理を行い、次の層へとデータを渡していきます。
例として、カニ漁師さんが契約する旅館に郵便でカニを届ける場合に置き換えて説明してみます。まず、カニがデータに該当します。契約の段階で漁師さんと旅館の仕入担当者間でカニの種類や加工などを取り決め(アプリケーション層に該当)、種類や加工状態を記載した札(ヘッダ)をカニに巻き付けます。次に、カニを段ボール箱に入れ、旅館側の受取窓口である仕入担当者名や全部で何箱あるのかなどを札(ヘッダ)に記載します(トランスポート層に該当)。さらに、札(ヘッダ)に旅館の住所を記載して(インターネット層に該当)郵便局に持っていくと、バイクや車で契約先の旅館まで配達をしてくれます(ネットワークインタフェース層に該当)。
2. Web通信の例
まだイメージしづらいと思いますので、Web通信を例に具体的な処理内容を見てみましょう。
アプリケーション層
ブラウザでWebサイトを見る際は、HTTP(Hyper Text Transfer Protocol)というプロトコルに従って閲覧要求用のデータがブラウザによって生成されます。図4は実際の通信データを専用ソフトで見たものです。様々な情報が羅列されていますが、BFTという会社のホームページに関する閲覧要求であることが見て取れます。
トランスポート層
Webサーバ側でApacheというミドルウェアが要求に応答していましたが、なぜApacheは自分が応答するべきだと分かったのでしょうか。これはポートという仕組みで実現しています。カニ漁師の例では旅館側の受取窓口と表現していましたが、コンピュータにもポートという窓口が65,536個用意されており、窓口ごとに対応するソフトウェアが決まっています。Web通信では通常80番ポートを使用することが多いため、クライアントはWebサーバの80番ポート宛にデータを送信し、Webサーバでは80番ポートにデータが届いたのでApacheが自分宛てのデータだと認識して処理したのです(図6)。
インターネット層
住所に該当する層で、ここで活躍するのがIP(Internet Protocol)というプロトコルです。プロトコルなので取り決めがあるわけですが、重要な取り決めとしてIPアドレスという住所に該当するものがあります。図7では送信元のコンピュータが”192.168.100.7”、宛先のコンピュータが”210.129.213.248”というアドレスを使用していることが見て取れます。
ネットワークインタフェース層
住所が分かったら配達するためのバイクや車が必要となるように、宛先となるサーバが分かったらデータを運ぶための媒体が必要になります。有線ネットワークにおける技術の主流はイーサネットですが、ネットワークにつながる機器には全てMACアドレスと呼ばれる世界で一意のアドレスが付与されており、このアドレスで住所を識別しています。
MACアドレスは同一ネットワークにおけるダイレクト通信時に使用されます。インターネット層の転送先IPアドレスが決まるとIPアドレスに対応したMACアドレスを確認し、データを送信します。図8でも宛先のMACアドレスが表示されていますが、これはWebサーバのMACアドレスではなく、クライアントが次に転送する先のゲートウェイのMACアドレスです。
IPアドレスとMACアドレスの2つのアドレスが存在する理由は、TCP/IPとイーサネットの規格化が別々に進められたという歴史的な背景もあります。しかし、2層に分かれることで設計に柔軟性が生まれるなどメリットも多くあります。例えば、ネットワークカードが壊れても通信が途切れないようにネットワークカードを2枚使用して冗長化することがありますが、ネットワークカードそれぞれにMACアドレスが振られているため、2つのMACアドレスで1つのIPアドレスを共有する構成になります。この場合、クライアントは2枚のネットワークカード(ネットワークインタフェース層)を意識する必要はなく、1つのIPアドレスだけ意識すれば良いことになります。
連載を通して、インフラエンジニアが関わる「プロジェクト」に注目し、さまざまな側面から解説していく本コラム。今回は、要件定義について解説します。
要件定義では、お客様にヒアリングしながらシステムの要件を明確にしていくのですが、システム要件には「機能要件」と「非機能要件」の2つが存在します。機能要件はシステムに搭載するべき機能のことで、大きな項目で言うと顧客管理機能やメンテナンス機能といったものです。業務機能に関する内容であることから、アプリケーション担当者がメインでまとめることが多くなります。
一方、非機能要件は機能要件以外でシステムに備えるべき要件であり、具体的には下記のような内容です。
- 可用性: システムの運用時間や稼働率についての要件
- 性能・拡張性: システムの性能やアクセス・データ量の増加に対する拡張性の要件
- 運用・保守性: システムの運用・保守のサービスレベルに対する要件
- 移行性: 移行期間や移行時に許容できる停止時間などの要件
- セキュリティ: システムのセキュリティ強度に対する要件
非機能要件はインフラの観点が大きな割合を占める項目が多いことから、インフラ担当がメインで動くことも多くなります。ただし、性能といった項目ではアプリケーションの観点が大きな割合を占め、また他の項目もインフラだけで閉じる内容ではないため、実際にはアプリケーション担当とインフラ担当が協力しながら実施していきます。
ユーザ企業のシステム部門は業務機能のプロであり、インフラについてはSIerに一任しているケースが多く見られます。したがって、ユーザとの非機能要件についての議論がうまく進まないことも往々にしてあります。非機能要件の内容により必要となるインフラは全く異なるため、要件定義ではインフラエンジニアとしての知識・経験と提案力が試されると言えるでしょう。
(第4回へ続く)
ネットワーク機器
ここからは、システムでよく使用されるネットワーク機器を紹介していきます。特に最近ではアプリケーション層まで処理するネットワーク機器が増えてきており、インフラエンジニア(ネットワークエンジニア)も幅広い知識が求められます。
1. スイッチ
コンピュータやネットワーク機器を接続してLANを組む際に使用します。最近のシステムではL2スイッチとL3スイッチがよく使用されます。L2スイッチはネットワークインタフェース層までの処理を、L3スイッチはインターネット層までの処理を担当します(図9)。
なお、L3スイッチではVLAN(Virtual LAN)という機能により複数のネットワークに分割できる、ハードウェアレベルでIPルーティングが可能といった点がメリットです。
2. ルータ
LAN同士を組み合わせてWANを組む際に使用し、インターネット層までの処理を担当します(図10)。ルータはソフトウェアでルーティング処理を行うため、ハードウェアでルーティングを行うL3スイッチと比較すると処理速度がデメリットですが、様々なプロトコルに対応している点がメリットです。したがって、WANの接続に複雑なプロトコルが必要となる場合に使用されるケースが多くなります。
3. ファイアウォール
インターネットとの境界やLANとLANの境界、LANとWANの境界に配置されることが多い機器です。ファイアウォールはトランスポート層まで処理を行うことができ、IPアドレスやポート番号の情報を基に通信を許可したり、遮断したりといったフィルタリングを行います(図11)。
最近では、Webアプリケーションを狙った攻撃から守るため、Webアプリケーションに特化してファイアウォールを提供するWAF(Web Application Firewall)と呼ばれる製品も目にする機会が増えてきています。これらの製品は、アプリケーション層やデータ内容まで検査することでWebアプリケーションを攻撃から守ります。
4. ロードバランサ
WebサーバやAPサーバの前段に配置して、負荷状況により送信先のサーバを変えたり、パケットの内容に従って送信先のサーバを変えたりする機能を持つネットワーク機器です。アプリケーション層まで処理ができ、HTTPヘッダの内容に応じて送信先のサーバを変えるといった柔軟な動作も可能です(図12)。
おわりに
今回は、「ネットワーク」について解説しました。今回紹介した内容はあくまでもネットワークの一部です。ネットワークの分野でインフラエンジニアとして活躍するためには、もう少し詳細な知識を身に着ける必要があります。TCP/IPに関しては良書が数多く出版されているので、ぜひ何冊か読んでみることをお勧めします。
次回は、「仮想化とクラウド」をテーマに解説します。昨今、新たなインフラ技術として注目を浴びている仮想化とクラウドは、ここ数年で一気に利用されるケースが増えました。物理とは異なる概念が多く出てきますので、次回も楽しみにしていてください!