GNU/Linux >> Linux の 問題 >  >> Linux

TCP/IP プロトコルの基礎を図で説明

自分のコンピュータが、ローカル LAN 上の他のコンピュータやインターネット上の他のシステムとどのように通信しているのか疑問に思ったことはありませんか?

コンピュータがどのように相互作用するかの複雑さを理解することは、ネットワーキングの重要な部分であり、開発者だけでなくシステム管理者にとっても同様の関心事です。この記事では、誰もが理解する必要がある非常に基本的な基本レベルからコミュニケーションの概念について説明しようとします.

TCP/IP プロトコル スイート

ネットワーク上のコンピュータ間の通信は、プロトコル スーツを通じて行われます。最も広く使用され、最も広く利用されているプロトコル スイートは、TCP/IP プロトコル スイートです。プロトコルスーツは、各レイヤーがプロトコルによって実行できるいくつかの機能を表すレイヤードアーキテクチャで構成されています。通常、各レイヤーには、レイヤーが準拠する責任を実行するための複数のプロトコル オプションがあります。 TCP/IP は通常、4 層システムと見なされます。 4 つのレイヤーは次のとおりです。

<オール>
  • アプリケーション層
  • トランスポート層
  • ネットワーク層
  • データリンク層
  • 1.アプリケーション層

    これは、TCP/IP プロトコル スイートの最上位層です。この層には、トランスポート層プロトコルを使用してデータを宛先コンピューターに配信するアプリケーションまたはプロセスが含まれます。

    各層には、その特定の層に指定されたタスクを実行するための特定のプロトコル オプションがあります。そのため、アプリケーション層には、アプリケーションが 2 番目の層であるトランスポート層と通信するために使用するさまざまなプロトコルもあります。一般的なアプリケーション層プロトコルの一部は次のとおりです:

    • HTTP (ハイパーテキスト転送プロトコル)
    • FTP (ファイル転送プロトコル)
    • SMTP (簡易メール転送プロトコル)
    • SNMP (簡易ネットワーク管理プロトコル) など

    2.トランスポート層

    この層は、2 つのホスト間のデータ フローにバックボーンを提供します。この層は、その上のアプリケーション層からデータを受け取ります。この層で機能するプロトコルは多数ありますが、トランスポート層で最も一般的に使用される 2 つのプロトコルは TCP と UDP です。

    TCP は信頼できる接続が必要な場合に使用され、UDP は信頼できない接続の場合に使用されます。

    TCP (アプリケーション層からの) データを適切なサイズのチャンクに分割し、これらのチャンクをネットワークに渡します。受信したパケットを確認し、送信したパケットの確認を待ち、タイムアウトを設定して、確認が時間内に受信されない場合にパケットを再送信します。 「信頼できる接続」という用語は、この接続を介してネットワーク上で転送される情報を失うことが望ましくない場合に使用されます。したがって、このタイプの接続に使用されるプロトコルは、この望ましい特性を実現するメカニズムを提供する必要があります。たとえば、ファイルのダウンロード中に情報 (バイト) を失うことは望ましくありません。ダウンロードしたコンテンツが破損する可能性があるためです。

    UDP あるホストから別のホストにパケットを送信することにより、比較的単純ですが信頼性の低いサービスを提供します。 UDP は、送信されたデータがターゲット ホストによって受信されるかどうかを確認するための特別な措置を講じません。 「信頼できない接続」という用語は、一部の情報が失われても、この接続を介して実行されるタスクが妨げられない場合に使用されます。たとえば、ビデオのストリーミング中に、何らかの理由で数バイトの情報が失われても、ユーザー エクスペリエンスに大きな影響を与えないため、許容されます。

    3.ネットワーク層

    この層は、インターネット層とも呼ばれます。この層の主な目的は、ネットワーク上のデータの移動を整理または処理することです。データの移動とは、通常、ネットワークを介したデータのルーティングを意味します。この層で使用される主なプロトコルは IP です。 ICMP (一般的な「ping」コマンドで使用) と IGMP もこの層で使用されます。

    4.データリンク層

    この層は、ネットワーク インターフェイス層とも呼ばれます。この層は、通常、OS のデバイス ドライバーと、システムに接続されているネットワーク インターフェイス カードで構成されます。デバイス ドライバーとネットワーク インターフェイス カードの両方が、ネットワーク経由でデータを転送するために使用されるメディアとの通信の詳細を処理します。ほとんどの場合、このメディアはケーブルの形をしています。この層で使用される有名なプロトコルには、ARP (アドレス解決プロトコル)、PPP (ポイント ツー ポイント プロトコル) などがあります。

    TCP/IP コンセプトの例

    注目すべきことの 1 つは、TCP/IP プロトコル スイートを介したネットワーク上の 2 台のコンピューター間の対話が、クライアント サーバー アーキテクチャの形式で行われることです。

    サーバーがクライアントのリクエストを処理している間に、クライアントがサービスをリクエストします。

    さて、ネットワークを介してホストからターゲットへのデータフローを支援する基礎となるレイヤーについて説明しました。概念をより明確にするために、非常に単純な例を見てみましょう。

    Web サイトを開くときのデータ フローを考慮してください。

    上の図に示すように、情報はホスト マシンの各層を下方向に流れます。最初の層では、http プロトコルが使用されているため、HTTP 要求が形成され、トランスポート層に送信されます。

    ここで、プロトコル TCP は上位層からのデータに追加の情報 (シーケンス番号、送信元ポート番号、宛先ポート番号など) を割り当て、通信の信頼性を維持します。つまり、送信データと受信データの追跡を維持できます。 /P>

    次の下位層では、IP はトランスポート層からのデータに独自の情報を追加します。この情報は、ネットワーク上を移動するパケットに役立ちます。最後に、データ リンク層は、物理メディアとの間のデータ転送が適切に行われるようにします。ここでも、データリンク層で行われる通信は、信頼できる場合とそうでない場合があります。

    この情報は物理メディア (イーサネットなど) を伝わり、ターゲット マシンに到達します。

    ここで、ターゲット マシン (この場合は Web サイトがホストされているマシン) で、同じ一連の対話が逆の順序で発生します。

    パケットは、最初にデータ リンク層で受信されます。この層では、(ホスト マシンのデータ リンク層プロトコルによって詰め込まれた) 情報が読み取られ、残りのデータが上位層に渡されます。

    ネットワーク層でも同様に、ホストマシンのネットワーク層プロトコルで設定された情報を読み取り、残りの情報を次の上位層に渡します。トランスポート層でも同じことが起こり、最終的にホスト アプリケーション (ブラウザ) によって送信された HTTP 要求がターゲット アプリケーション (Web サイト サーバー) によって受信されます。

    各層に固有の情報がターゲットマシンの対応するプロトコルによって読み取られるとどうなるか、またはなぜそれが必要なのか疑問に思うでしょう。さて、トランスポート層に存在する TCP プロトコルの例でこれを理解しましょう。ホスト マシンでは、このプロトコルは、この層によって送信される各パケットにシーケンス番号などの情報を追加します。

    ターゲット マシンでは、パケットがこの層に到達すると、この層の TCP がパケットのシーケンス番号を記録し、確認応答を送信します (受信したシーケンス番号 + 1)。

    ここで、ホスト TCP が指定された時間内に確認応答を受信しない場合、同じパケットを再送信します。このようにして、TCP はパケットが失われないようにします。したがって、すべてのレイヤーのプロトコルが、対応するレイヤーによって設定された情報を読み取って、それが表すレイヤーの機能を実現することがわかります。

    ポート、サーバー、規格

    特定のマシンでは、マシンの IP アドレスと結合されたポート番号はソケットと呼ばれます。クライアントとサーバーの両方の IP とポートの組み合わせは、4 タプルと呼ばれます。この 4 つのタプルは、接続を一意に識別します。このセクションでは、ポート番号の選択方法について説明します。

    FTP や telnet などの非常に一般的なサービスの一部が既知のポート番号で実行されることは既にご存じでしょう。 FTP サーバーはポート 21 で実行されますが、Telent サーバーはポート 23 で実行されます。したがって、TCP/IP の実装によって提供される一部の標準サービスには、それらが実行される標準ポートがいくつかあることがわかります。これらの標準ポート番号は、通常、1 から 1023 の範囲で選択されます。ウェルノウン ポートは、Internet Assigned Numbers Authority (IANA) によって管理されます。

    ほとんどの標準サーバー (TCP/IP スイートの実装によって提供される) は標準ポート番号で実行されますが、クライアントは標準ポートを実行する必要はありません。

    クライアント ポート番号は、エフェメラル ポートと呼ばれます。エフェメラルとは、短命を意味します。これは、クライアントがサーバーに接続し、作業を行ってから切断する可能性があるためです。そのため、「短命」という用語を使用したため、標準ポートは必要ありません。

    また、クライアントはサーバーに接続するためにサーバーのポート番号を知る必要があるため、ほとんどの標準サーバーは標準ポート番号で実行されます。

    通常、クライアント用に予約されているポートは 1024 から 5000 の範囲です。5000 より大きいポート番号は、標準的でない、またはよく知られていないサーバー用に予約されています。

    ファイル「/etc/services」を見ると、ほとんどの標準サーバーとそれらが実行されているポートが見つかります。

    $ cat /etc/services
    systat		11/tcp		users
    daytime		13/udp
    netstat		15/tcp
    qotd		17/tcp		quote
    msp		18/udp
    chargen		19/udp		ttytst source
    ftp-data	20/tcp
    ftp		21/tcp
    ssh		22/tcp
    ssh		22/udp
    telnet		23/tcp
    ...
    ...
    ...

    /etc/services ファイルからわかるように、FTP のポート番号は 21、telent のポート番号は 23 などです。このファイルで「grep」コマンドを使用して、任意のサーバーとそれに関連付けられたポートを見つけることができます。

    標準に関する限り、次の 4 つの組織/グループが TCP/IP プロトコル スイートを管理しています。 IRTF と IETF の両方が IAB に該当します。

    <オール>
  • インターネット ソサエティ (ISOC)
  • インターネット アーキテクチャ ボード (IAB)。 IAB は ISOC に属します。
  • インターネット エンジニアリング タスク フォース (IETF)
  • インターネット リサーチ タスク フォース (IRTF)

  • Linux
    1. 15の一般的に使用されるネットワークポートの説明

    2. nslookupLinuxコマンドの例

    3. Linux Tracerouteコマンド、例を使用して説明

    1. Linuxのshutdownコマンドを例で説明

    2. csfを使用したIP/ポートリダイレクト

    3. ファイアウォールの概要

    1. Linuxのcurlコマンドを例で説明

    2. Linuxカットコマンドを6つの例で説明

    3. TCP/IP 攻撃 – ARP キャッシュ ポイズニングの基礎の説明