この投稿で取り上げる質問には、いくつかの潜在的な誤解や誤解があります。
図2では、コンピューター(PC)がインターネット経由で別のコンピューターにメッセージを作成、処理、および送信するために使用するソフトウェア「スタック」の表現を示しています
スマートフォン/テレビ/ゲームコンソールなど、あらゆる種類のコンピューターがこの形式を使用していますか?
(この点に関して)セルラーインターネットとWifi / Ethernetに違いはありますか?
「アプリケーション」レイヤーを持たないように見える単機能デバイスについてはどうでしょうか-例えば、Web接続カメラ、ライトスイッチ、またはサーモスタット。
これらの誤解が存在するため、次の説明を含める必要があります(その後の議論の背景を提供するため)。
- インターネットとは
- TCP / IPプロトコルスイートとは
- アプリケーションとは
その後、質問に直接対処します。
それらの重要性と複雑さを考えると、一連の本はすべてTCP / IPプロトコルスイートで書かれていることに注意してください。ここでの定義と説明は、主にWikipedia、TCP / IP Illustrated Volume 1 Second edition:The Protocols by Stevens and Fall、およびIBMのTCP / IP Tutorial and Technical Overviewから抜粋されます。
1.インターネット
インターネットは、技術的であるワイドエリアネットワーク(WAN) 、それを考えるために、より便利な方法は、supernetworkの種類(ネットワークのネットワーク)や、さまざまの集合体としてある間接続ネット作品。インターネットの一部を通るルーティングパスの写真を次に示します。
- インターネットは多くの接続されたネットワークで構成されています
- ネットワークは、1つ以上のシステム(ホスト)で構成されている場合があります
- 接続システムは通常、ある種のハードウェアプラットフォームで実行されます
- ネットワークに接続されているシステムのタイプとそれらが実行されるハードウェアに大きな違いがある
インターネットがどのように機能するかについての楽しい読み物は、Arstechnicaの記事「インターネットの仕組み:海底繊維、瓶の中の脳、同軸ケーブル」にあります。
では、異なるネットワークに接続された異なるハードウェアプラットフォームで実行されている異なるシステムは、どのように相互に通信できますか?このような広範で異種のシステムとネットワークの間の通信はどのように可能ですか?これをすべて同時に行うにはどうすればよいですか?
2.インターネットプロトコルスイート
答えは、インターネットプロトコルスイート(別名TCP / IPプロトコルスイート)によって提供されます。これらの質問は、インターネットのアーキテクチャの設計プロセス中に考慮されました(TCP / IPの図解、セクション1.1:アーキテクチャの原則)。
いくつかの目標が、インターネットアーキテクチャの作成を導きました。[C88]では、第一の目標は、「既存の相互接続されたネットワークの多重利用のための効果的な技術を開発しています。」にクラーク再集計したというこの文の本質があることであるインターネットアーキテクチャは、複数の異なるネットワークを相互接続することができるはずですし、複数の活動がすべきこと結果として相互接続されたネットワークで同時に走ることができます。
以下からのインターネットプロトコルスイート(ウィキペディア):
インターネットプロトコルスイートは、インターネットおよび同様のコンピューターネットワークで使用される概念モデルおよび通信プロトコルのセットです。
インターネットプロトコルスイートは、データをパケット化、アドレス指定、送信、ルーティング、および受信する方法を指定するエンドツーエンドのデータ通信を提供します。この機能は、関連するネットワークの範囲に従ってすべての関連プロトコルをソートするために使用される4つの抽象化レイヤーに編成されます。
TCP / IPプロトコルスイートを考える1つの方法は、異なるシステムおよび異なるネットワークで実行されているプロセスが互いに通信する方法の仕様としてです。本質的に、TCP / IPプロトコルスイートはプロセス間通信の標準を提供します。
TCP / IPプロトコルスイートを正しく実装するシステムは、提供する機能を使用して、プロセスがインターネット経由で通信できるようにします。実際、プロセスが他のネットワーク上のリモートシステムで実行されている他のプロセスとインターネットを介して通信するには、システムは標準に準拠したTCP / IPスイートプロトコルを利用する必要があります。
3.アプリケーション
以下からのアプリケーションソフトウェア(ウィキペディア):
アプリケーションプログラム(アプリまたは略してアプリケーション)は、ユーザーの利益のために調整された機能、タスク、またはアクティビティのグループを実行するように設計されたコンピュータープログラムです。アプリケーションの例には、ワードプロセッサ、スプレッドシート、会計アプリケーション、Webブラウザ、メディアプレーヤー、航空フライトシミュレータ、コンソールゲーム、またはフォトエディタが含まれます。集合名詞アプリケーションソフトウェアは、すべてのアプリケーションをまとめて指します。これは、主にコンピューターの実行に関係するシステムソフトウェアとは対照的です。
アプリケーションは、システム上で実行されるユーザー空間プロセスと考えることができます。上記の例に加えて、これには(非カーネルモード)コンピューターウイルス、Webサーバー、カメラアプリケーション、センサーデータ集約プログラムなどのプログラムが含まれます。
アプリケーションがインターネットを介してデータを送受信する場合、ホストシステムのTCP / IPプロトコルスイートの実装を利用する必要があります。アプリケーション層から(Wikipedia):
TCP / IPでは、アプリケーション層には、インターネットプロトコル(IP)コンピューターネットワークを介したプロセス間通信で使用される通信プロトコルとインターフェイスメソッドが含まれています。アプリケーション層は、通信を標準化するだけで、基盤となるトランスポート層プロトコルに依存して、ホスト間データ転送チャネルを確立し、クライアント/サーバーまたはピアツーピアネットワークモデルでデータ交換を管理します。
TCP / IPプロトコルスイートのアプリケーション層には、ファイル転送プロトコル(FTP)、ドメインネームシステム(DNS)、そしておそらく最も有名なハイパーテキスト転送プロトコル(HTTP)などのプロトコルが含まれます。
例として、アプリケーションレイヤープロトコルHTTPは、(通常)異なるシステムで実行されている2つのプロセス間でデータを送信する方法を指定します:クライアントアプリケーション、Webブラウザー、およびサーバーアプリケーション、Webサーバープロセス。
潜在的な誤解の明確化
図2では、コンピューター(PC)がインターネットを介して別のコンピューターにメッセージを作成、処理、および送信するために使用するソフトウェア「スタック」の表現を示しています。
TCP / IPプロトコルスイートはソフトウェアスタックではありません。Technopediaから:
ソフトウェアスタックは、結果を生成するか、共通の目標を達成するために連携して動作するプログラムのグループです。ソフトウェアスタックは、共通の目標に向かって特定の定義された順序で動作するアプリケーションのセット、またはセットとして動作するユーティリティまたはルーチンアプリケーションのグループも指します。インストール可能なファイル、製品のソフトウェア定義、およびパッチをソフトウェアスタックに含めることができます。人気のあるLinuxベースのソフトウェアスタックの1つはLAMP(Linux、Apache、MYSQL、PerlまたはPHPまたはPython)です。WINS(Windows Server、Internet Explorer、.NET、SQL Server)は人気のあるWindowsベースのソフトウェアスタックです。
むしろ、それは通常カーネルによって実装されるプロトコルスタックであり、(Technopediaからも):
プロトコルスタックとは、ネットワークプロトコルスイートの実装に使用される、同時に実行されるプロトコルのグループを指します。
スタック内のプロトコルは、OSIやTCP / IPモデルなどの階層化ネットワークモデルの相互接続性ルールを決定します。スタックになるためには、ネットワークのレイヤー間で垂直に接続し、各伝送セグメントのエンドポイント間で水平に接続できるプロトコルが相互運用可能でなければなりません。
スマートフォン/テレビ/ゲームコンソールなど、あらゆる種類のコンピューターがこの形式を使用していますか?
TCP / IPプロトコルスイートは、ハードウェアおよびオペレーティングシステムに依存しない通信仕様であり、形式ではありません。あるハードウェアプラットフォームで実行されているプロセスが、別のハードウェアプラットフォーム上のリモートシステムで実行されているプロセスと通信する必要があり、インターネット経由で通信が行われる場合、システムは
- TCP / IPプロトコルスイートを正しく実装し、
- プロセス間通信を実現するには、このスイート内の適切なプロトコルを使用する必要があります
(この点に関して)セルラーインターネットとWifi / Ethernetに違いはありますか?
この質問に対する私の解釈は、「モバイルデバイスがGSMネットワークに接続する方法とモバイルデバイスがWiFiネットワークに接続する方法に違いはありますか?」です。
違いはネットワークインターフェイスレイヤーにあります。
この質問は、質問にリンクされている記事の図のTCP / IPプロトコルスイートの不十分な描写を明らかにします。参考のために、図を示します。
「ハードウェア」と呼ばれる最下層は、リンク層、メディアアクセス制御(MAC)層、またはネットワークインターフェイス層と呼ばれるべきです。
IBMの「TCP / IPチュートリアルと技術概要」ページ34から:
リンク層またはデータリンク層とも呼ばれるネットワークインターフェース層は、実際のネットワークハードウェアへのインターフェースです。このインターフェイスは、信頼できる配信を提供する場合としない場合があり、パケット指向またはストリーム指向である場合があります。実際、TCP / IPはここでプロトコルを指定していませんが、利用可能なほぼすべてのネットワークインターフェイスを使用できます。これは、IPレイヤーの柔軟性を示しています。例としては、IEEE 802.2、X.25(それ自体信頼性が高い)、ATM、FDDI、さらにはSNAがあります。
以下は、正しく優れた描写です(The TCP / IP Guideから)。
ネットワークインターフェイスレイヤーの説明が関連する理由は、セルラー/モバイルデバイスがGSMネットワークとWiFiネットワークに接続する方法に違いがあるのはこのレイヤーであるためです。
「アプリケーション」層を持たないように見える単機能デバイスについてはどうでしょうか-例:Web接続カメラ、照明スイッチ、サーモスタット
前述のように、TCP / IPプロトコルスイートのアプリケーション層のプロトコルは、プロセス間でアプリケーションデータを交換する方法の標準を提供します。
レイヤーは概念的です。システムまたはハードウェアプラットフォームには存在しません。
Web接続カメラ、ライトスイッチ、およびサーモスタットには、インターネット上でリモートシステム上で実行されるプロセスと通信するプロセスが実行されている場合があります(ファームウェアの更新の確認、サーバーとのデータ交換など)。これらのプロセスまたはアプリケーションは、TCP / IPプロトコルスイートの実装を利用して、このプロセス間通信を実現します。
TCP / IPプロトコルスイートと組み込みシステム(「IoT」)
従来のPCまたはサーバーで実行されるさまざまなアプリケーション層プロトコルを利用するさまざまなアプリケーションがありますが、ハードウェアプラットフォームがそれぞれのアクセスポイント(ネットワークインターフェイス/データリンク層)に接続する方法に関してはそれほど違いはありません。主に有線またはワイヤレスでイーサネット経由で実現されます。
TCP / IPを介して通信する多種多様な組み込みシステムに関しては、状況は多少異なります。これの説明を次に示します(Postscapesから)。
詳細については、次の記事を参照してください。
モノのインターネットの背後にあるプロトコルを理解する
IoT標準とプロトコル
IoTテクノロジーガイドブック