序章


サーバーを管理する人にとって、ネットワークの基本的な理解は重要です。 サービスをオンラインにしてスムーズに実行するために不可欠であるだけでなく、問題を診断するための洞察も得られます。

このドキュメントでは、いくつかの一般的なネットワークの概念の基本的な概要を説明します。 基本的な用語、一般的なプロトコル、およびネットワークのさまざまな層の責任と特性について説明します。

このガイドはオペレーティングシステムに依存しませんが、サーバーでネットワークを利用する機能やサービスを実装する場合に非常に役立ちます。

ネットワーキング用語集


ネットワークについて深く議論する前に、このガイド全体、およびネットワークに関する他のガイドやドキュメントに表示されるいくつかの一般的な用語を定義する必要があります。

これらの用語は、以下の適切なセクションで拡張されます。

  • 接続:ネットワークでは、接続とは、ネットワークを介して転送される関連情報の一部を指します。 これは通常、接続がデータ転送の前に(プロトコルに示されている手順に従って)構築され、データ転送の最後に分解されることを意味します。

  • Packet :パケットは、一般的に、ネットワークを介して転送される最も基本的な単位です。 ネットワークを介して通信する場合、パケットは、一方のエンドポイントからもう一方のエンドポイントにデータを(分割して)伝送するエンベロープです。

    パケットには、送信元と宛先、タイムスタンプ、ネットワークホップなどのパケットに関する情報を含むヘッダー部分があります。 パケットの主要部分には、転送される実際のデータが含まれています。 本体またはペイロードと呼ばれることもあります。

  • ネットワークインターフェイス:ネットワークインターフェイスは、ネットワークハードウェアへのあらゆる種類のソフトウェアインターフェイスを参照できます。 たとえば、コンピュータに2つのネットワークカードがある場合、それらに関連付けられている各ネットワークインターフェイスを個別に制御および構成できます。

    ネットワークインターフェイスは、物理デバイスに関連付けられている場合もあれば、仮想インターフェイスの表現である場合もあります。 ローカルマシンへの仮想インターフェイスである「ループバック」デバイスは、この例です。

  • LAN :LANは「ローカルエリアネットワーク」の略です。 これは、より大きなインターネットに公的にアクセスできないネットワークまたはネットワークの一部を指します。 家庭またはオフィスのネットワークはLANの例です。

  • WAN :WANは「ワイドエリアネットワーク」の略です。 これは、LANよりもはるかに広範なネットワークを意味します。 WANは、一般に大規模で分散したネットワークを表すために使用する関連用語ですが、通常、インターネット全体を意味することを意味します。

    インターフェイスがWANに接続されていると言われる場合、通常、インターネットを介して到達可能であると見なされます。

  • プロトコル:プロトコルは、デバイスが通信に使用できる言語を基本的に定義する一連のルールと標準です。 ネットワーキングで広く使用されているプロトコルは多数あり、それらは多くの場合、異なる層に実装されています。

    低レベルのプロトコルには、TCP、UDP、IP、およびICMPがあります。 これらの下位プロトコルに基づいて構築されたアプリケーション層プロトコルのよく知られた例には、HTTP(Webコンテンツにアクセスするため)、SSH、TLS / SSL、およびFTPがあります。

  • ポート:ポートは、特定のソフトウェアに関連付けることができる単一のマシン上のアドレスです。 これは物理的なインターフェースや場所ではありませんが、サーバーが複数のアプリケーションを使用して通信できるようにします。

  • ファイアウォール:ファイアウォールは、サーバーに入るトラフィックと出るトラフィックのどちらを許可するかを決定するプログラムです。 ファイアウォールは通常、どのタイプのトラフィックがどのポートで受け入れられるかについてのルールを作成することによって機能します。 通常、ファイアウォールは、サーバー上の特定のアプリケーションによって使用されていないポートをブロックします。

  • NAT :NATはネットワークアドレス変換の略です。 これは、ルーティングサーバーに着信する要求を、LAN内で認識している関連するデバイスまたはサーバーに変換する方法です。 これは通常、1つのIPアドレスを介して必要なバックエンドサーバーに要求をルーティングする方法として、物理LANに実装されます。

  • VPN :VPNは仮想プライベートネットワークの略です。 これは、プライバシーを維持しながら、インターネットを介して別々のLANを接続する手段です。 これは、多くの場合セキュリティ上の理由から、リモートシステムをローカルネットワーク上にあるかのように接続する手段として使用されます。

あなたが出くわすかもしれない他の多くの用語があります、そしてこのリストは網羅的である余裕がありません。 他の用語については、必要に応じて説明します。 この時点で、今後のトピックについてより適切に議論できるようにする、いくつかの基本的な高レベルの概念を理解する必要があります。

ネットワークレイヤー


ネットワークはトポロジの観点から水平方向に議論されることがよくありますが、ホスト間では、その実装はコンピュータまたはネットワーク全体で垂直方向に階層化されます。

これが意味するのは、通信がより簡単に機能するために、互いに積み重ねられた複数のテクノロジーとプロトコルがあるということです。 連続する上位レイヤーはそれぞれ、生データをもう少し抽象化し、アプリケーションとユーザーが簡単に使用できるようにします。

また、これらのタイプのトラフィックを処理するプロトコルとアプリケーションを開発するために時間とエネルギーを投資することなく、新しい方法で下位層を活用することもできます。

各レイヤリングスキームについて話すために使用する言語は、使用するモデルによって大幅に異なります。 レイヤーの説明に使用されるモデルに関係なく、データのパスは同じです。

データは1台のマシンから送信されるため、スタックの最上位から始まり、下向きにフィルタリングされます。 最も低いレベルでは、別のマシンへの実際の送信が行われます。 この時点で、データは他のコンピューターのレイヤーを経由して戻ってきます。

各レイヤーには、隣接するレイヤーから受信するデータの周囲に独自の「ラッパー」を追加する機能があります。これにより、データが渡されたときにデータをどのように処理するかを決定するのに役立ちます。

OSIモデル


歴史的に、ネットワーク通信のさまざまな層について話す1つの方法は、OSIモデルです。 OSIはOpenSystemsInterconnectの略です。

このモデルは、7つの別々のレイヤーを定義します。 このモデルのレイヤーは次のとおりです。

  • アプリケーション:アプリケーション層は、ユーザーとユーザーアプリケーションが最も頻繁に対話する層です。 ネットワーク通信については、リソースの可用性、通信するパートナー、およびデータ同期の観点から説明します。

  • プレゼンテーション:プレゼンテーション層は、リソースのマッピングとコンテキストの作成を担当します。 これは、低レベルのネットワークデータをアプリケーションが期待するデータに変換するために使用されます。

  • セッション:セッション層は接続ハンドラーです。 永続的な方法でノード間の接続を作成、維持、および破棄します。

  • Transport :トランスポート層は、その上の層に信頼性の高い接続を渡す役割を果たします。 このコンテキストでは、信頼性とは、接続のもう一方の端でデータの一部が無傷で受信されたことを確認する機能を指します。

    このレイヤーは、ドロップまたは破損した情報を再送信し、リモートコンピューターへのデータの受信を確認できます。

  • ネットワーク:ネットワーク層は、ネットワーク上の異なるノード間でデータをルーティングするために使用されます。 アドレスを使用して、情報を送信するコンピューターを判別できるようにします。 このレイヤーは、大きなメッセージを小さなチャンクに分割して、反対側で再アセンブルすることもできます。

  • データリンク:このレイヤーは、既存の物理接続を使用して、ネットワーク上のさまざまなノードまたはデバイス間の信頼性の高いリンクを確立および維持する方法として実装されます。

  • 物理:物理層は、接続に使用される実際の物理デバイスを処理する役割を果たします。 この層には、物理接続とハードウェア自体(イーサネットなど)を管理するベアソフトウェアが含まれます。

ご覧のとおり、ベアハードウェアへの近接性とそれらが提供する機能に基づいて説明できるさまざまなレイヤーがあります。

TCP/IPモデル


より一般的にインターネットプロトコルスイートとして知られているTCP/IPモデルは、より単純で広く採用されているもう1つの階層化モデルです。 これは4つの別個の層を定義し、その一部はOSIモデルと重複しています。

  • アプリケーション:このモデルでは、アプリケーション層がアプリケーション間でユーザーデータを作成および送信します。 アプリケーションはリモートシステム上にある可能性があり、エンドユーザーにはローカルで動作しているように見える必要があります。

    通信はピア間で行われると言われています。

  • Transport :トランスポート層はプロセス間の通信を担当します。 このレベルのネットワークは、ポートを利用してさまざまなサービスに対応します。 使用するプロトコルのタイプに応じて、信頼性の低い接続または信頼性の高い接続を構築する可能性があります。

  • インターネット:インターネット層は、ネットワーク内のノードからノードにデータを転送するために使用されます。 このレイヤーは接続のエンドポイントを認識しますが、ある場所から別の場所に移動するために必要な実際の接続については気にしません。 IPアドレスは、アドレス可能な方法でリモートシステムに到達する方法としてこの層で定義されます。

  • Link :リンク層は、インターネット層がアドレス可能なインターフェイスを提示できるようにするローカルネットワークの実際のトポロジを実装します。 隣接ノード間の接続を確立してデータを送信します。

ご覧のとおり、TCP/IPモデルはもう少し抽象的で流動的です。 これにより、実装が容易になり、ネットワーク層を分類するための主要な方法になりました。

インターフェース


インターフェイスは、コンピュータのネットワーク通信ポイントです。 各インターフェイスは、物理ネットワークデバイスまたは仮想ネットワークデバイスに関連付けられています。

通常、サーバーには、使用しているイーサネットまたはワイヤレスインターネットカードごとに1つの構成可能なネットワークインターフェイスがあります。

さらに、「ループバック」またはローカルホストインターフェイスと呼ばれる仮想ネットワークインターフェイスを定義します。 これは、単一のコンピューター上のアプリケーションとプロセスを他のアプリケーションとプロセスに接続するためのインターフェースとして使用されます。 これは、多くのツールで「lo」インターフェースとして参照されていることがわかります。

多くの場合、管理者は、インターネットへのトラフィックを処理するための1つのインターフェイスと、LANまたはプライベートネットワーク用の別のインターフェイスを構成します。

DigitalOceanでは、プライベートネットワークが有効になっているデータセンターでは、VPSに(ローカルインターフェイスに加えて)2つのネットワークインターフェイスがあります。 「eth0」インターフェースはインターネットからのトラフィックを処理するように構成され、「eth1」インターフェースはプライベートネットワークと通信するように動作します。

プロトコル


ネットワーキングは、多数の異なるプロトコルを相互にピギーバックすることによって機能します。 このようにして、1つのデータを、相互にカプセル化された複数のプロトコルを使用して送信できます。

私たちは、あなたが遭遇する可能性のあるいくつかのより一般的なプロトコルについて話し、違いを説明しようとするだけでなく、それらがプロセスのどの部分に関与しているかについてのコンテキストを提供します。

下位のネットワーク層に実装されたプロトコルから始めて、より高度な抽象化を備えたプロトコルに進みます。

媒体アクセス制御


媒体アクセス制御は、特定のデバイスを区別するために使用される通信プロトコルです。 各デバイスは、製造プロセス中に一意のメディアアクセス制御アドレス(MACアドレス)を取得し、インターネット上の他のすべてのデバイスと区別することになっています。

MACアドレスでハードウェアをアドレス指定すると、最上位のソフトウェアが操作中にその特定のデバイスの名前を変更する可能性がある場合でも、一意の値でデバイスを参照できます。

媒体アクセス制御は、定期的に対話する可能性が高いリンク層からの唯一のプロトコルの1つです。

IP


IPプロトコルは、インターネットの機能を可能にする基本的なプロトコルの1つです。 IPアドレスはネットワークごとに一意であり、マシンがネットワークを介して相互にアドレス指定できるようにします。 これは、IP/TCPモデルのインターネット層に実装されています。

ネットワークは相互にリンクできますが、ネットワークの境界を越える場合はトラフィックをルーティングする必要があります。 このプロトコルは、信頼性の低いネットワークと、同じ宛先への複数のパスが動的に変更される可能性があることを前提としています。

プロトコルにはさまざまな実装があります。 今日最も一般的な実装はIPv4ですが、使用可能なIPv4アドレスの不足とプロトコル機能の改善により、代替としてIPv6の人気が高まっています。

ICMP


ICMPは、インターネット制御メッセージプロトコルの略です。 これは、デバイス間でメッセージを送信して、可用性またはエラー状態を示すために使用されます。 これらのパケットは、pingやtracerouteなどのさまざまなネットワーク診断ツールで使用されます。

通常、ICMPパケットは、別の種類のパケットが何らかの問題に遭遇したときに送信されます。 基本的に、それらはネットワーク通信のフィードバックメカニズムとして使用されます。

TCP


TCPは、伝送制御プロトコルの略です。 これは、IP / TCPモデルのトランスポート層に実装され、信頼性の高い接続を確立するために使用されます。

TCPは、データをパケットにカプセル化するプロトコルの1つです。 次に、下位層で使用可能な方法を使用して、これらを接続のリモートエンドに転送します。 一方、エラーをチェックし、特定の部分の再送を要求し、情報を1つの論理部分に再構成して、アプリケーション層に送信することができます。

プロトコルは、スリーウェイハンドシェイクと呼ばれるシステムを使用してデータ転送の前に接続を構築します。 これは、通信の両端が要求を確認し、データの信頼性を確保する方法について合意するための方法です。

データが送信された後、同様の4方向ハンドシェイクを使用して接続が切断されます。

TCPは、WWW、FTP、SSH、電子メールなど、インターネットで最も一般的に使用されている多くの用途に最適なプロトコルです。 今日私たちが知っているインターネットは、TCPなしではここに存在しないと言っても過言ではありません。

UDP


UDPは、ユーザーデータグラムプロトコルの略です。 これはTCPの一般的なコンパニオンプロトコルであり、トランスポート層にも実装されています。

UDPとTCPの基本的な違いは、UDPが信頼性の低いデータ転送を提供することです。 接続のもう一方の端でデータが受信されたことは確認されません。 これは悪いことのように聞こえるかもしれませんが、多くの目的でそうです。 ただし、一部の機能にとっても非常に重要です。

データが受信され、データの再送信が強制されたという確認を待つ必要がないため、UDPはTCPよりもはるかに高速です。 リモートホストとの接続を確立するのではなく、単にそのホストへのデータを起動し、データが受け入れられるかどうかは関係ありません。

単純なトランザクションであるため、ネットワークリソースのクエリなどの単純な通信に役立ちます。 また、状態を維持しないため、1台のマシンから多くのリアルタイムクライアントにデータを送信するのに最適です。 これにより、VOIP、ゲーム、および遅延を許容できないその他のアプリケーションに最適です。

HTTP


HTTPは、ハイパーテキスト転送プロトコルの略です。 これは、Webでの通信の基礎を形成する、アプリケーション層で定義されたプロトコルです。

HTTPは、リモートシステムに何を要求しているかを伝えるいくつかの関数を定義します。 たとえば、GET、POST、およびDELETEはすべて、要求されたデータと異なる方法で対話します。

FTP


FTPはファイル転送プロトコルの略です。 また、アプリケーション層にあり、あるホストから別のホストに完全なファイルを転送する方法を提供します。

本質的に安全ではないため、パブリックのダウンロード専用リソースとして実装されていない限り、外部向けのネットワークにはお勧めしません。

DNS


DNSはドメインネームシステムの略です。 これは、インターネットリソースに人間にわかりやすい命名メカニズムを提供するために使用されるアプリケーション層プロトコルです。 これは、ドメイン名をIPアドレスに結び付け、ブラウザで名前を使用してサイトにアクセスできるようにするものです。

SSH


SSHはセキュアシェルの略です。 これは、アプリケーション層に実装された暗号化されたプロトコルであり、リモートサーバーと安全な方法で通信するために使用できます。 エンドツーエンドの暗号化とユビキタス性により、このプロトコルを中心に多くの追加テクノロジーが構築されています。

同様に重要な、まだ取り上げていないプロトコルは他にもたくさんあります。 ただし、これにより、インターネットとネットワーキングを可能にするいくつかの基本的なテクノロジーの概要がわかります。

結論


この時点で、いくつかの基本的なネットワーク用語に精通し、さまざまなコンポーネントが相互に通信する方法を理解できる必要があります。 これは、他の記事やシステムのドキュメントを理解するのに役立ちます。