私が読んだすべてのチュートリアルでは、レイヤーが相互に「通信」する方法について説明していますが、制御データの各レイヤーを受信、追加、送信するハードウェア/ソフトウェアについては言及していません。
IP/TCPの各層に関連するデータを受信/カプセル化/送信するハードウェアとソフトウェアはどれですか?
たとえば、ルーターはどのレイヤーで動作しますか?どのソフトウェアがテキストファイルをSMTPに変換しますか?フロー制御/輸送用のソフトウェアは、コンピューターのどこにありますか?
Layer 1 - Physical - Signaling
Layer 2 - Data Link - Switching (Ethernet frames)
Layer 3 - Network - Routing (IP packets)
Layer 4 - Transport - Multiplexing (TCP segments)
Layer 5 - Session
Layer 6 - Presentation
Layer 7 - Application
特定のソフトウェア/ハードウェアの実装が言及されていない理由は、それが標準を開発するための要点だからです。データが標準に従って提示されている限り、各レイヤーは上下のレイヤーがその機能をどのように処理するかを気にしません。それは、ソフトウェア、ハードウェア、ファームウェア、機械的な非電子デバイスを介して、または人間が手動で行うこともできます(非深刻な例についてはグーグル「伝書鳩」)。
関連する特定のソフトウェアとハードウェアは、現実の世界でも大きく異なります。ソフトウェアですべての機能を実行することは完全に可能です(安いが遅い)。それらすべてをハードウェアで実行することも完全に可能です(高速ですが高価です)。 Ciscoルーターなどの専用ネットワークデバイスは、ルーターとして構成されたLinuxを実行しているPCなど、ハードウェアでより多くの機能を実行します。
通常、レイヤー1およびほとんどのレイヤー2は、ハードウェアで実行されることが保証されています。レイヤ3は主に、Ciscoなどのエンタープライズレベルのルータのハードウェアで実行されます。多くのNICには、NIC上のハードウェアを介してレイヤ3および4のほとんどを高速化できる「TCPオフロードエンジン」と呼ばれる機能が付属しています。 Wal-martの消費者レベルのルーターは通常、ルーティング機能を完全にソフトウェアで実行します。レイヤー5、6、および7は通常、ハードウェアでは実行されません。実行される場合、実行するデバイスは「アクセラレータ」と呼ばれます。
IP/TCPの各層に関連するデータを受信/カプセル化/送信するハードウェアとソフトウェアのどの部分ですか?
イーサネットハードウェアは通常、最下位層である物理層とリンク層でのみ使用されます。そのMACアドレスに基づいて、ハードウェアは一致するユニキャストフレームのみを受け入れます。イーサネットデバイスドライバは通常、このデバイスへのソフトウェアインターフェイスを提供する役割を果たします。デバイスは通常、リンクされた(循環)リングに配置されたバッファとの間で完全なイーサネットフレームの読み取りと書き込みを行うことができ、ドライバは割り込みを処理するか、バッファリングステータスの変更についてステータスをポーリングします(つまり、フレームの読み取りまたは書き込み操作が完了します)。
このソフトウェアは、まとめてプロトコルスタックと呼ばれます。これは、カーネルに組み込まれているプロシージャと関数のコレクションです。これらは、ソフトウェアの階層と同じように呼び出されます。ユーザープログラムがソケットR/Wシステムコールを行うと、最上位のアプリケーションルーチンが呼び出されます。このサブルーチン/プロシージャ階層は、モジュール性、疎結合、および高い凝集度を強制する他の適切に構築されたソフトウェアとまったく同じです。
プロトコルの各レイヤーは、データパケットがフレームバッファーに格納され、ハードウェアによる出力の準備ができるまで、1つ以上の(ネストされた)プロシージャコールによって実行されます。書き込みが正常に完了すると、ステータスがユーザーの呼び出しに返されます。
たとえば、ルーターはどのレイヤーで動作しますか?
インターネットは TCP/IPモデル で記述されます:
ルーターは、インターネット層であるIPアドレスに基づいてパケットを送信します。ただし、ルーターには、Webベースの構成ユーティリティなどの他のサービスを実行するための独自のプロトコルスタックがあります。ネットワーク上のすべてのホストには、おそらく完全なプロトコルスタックがあります。レイヤーはネットワークホスト/デバイス間で分散されません。
どのソフトウェアがテキストファイルをSMTPに変換しますか?
メールプログラムはアプリケーション層とインターフェイスします。
フロー制御/輸送用のソフトウェアは、コンピューターのどこにありますか?
おそらくトランスポート層で、TCPが動作します。