ネットワーキング用語、インターフェース、プロトコルの紹介

はじめに

サーバーを管理する人にとって、ネットワークの理解は重要です。サービスをオンラインでスムーズに実行するだけでなく、問題を診断する洞察力も与えてくれます。

この記事では、一般的なネットワーキングの概念について概要を説明します。用語、一般的なプロトコル、およびネットワーキングの異なるレイヤーの責任と特性について議論します。

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

ネットワーキング用語集

まず、このガイドや他のネットワーキングに関するガイドや文書で見るであろう一般的な用語をいくつか定義します。

これらの用語は後続する適切なセクションで拡張されます。

  • 接続:ネットワーキングにおいて、接続とはネットワークを介して転送される関連情報の断片を指します。一般的に、接続はデータ転送の前に(プロトコルで定められた手順に従って)確立され、データ転送の終了時に解体される場合があります。

  • パケット: パケットとは、意図的にネットワークを通じて転送される最小単位です。ネットワーク上で通信する際、パケットはデータ(一部ずつ)を送信元から宛先まで運ぶ封筒のようなものです。

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

  • ネットワークインターフェース: ネットワークインターフェースは、ネットワーキングハードウェアへのソフトウェアインターフェースを指すことがあります。たとえば、コンピュータに2つのネットワークカードがある場合、それぞれに関連付けられたネットワークインターフェースを個別に制御および設定できます。

A network interface may be associated with a physical device, or it may be a representation of a virtual interface. The “loopback” device, which is a virtual interface available in most Linux environments to connect back to the same machine, is an example of this.

  • LAN: LANは「ローカルエリアネットワーク」の略で、一般のインターネットからはアクセスできないネットワークまたはネットワークの一部を指します。自宅やオフィスのネットワークがその例です。

  • WAN:WANは「ワイドエリアネットワーク」を意味します。LANよりも広範で広がったネットワークを指します。WANは一般的には大規模で分散したネットワークを指す用語ですが、通常はインターネット全体を意味します。

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

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

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

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

  • ファイアウォール: ファイアウォールは、サーバーからのトラフィックの許可を決定するプログラムです。ファイアウォールは通常、どのポートでどの種類のトラフィックが許可されているかについてのルールを作成して動作します。一般的に、ファイアウォールはサーバー上の特定のアプリケーションで使用されていないポートをブロックします。

  • NAT: NATはネットワークアドレス変換の略です。これは、着信リクエストを関連するデバイスやLAN上のサーバーに再パッケージして送信する方法です。これは通常、物理的なLANで実装され、リクエストを1つのIPアドレスを介して必要なバックエンドサーバーにルーティングする手段として使用されます。

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

他にもさまざまな用語がありますが、このリストは完全ではありません。必要に応じて他の用語を説明します。この時点で、これらのトピックをより良く議論するための高レベルな概念を理解しているはずです。

ネットワーク層

ネットワーキングは通常、水平方向のトポロジとして議論されますが、実装は任意のコンピュータやネットワーク内で垂直方向に層状になっています。

これは、通信が機能するために上に積み重ねられた複数の技術とプロトコルがあることを意味します。各後続の上位層は生データを少し抽象化します。

これにより、低い層を新しい方法で活用することができ、それらの種類のトラフィックを処理するプロトコルとアプリケーションを開発するために時間とエネルギーを投資する必要がありません。

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

データが1つの機械から送信されると、スタックの上部から始まり、下方向にフィルタリングされます。最下層では、別の機械への実際の転送が行われます。この時点で、データは他のコンピュータのレイヤーを通じて上方向に移動します。

各レイヤーは、隣接するレイヤーから受け取ったデータに独自の「ラッパー」を追加する能力を持っており、それにより後続のレイヤーがデータをどのように処理するかを決定するのに役立ちます。

TCP/IPモデル

TCP/IPモデル、より一般にはインターネットプロトコルスイートとして知られているものは、広く採用されているレイヤリングモデルです。このモデルでは、次の4つの独立したレイヤーが定義されています:

  • アプリケーション:このモデルでは、アプリケーションレイヤーがアプリケーション間でのユーザーデータの作成と転送を担当します。これらのアプリケーションはリモートシステム上にある可能性があり、エンドユーザーにとってはローカルと同様に動作するように見える必要があります。この通信はピア間で行われると言われています。

  • トランスポート: トランスポート層はプロセス間の通信を担当します。このネットワーキングレベルでは、ポートを使用して異なるサービスにアクセスします。

  • インターネット: インターネット層はネットワーク内のノード間でデータを転送するために使用されます。この層は接続のエンドポイントを認識していますが、実際の接続方法については関心を持っていません。 IPアドレス は、この層でリモートシステムにアドレス指定された方法として定義されています。

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

ご覧の通り、TCP/IPモデルは抽象的で流動的です。これが実装されやすく、ネットワーキングレイヤーが分類される主要な方法となりました。

インターフェース

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

通常、サーバーには各Ethernetまたは無線インターネットカードに1つの設定可能なネットワークインターフェースがあります。

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

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

プライベートネットワーキングが有効になっているデータセンター(DigitalOcean Dropletsを含む)では、VPSには2つのネットワーキングインターフェースがあります。「eth0」インターフェースはインターネットからのトラフィックを処理するように構成され、一方で「eth1」インターフェースはプライベートネットワークとの通信に使用されます。

プロトコル

ネットワーキングは、さまざまなプロトコルを重ねて使用することで機能します。この方法で、1つのデータが他のプロトコルにカプセル化された複数のプロトコルを使用して送信されることができます。

まず、下位のネットワーキングレイヤーで実装されたプロトコルから始めて、抽象化が高いプロトコルに移動していきます。

メディアアクセス制御

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

MACアドレッシングを使用してハードウェアにアクセスすることで、ソフトウェアが操作中にその特定のデバイスの名前を変更しても、ユニークな値でデバイスを参照できます。

MACアドレッシングは、定期的に操作する可能性のある低レベルのリンク層からの唯一のプロトコルの1つです。

IP

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

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

プロトコルのさまざまな実装があります。現在最も一般的な実装はIPv4アドレスで、123.123.123.123のようなパターンに従いますが、IPv6アドレスは利用可能なIPv4アドレスが限られているため、人気が高まっています。2001:0db8:0000:0000:0000:ff00:0042:8329のようなパターンに従います。

ICMP

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

通常、異なる種類のパケットに問題が発生した場合にICMPパケットが送信されます。これらはネットワーク通信のフィードバックメカニズムとして使用されます。

TCP

TCPは、転送制御プロトコル(Transmission Control Protocol)の略称です。それはTCP/IPモデルのトランスポート層に実装され、信頼性のある接続を確立するために使用されます。

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

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

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

TCPは、WWW、SSH、電子メールなど、インターネットで最も人気のある用途のための選択プロトコルです。

UDP

UDPは、ユーザーデータグラムプロトコル(User Datagram Protocol)の略称です。これはTCPの補完プロトコルであり、トランスポート層にも実装されています。

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

UDPは、データの受信確認を待つ必要がなく、データの再送を強制する必要もないため、TCPよりもはるかに高速です。

これはリモートホストとの接続を確立せず、単に確認せずにデータを送信する特徴があります。

HTTP

HTTPはハイパーテキスト転送プロトコルの略で、ウェブ上の通信の基盤を形成するアプリケーション層のプロトコルです。

HTTPは、要求しているデータに対してリモートシステムに伝えるためのいくつかの動詞を定義しています。たとえば、GET、POST、DELETEはすべて異なる方法で要求されたデータと対話します。これらの異なるHTTPリクエストがどのように動作するかの例については、ExpressでルートとHTTPリクエストメソッドを定義する方法を参照してください。

DNS

DNSはドメイン名システムの略であり、インターネットリソースに対して人間にとって親しみやすい名前を提供するためのアプリケーション層プロトコルです。これにより、ドメイン名をIPアドレスに関連付け、ブラウザで名前を使用してサイトにアクセスすることができます。

SSH

SSHはセキュアシェルの略であり、アプリケーション層で実装された暗号化されたプロトコルです。これを使用することで、安全な方法でリモートサーバーと通信することができます。そのため、エンドツーエンドの暗号化と普及性を持つこのプロトコルを基盤としたさまざまな技術が構築されています。

これまで説明していない他の重要なプロトコルもありますが、これによってインターネットとネットワーキングを可能にするいくつかの基本的な技術についての概要が理解できるはずです。

結論

この時点で、ネットワーキング用語について理解し、異なるコンポーネントがどのように通信できるかを理解できるはずです。これにより、他の記事やシステムのドキュメンテーションを理解するのに役立つでしょう。

次に、高レベルな実世界の例として、GoでHTTPリクエストを作成する方法を読むことをお勧めします。

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-networking-terminology-interfaces-and-protocols