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

イントロダクション

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

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

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

ネットワーキング用語集

最初に、このガイド全体や他のネットワークに関連するガイドやドキュメントでよく目にする一般的な用語を定義します。

以下の適切なセクションでこれらの用語について詳しく説明します。 (Kore no tekisetsuna sekushon de korera no yōgo ni tsuite kuwashiku setsumei shimasu.)

  • Connection: In networking, a connection refers to pieces of related information that are transferred through a network. Generally speaking, a connection is established before data transfer (by following the procedures laid out in a protocol) and may be deconstructed at the end of the data transfer.
  • Packet: A packet is the smallest unit that is intentionally transferred over a network. When communicating over a network, packets are the envelopes that carry your data (in pieces) from one end point to the other.

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

  • Network Interface: A network interface can refer to any kind of software interface to networking hardware. For instance, if you have two network cards in your computer, you can control and configure each network interface associated with them individually.

ネットワークインターフェースは物理デバイスに関連付けられる場合もありますし、また仮想インターフェースの表現であることもあります。ほとんどのLinux環境で利用できる仮想インターフェースの1つである「ループバック」デバイスは、同じマシンに接続するためのものです。

  • LAN: LAN stands for “local area network”. It refers to a network or a portion of a network that is not publicly accessible to the greater internet. A home or office network is an example of a LAN.
  • WAN: WAN stands for “wide area network”. It means a network that is much more extensive than a LAN. While WAN is the relevant term to use to describe large, dispersed networks in general, it is usually meant to mean the internet, as a whole.

もしインターフェースがWANに接続されていると言われれば、一般的にはインターネット経由で到達可能であると仮定されます。

  • Protocol: A protocol is a set of rules and standards that define a language that devices can use to communicate. There are a great number of protocols in use extensively in networking, and they are often implemented in different layers.

低レベルプロトコルにはTCP、UDP、IP、ICMPなどがあります。この下位プロトコルに基づいて構築されたアプリケーション層プロトコルのいくつかの例としては、ウェブコンテンツにアクセスするためのHTTP、SSH、TLS/SSLなどがあります。

  • Port: A port is an address on a single machine that can be tied to a specific piece of software. It is not a physical interface or location, but it allows your server to be able to communicate using more than one application.
  • Firewall: A firewall is a program that decides whether traffic coming or going from a server should be allowed. A firewall usually works by creating rules for which type of traffic is acceptable on which ports. Generally, firewalls block ports that are not used by a specific application on a server.
  • NAT: NAT stands for network address translation. It is a way to repackage and send incoming requests to a routing server to the relevant devices or servers on a LAN. This is usually implemented in physical LANs as a way to route requests through one IP address to the necessary backend servers.
  • VPN: VPN stands for virtual private network. It is a means of connecting separate LANs through the internet, while maintaining privacy. This is used to connect remote systems as if they were on a local network, often for security reasons.

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

ネットワークレイヤー

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

これは、通信が機能するために、複数の技術やプロトコルが重ねられているということを意味しています。各上位の層は、原始データを少し抽象化します。

新しい方法で下位層を活用することができ、それによって時間とエネルギーを費やしてプロトコルやトラフィックを処理するアプリケーションを開発する必要がなくなるという、この機能も提供されています。

各層のスキームについて話す際に使用する言語は、使用するモデルによって大きく異なります。しかし、層を議論するために使用するモデルに関係なく、データの経路は同じです。

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

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

TCP/IPモデル

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

  • Application: In this model, the application layer is responsible for creating and transmitting user data between applications. The applications can be on remote systems, and should appear to operate as if locally to the end user. This communication is said to take place between peers.
  • Transport: The transport layer is responsible for communication between processes. This level of networking utilizes ports to address different services.
  • Internet: The internet layer is used to transport data from node to node in a network. This layer is aware of the endpoints of the connections, but is not concerned with the actual connection needed to get from one place to another. IP addresses are defined in this layer as a way of reaching remote systems in an addressable manner.
  • Link: The link layer implements the actual topology of the local network that allows the internet layer to present an addressable interface. It establishes connections between neighboring nodes to send data.

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

インターフェース

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

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

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

よく、管理者はインターネットへのトラフィックを処理するために1つのインタフェースを設定し、LANまたはプライベートネットワーク用に別のインタフェースを設定します。

プライベートネットワーキングが有効なデータセンター(Silicon CloudのvServersを含む)では、VPSには2つのネットワーキングインターフェースがあります。インターネットからのトラフィックを処理するために、「eth0」というインターフェースが設定され、同時に「eth1」というインターフェースがプライベートネットワークとの通信に使用されます。

プロトコル

ネットワーキングは、複数の異なるプロトコルを互いに連結し、一つのデータを複数のプロトコルに包まれた形で送信することによって機能します。

低レベルなネットワーキング層で実装されたプロトコルから始め、抽象度の高いプロトコルに向けて進めます。

Medium Access Control (MAC) :
メディアアクセス制御

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

MACアドレスによってハードウェアを指定することで、ソフトウェアが特定のデバイスの名前をオペレーション中に変更しても、そのデバイスを一意の値で参照することができます。

MACアドレッシングは、低レベルリンク層からのプロトコルのうち、定期的に対話する可能性が高いものの一つです。

IPを日本語で同じ意味で言い換えると、下記のようになります:

アイピー

IPプロトコルは、インターネットが動作するための基本プロトコルの一つです。IPアドレスは、各ネットワークにおいて一意であり、機器同士がネットワーク上で相互に通信するために使用されます。これは、TCP/IPモデルにおいてインターネット層で実装されています。

ネットワークは連携することができますが、ネットワークの境界を越える時は通信経路をルーティングする必要があります。このプロトコルは信頼性のないネットワークと、動的に変更できる同じ宛先への複数の経路を想定しています。

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

ICMP: Internet Control Message Protocol.

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

通常、異なる種類のパケットが問題に遭遇した際に、ICMPパケットが送信されます。それらはネットワーク通信のフィードバック機構として使用されます。

以下の英文を日本語で言い換えてください。ただし、一つのオプションで十分です。

TCP

TCPは、Transmission Control Protocolの略であり、TCP/IPモデルのトランスポート層で実装され、信頼性のある接続を確立するために使用されます。

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

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

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

TCPは、WWW、SSH、メールを含む多くの人気のあるインターネット利用形態での選択プロトコルです。

UDP (User Datagram Protocol) – ユーザーデータグラムプロトコル

UDPはユーザーデータグラムプロトコルの略で、TCPとよく組み合わせて使われるプロトコルです。また、トランスポート層でも実装されています。

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

データの受信確認を待つ必要もなく、再送信を強制されることもないため、UDPはTCPよりも速いです。リモートホストとの接続を確立せず、確認なしにデータを送信します。

次のように日本語で言い換えます:「シンプルなトランザクションであるため、ネットワークリソースの照会などの通信に便利です。また、状態を維持しないため、1台のマシンから多数のリアルタイムクライアントにデータを送信するのに適しています。これにより、VOIP、ゲーム、その他の遅延を許容できないアプリケーションに最適です。」

HTTPを日本語で言い換えると、オプションは一つだけです。
「ハイパーテキストトランスファープロトコル」と言います。

HTTPはハイパーテキスト転送プロトコルの略です。これは、ウェブ上の通信の基盤となるアプリケーション層で定義されたプロトコルです。

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

DNS (Domain Name System) を日本語で言い換えると:

「ドメインネームシステム」

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

SSHを日本語で言い換えると「Secure Shell(セキュアシェル)」です。

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

私たちはまだカバーしていない多くの重要なプロトコルがありますが、これによってインターネットとネットワーキングが可能になるいくつかの基本技術について、あなたには十分な概要が得られるはずです。

結論

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

次に、上級者向けの実際の例として、Go言語でHTTPリクエストを作成する方法を読んでみることをおすすめします。

コメントを残す 0

Your email address will not be published. Required fields are marked *