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