はじめに
現代のテクノロジーの世界において、どのようにネットワークが機能しているかについての深い知識を持つことは必須要件となっています。サーバー管理に携わっている場合、それがどのように機能するかを確実に把握しておく必要があります。サービスの内部動作に関する詳細な知識を持つことは、サービスを適切に維持するのに役立ちます。これにより、最適なソリューションを採用し、接続をスムーズに維持できるようになります。
このガイドの目的は、ネットワークの世界をナビゲートするために必要な不可欠な知識を身につけていただくことです。これには、最も一般的に使用される用語や、ネットワークで採用されている基本概念が含まれます。さまざまなコンポーネントについて知ることで、問題をできるだけ早く防止し、特定することができます。そうすることで、迅速に対処し、ダウンタイムを最小限に抑えることができます。
現在サーバーを管理している方も、将来管理する予定の方も、このチュートリアルをガイドラインとしてご活用ください。サーバーの機能について深く掘り下げる前に、コンポーネントと特性を学びましょう。ここでは、ネットワークとサーバー管理の核心部分について説明します。それでは始めましょう!
最も一般的なネットワーク用語
レイヤーやコンポーネントについて深く掘り下げる前に、この環境で使用する言語を理解する必要があります。このリストには、聞き覚えのある用語がたくさんあるでしょう。これらは私たちの誰もが日常的に使用しているものですが、そのほとんどは実際の意味を知りません。サーバーとネットワークの文脈において、これらの基本用語を理解できるようお手伝いします。これにより、多くのプロセスをより簡単に追跡し、理解できるようになります。これらの用語は、ガイドを進める中で引き続き使用し、さらに詳しく説明していきます。
- 接続
ネットワークとは、さまざまな接続によってリンクされたコンポーネントの網の目です。しかし、ネットワークの文脈において、それは何を意味するのでしょうか?
ネットワークにおける接続とは、ネットワーク内を移動するデータまたは情報を構成します。実際にネットワーク内の2つのポイント間でデータを転送する前に、接続を確立する必要があります。環境のプロトコルによって、この接続を確立する方法が決まります。データの転送が完了したら、接続を閉じることができます。
- パケット
ネットワークの基本単位であるパケットへようこそ。もしデータが有形の物質だとしたら、別の場所に安全に発送するために、さまざまなパケットに整理しなければならないでしょう。同様に、デジタルネットワークであっても、転送前にデータをパケットに入れる必要があります。これによりデータが個別の断片に分割され、ネットワーク内での通信が容易になります。
データパケットは通常、2つの主要な部分で構成されています。ヘッダー部分とメイン部分です。ヘッダー部分はパケットの本体の前に配置されます。これには、パケットとその詳細に関する情報が含まれています。たとえば、パケットの送信元、送信先、タイムスタンプ、ネットワークホップ数、およびその他のいくつかの詳細情報が含まれる場合があります。
パケットのメイン部分は、予想通り、実際のデータで構成されています。ボディまたはペイロードとも呼ばれ、これはネットワーク内の別のポイントに転送したい情報です。
- インターフェース
インターフェースを考えるとき、ダッシュボードのようなものを思い浮かべるでしょう。それは、残りの操作を制御するために相互作用できるプラットフォームです。このような設定では、インターフェースは仮想または物理的なものになります。仮想またはデジタルインターフェースは、ソフトウェアを介してアクセスされます。物理インターフェースは、物理デバイスまたは何らかのハードウェアに関連付けられます。関連付けられた特定のインターフェースを使用して、ネットワークを修正、変更、および制御できます。
- LAN
私たちの多くは、おそらくLANやWANという用語を聞いたことがあるでしょう。 という言葉はよく耳にするかもしれません。しかし、LANがLocal Area Network(ローカルエリアネットワーク)の略であることをご存知でしたか?その仕組みは、その名前から理解することができます。ローカルエリアネットワークは、データをローカルな範囲内のみに制限します。つまり、LAN上のデータにはインターネットの他の部分からアクセスすることはできません。自宅やオフィスのネットワークなど、設定した境界内に留まります。
- WAN
一方、WANはWide Area Network(ワイドエリアネットワーク)の略です。すでにお分かりかと思いますが、このネットワークはより広い範囲をカバーしています。これらのネットワークは通常大規模で、長距離に及び、多くの場合インターネット全体を指します。したがって、インターフェースがWANに接続されている場合は、インターネットを使用してアクセスできます。
- プロトコル
プロトコルは、ルールブックの取扱説明書のようなものと考えてください。これは、特定のネットワーク内のすべてのコンポーネントが遵守しなければならないすべてのルールと標準を定義します。システムが内部で通信するために使用する言語が含まれています。ネットワークでは、UDP、IP、HTTPなど、さまざまな種類のプロトコルが使用されています。低レベルのものもあれば、アプリケーション層のものもあります。このガイドの後半で、ネットワークプロトコルの世界について詳しく説明します。
- ポート
マシン上のポートはアドレスです。このポートは通常、ソフトウェアの一部に接続されています。ポートの目的は、サーバーと複数種類のアプリケーション間の通信を可能にすることです。
- ファイアウォール
コンピューターを使ったことがあるなら、ファイアウォールについて聞いたり、そのポップアップを見たりしたことがあるでしょう。ファイアウォールは、システムにセキュリティを提供するプログラムです。システムに出入りするトラフィックを制限および監視することによってこれを行います。サーバーのファイアウォールについて言えば、どのトラフィックがサーバーに出入りできるようにすべきかを決定するプログラムです。これを行うために、特定のルールを設定できます。これらのルールを使用して、どのポートがサーバーとの間でトラフィックを送受信できるようにするかを決定できます。また、特定のポートをブロックして、そのポートとサーバー間の通信を防ぐこともできます。
ファイアウォールの設定と使用を開始するには、以下のチュートリアルをご覧ください。
- NAT
NATはNetwork Address Translation(ネットワークアドレス変換)の略です。NATは物理LANで使用され、特定のIPアドレスからのリクエストを関連するサーバーにルーティングするために使用されます。LAN内のバックエンドサーバーを監視し、受信リクエストを変換して正確なルーティングを行います。
- VPN
VPNはVirtual Private Network(仮想プライベートネットワーク)の略です。VPNは、セキュリティとプライバシーのために使用できるデジタルツールです。IPアドレスをマスクし、ハッカーや覗き見からデータパケットを保護します。これにより、インターネットを介して個別のLANやリモートシステムを安全に接続できます。
以下のチュートリアルを参考に、VPN接続のセットアップを始めましょう。
- ハウツーガイド:VPNネットワークをCloudSigmaインフラストラクチャに接続する
- OpenVPN Access Serverを使用してDockerで独自のVPNサーバーを実行する
- Ubuntu 18.04でOpenVPNをセットアップする
これらは、ネットワークの世界で最も基本的で一般的に使用されている用語の一部です。もちろん、このリストですべてを網羅することはできません。しかし、ネットワーク層やプロトコルについて深く掘り下げていくにつれて、学習を続けることができます。これらの用語を、その後のネットワークシステムに関する知識を構築するための基礎として活用してください。
さまざまなネットワーク層
いくつかの用語の意味が分かったところで、ネットワークの構成に進みましょう。特定のネットワークにおける接続は、水平方向の階層として捉えることができます。各層は、生データを抽象化してユーザーやアプリケーションの通信をよりシンプルにする技術とプロトコルで構成されています。その目的は、さまざまな種類のトラフィックを処理するための新しいプロトコルを開発するのに必要な時間と労力を削減することです。
以下で説明するように、ネットワーキングのレイヤーに関しては異なるモデルが存在します。しかし、モデルに関係なく、データパスは同じです。データは、マシンから送信される際に経路の最上部から始まります。そして、さまざまなレイヤーを通過します。経路の最後で、別のマシンに転送されます。もう一方のマシンでは、すべてのレイヤーを遡って移動します。各レイヤーは、前のレイヤーから受け取ったデータを包み込み、次のレイヤーがそのデータを処理するのを支援します。
ここでは、ネットワーキングレイヤーの2つのタイプのモデル、OSIモデルとTCP/IPモデルについて説明します。

OSIモデルとTCP/IPモデル
OSIモデル
OSIモデルはOpen Systems Interconnect(開放型システム間相互接続)の略です。このモデルは7つの異なるレイヤーで構成されています。
- アプリケーション
これは、ユーザー(またはあなた自身)が最も頻繁にやり取りする、最も外側のレイヤーです。アプリケーションレイヤーを介して、監視や設定を行うことができます。ネットワーク通信、リソースの可用性、およびデータの同期に関する情報を提供します。
- プレゼンテーション
このレイヤーは、リソースマッピング、データ変換、コンテキスト作成など、複数の処理を担当します。プレゼンテーションレイヤーは、下位レベルからデータを受け取り、アプリケーションレイヤーが理解できる形式に変換します。
- セッション
セッションレイヤーは、ネットワークにおける接続を担当します。このレイヤーを使用して、新しい接続を作成したり、不要な接続を破棄したり、あるいは単に現在の接続を維持したりすることができます。
- トランスポート
トランスポートレイヤーの役割は、それ以降のレイヤーに信頼性の高い接続を提供することです。送受信するデータの整合性を検証することで、接続の信頼性を確保します。つまり、後続のレイヤーに送信したデータが、損失や破損なく無事に届いたかどうかを確認できます。転送の途中で一部のデータが脱落した場合、このレイヤーにはそれを再送する機能があります。
- ネットワーク
ネットワークレイヤーは、データにルーティングを提供する役割を果たします。ネットワークを構成するさまざまなノード間で通信を行い、コンピュータのアドレスを使用してデータがどこに行くべきかを指示します。それだけでなく、ネットワークレイヤーはノード間で簡単に転送できるようにデータを小さなメッセージに分割します。メッセージは目的地に到達すると、コンパイルされ、正確に組み立てられます。
- データリンク
データリンクレイヤーは、ネットワーク内のノード間で永続的かつ信頼性の高いリンクを維持する役割を担っています。物理的な接続と連携して、デバイス間のリンクを確立し、保持します。
- 物理
最後に、物理レイヤーは、接続が存在する物理的で具体的なデバイスを扱います。このレイヤーには、ハードウェアと、それが使用しているソフトウェアが含まれます。
TCP/IPモデル
2つ目のモデルはTCP/IPモデルです。IPまたはインターネットプロトコルスイートとしても知られるこのモデルは、非常に人気のあるネットワーキングモデルです。これは、比較的抽象的で柔軟なレイヤーモデルであるためです。その流動性により、実装が容易になります。
OSIモデルの7つのレイヤーとは異なり、4つのレイヤーしかありません。以下に示すように、これらのレイヤーの多くは、OSIレイヤーモデルで見られるものと類似しています。
- アプリケーション
ここで、アプリケーションレイヤーの役割は、データの作成と転送です。個々のアプリケーションはリモートサーバー上に存在します。各アプリケーションは、ユーザーにとってはローカルで動作しているように見えます。アプリケーションレイヤーはユーザーデータを作成し、さまざまなアプリケーション間で送信します。
- トランスポート
トランスポートレイヤーは、システム内の通信を仲介する役割を果たします。ここでも、ポートが重要になってきます。トランスポートレイヤーはポートを使用して、ネットワーク上の異なるサービス間に信頼性の低い接続や信頼性の高い接続を確立します。確立する接続のタイプは、使用するプロトコルのタイプによって異なります。
- インターネット
ここが、IPモデルがOSI階層モデルと異なる点です。この手法におけるインターネット層は、ノード間のデータ転送を担当します。接続そのものには関与しません。むしろ、接続のエンドポイントに関する知識を利用してデータを転送するだけです。IPアドレスを通じて送信元と送信先を識別します。
- リンク
最後に、リンク層はリモートシステムにアイデンティティを与えるものです。ローカルネットワークとそれを構成するノードのアドレス指定可能性を確立します。これにより、その後インターネット層がデータを送信できるようになります。
ネットワークインターフェース
用語とネットワーク階層の基本を学んだ後は、インターフェースに進むことができます。ご存知のように、インターフェースは基本的に通信ポイントです。ほとんどのサーバーには、イーサネットまたはワイヤレスインターネットカードごとに1つのインターフェースがあります。好みや要件に基づいてインターフェースを構成できます。ネットワーク内の各インターフェースには、対応するネットワークデバイスが存在します。このデバイスは仮想または物理のいずれかです。
サーバーがセットアップする仮想ネットワークインターフェースの1つが、ループバックまたはローカルホストインターフェースです。ほとんどのツールでは、これを「lo」インターフェースと呼びます。このインターフェースの役割は、さまざまなコンピューター上のアプリケーションやプロセスを接続することです。
システムに存在するもう1つのインターフェースは、インターネットへのトラフィックを処理するためのものです。これは通常、管理者によってセットアップされます。また、LANやプライベートネットワーク用のインターフェースが必要になる場合もあります。
データ転送用プロトコル
ネットワークに関する基礎知識を完成させるために最後に必要なのは、プロトコルです。プロトコルとは、システム内の動作を定義し、ネットワークを機能させるものです。プロトコルは互いに重なり合い、データはそれらすべてを介して送信されます。
次に、よく使用されたり耳にしたりする代表的なプロトコルについて説明します。目的は、それらの違いと、特定のプロセスにおいてなぜ重要なのかを理解することです。
- メディアアクセス制御
まず、リンク層で動作する通信プロトコルから始めます。メディアアクセス制御プロトコルは、アドレスを通じてさまざまなデバイスを区別するのに役立ちます。メディアアクセス制御(MAC)アドレスは、特定のデバイスの識別情報を指定します。
各デバイスは製造時にMACアドレスを取得し、それは完全に一意です。その結果、ネットワークはMACアドレスを使用してインターネット上のすべてのデバイスを識別できます。つまり、ソフトウェアがデバイスの名前を変更したとしても、ネットワークは依然としてハードウェアを識別します。
- IP
IPプロトコルは、ネットワークにおいて最も普及しているプロトコルの1つです。これは、インターネットを動かすプロトコルの1つだからです。私たちのデジタルデバイスが一意の“IPアドレス”を持っていることは誰もが知っています。IP/TCPモデルのインターネット層に属するIPプロトコルには、いくつかの異なる実装があります。最も一般的には、IPv4とIPv6が使用されます。後者はIPv4の改良版です。
IPプロトコルの仕組みは、単一の宛先との接続を確立するために複数の経路を作成することです。これは、トラフィックがネットワークをまたぐ際に、信頼性の低いネットワークを想定しているためです。プロトコルは経路を動的に切り替えることができます。
- ICMP
ICMPはInternet Control Message Protocol(インターネット制御メッセージプロトコル)の略です。これは、特にpingやtracerouteなどのネットワーク診断ツールに役立つプロトコルです。ICMPは、デバイス間でメッセージを送信することで、エラーや可用性を示すことができます。ネットワーク内の他のデータパケットがその経路で何らかの問題に遭遇したときに、このプロトコルはパケットを送信します。ICMPは転送中のエラーを検出します。
- TCP
TCPはTransmission Control Protocol(送信制御プロトコル)の略です。IP/TCP階層モデルのトランスポート層に属するTCPは、データのパッケージングと転送に関与しています。これは、私たちのインターネットを支配する最も重要なプロトコルの1つです。
データ転送を行う前に、プロトコルは接続を確立する必要があります。これを行うために、TCPは3ウェイ・ハンドシェイクを使用します。ここでは、通信回線内の2つのエンドポイントが要求を受け入れ、データ送信のための信頼性の高い接続を確保する必要があります。
ネットワークにおいてさまざまな機能を実行します。まず、データをパケットにカプセル化し、関連する接続を介して転送します。次に、TCPはシステム内のエラーをチェックします。それだけでなく、アプリケーション層向けにデータパケットを組み立てることも可能です。データが宛先に到達すると、TCPは4ウェイ・ハンドシェイクを使用して接続を終了します。
- UDP
UDPはuser datagram protocolの略です。トランスポート層でも使用されるため、多くの人がTCPと組み合わせて使用することがよくあります。TCPとの違いは、信頼性の低い接続を確立することです。信頼性の低いデータ転送とは、プロトコルが、接続のもう一方の端でデータが安全に受信されたかどうかを確認しないことを意味します。
そもそもなぜ信頼性の高い接続ではなく、信頼性の低い接続を使用するのかと思うかもしれません。しかし、UDPが提供するような信頼性の低いデータ転送には、多くの有用な用途があります。例えば、時間が極めて重要となるアプリケーションでUDPが実装されます。データが受信されたという確認を待つ代わりに、システムは単に送信元からデータを送り出します。そのため、ゲームやVOIPなどでその使用が見られます。
- HTTP
HTTPはhypertext transfer protocolの略です。すべてのウェブサイトがこの4文字で始まることを考えると、このプロトコルには馴染みがあるはずです。アプリケーション層に実装されているHTTPは、ユーザーが何を要求しているかをシステムが認識するのに役立つ機能を定義します。
例えば、機能にはGET、POST、DELETEなどがあります。これらはそれぞれデータと異なる方法で相互作用し、名前が示すアクションを実行します。このように、HTTPはインターネット上またはインターネットを介したシステムの通信を担っています。
- FTP
FTPはfile transfer protocolの略です。これもアプリケーション層に実装されており、ホスト間でファイルを転送する役割を担っています。ただし、これが安全なプロトコルではないことを覚えておくことが重要です。そのため、主に公開された環境で使用されます。
- DNS
DNSはdomain name systemの略です。インターネットリソースに簡単に名前を付けることができる、もう一つのアプリケーション層プロトコルです。名前は人間にとって分かりやすく、ドメインをIPアドレスに接続するため、簡単にアクセスできます。
- SSH
SSHはsecure shellの略で、アプリケーション層のプロトコルです。その名の通り、エンドツーエンドで暗号化されたプロトコルです。これを使用することで、リモートサーバーとの通信をより安全にすることができます。非常に普及しているプロトコルであるため、多くの追加技術がこれを中心に構築されています。
さらに、SSHプロトコルの実装に関する詳細なチュートリアルを以下に紹介します:
- SSH鍵ベースの認証を使用するためのLinuxサーバーの設定
- UbuntuでSSHを使用してリモートサーバーに接続する方法
- このシンプルなBashスクリプトを使用してクラウドサーバーにSSH鍵を自動的に注入する方法
結論
最後に、これでネットワークの基本について理解できたはずです。事前に関連用語を確認しておくことで、今後の作業がよりスムーズになります。言うまでもなく、サーバーの可能性を最大限に引き出す機会にもなります。システム内での通信を可能にするコンポーネントや接続について把握しているからです。この知識を土台として、ネットワーク運用の世界に踏み出しましょう。
ハッピー・コンピューティング!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。