インターネットに接続されているすべてのものは、同じ「アプリケーション-TCP-IP-ハードウェア」スタックを使用して通信しますか?


15

私は特にインターネットに精通しているわけではなく、IoTテクノロジーは私を特に混乱させます。インターネット構造に関するこのスタンフォードのホワイトペーパーを読んでました。図2では、コンピューター(PC)がインターネットを介して別のコンピューターにメッセージを作成、処理、および送信するために使用するソフトウェア「スタック」の表現を示しています。

  • スマートフォン/テレビ/ゲームコンソールなど、あらゆる種類のコンピューターがこの形式を使用していますか?

  • OSは重要ですか?

  • (この点に関して)セルラーインターネットとWifi / Ethernetに違いはありますか?

  • 「アプリケーション」レイヤーを持たないように見える単機能デバイスについてはどうでしょうか。たとえば、Web接続カメラ、ライトスイッチ、サーモスタットなどです。



3
質問ごとに質問を1つだけ質問する方がはるかに優れていますが、これらの非常に基本的な質問では、それはちょっと難しいです。フォローアップの質問がある場合は、より具体的にするようにしてください。
ショーンフーリハネ

すべてのデバイスにはアプリケーション層があります。Web接続されたライトスイッチのアプリケーション層は、コマンドを受け取ったときにライトをオン/オフするソフトウェアです。
user253751

@immibisこれは恐ろしく退屈に聞こえますが、プロトコルスタック層はデバイスが所有できるプロパティではありません。TCP / IPでは、アプリケーション層には、IPコンピューターネットワークを介したプロセス間通信で使用される通信プロトコルとインターフェイスメソッドが含まれています。デバイスがシステムをホストし、そのシステムがアプリケーションを実行している可能性がありますが、デバイスにはアプリケーション層がありません。TCP / IP自体は概念モデルです。
ジュリアン

@SYS_V「デバイスにはアプリケーション層があります」と言うとき、「デバイスにはアプリケーション層としてTCP / IPが記述するものを実装するソフトウェアコンポーネントがあります」
-user253751

回答:


26

この投稿で取り上げる質問には、いくつかの潜在的な誤解や誤解があります。

  • 図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スイートプロトコルを利用する必要があります。

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

3.アプリケーション

以下からのアプリケーションソフトウェア(ウィキペディア):

アプリケーションプログラム(アプリまたは略してアプリケーション)は、ユーザーの利益のために調整された機能、タスク、またはアクティビティのグループを実行するように設計されたコンピュータープログラムです。アプリケーションの例には、ワードプロセッサ、スプレッドシート、会計アプリケーション、Webブラウザ、メディアプレーヤー、航空フライトシミュレータ、コンソールゲーム、またはフォトエディタが含まれます。集合名詞アプリケーションソフトウェアは、すべてのアプリケーションをまとめて指します。これは、主にコンピューターの実行に関係するシステムソフトウェアとは対照的です。

アプリケーションソフトウェア

アプリケーションは、システム上で実行されるユーザー空間プロセスと考えることができます。上記の例に加えて、これには(非カーネルモード)コンピューターウイルス、Webサーバー、カメラアプリケーション、センサーデータ集約プログラムなどのプログラムが含まれます。

アプリケーションがインターネットを介してデータを送受信する場合、ホストシステムのTCP / IPプロトコルスイートの実装を利用する必要があります。アプリケーション層から(Wikipedia):

TCP / IPでは、アプリケーション層には、インターネットプロトコル(IP)コンピューターネットワークを介したプロセス間通信で使用される通信プロトコルとインターフェイスメソッドが含まれています。アプリケーション層は、通信を標準化するだけで、基盤となるトランスポート層プロトコルに依存して、ホスト間データ転送チャネルを確立し、クライアント/サーバーまたはピアツーピアネットワークモデルでデータ交換を管理します。

TCP / IPプロトコルスイートのアプリケーション層には、ファイル転送プロトコル(FTP)、ドメインネームシステム(DNS)、そしておそらく最も有名なハイパーテキスト転送プロトコル(HTTP)などのプロトコルが含まれます。

例として、アプリケーションレイヤープロトコルHTTPは、(通常)異なるシステムで実行されている2つのプロセス間でデータを送信する方法を指定します:クライアントアプリケーション、Webブラウザー、およびサーバーアプリケーション、Webサーバープロセス。

潜在的な誤解の明確化

  1. 図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モデルなどの階層化ネットワークモデルの相互接続性ルールを決定します。スタックになるためには、ネットワークのレイヤー間で垂直に接続し、各伝送セグメントのエンドポイント間で水平に接続できるプロトコルが相互運用可能でなければなりません。


  1. スマートフォン/テレビ/ゲームコンソールなど、あらゆる種類のコンピューターがこの形式を使用していますか?

TCP / IPプロトコルスイートは、ハードウェアおよびオペレーティングシステムに依存しない通信仕様であり、形式ではありません。あるハードウェアプラットフォームで実行されているプロセスが、別のハードウェアプラットフォーム上のリモートシステムで実行されているプロセスと通信する必要があり、インターネット経由で通信が行われる場合、システムは

  • TCP / IPプロトコルスイートを正しく実装し、
  • プロセス間通信を実現するには、このスイート内の適切なプロトコルを使用する必要あります

  1. (この点に関して)セルラーインターネットとWifi / Ethernetに違いはありますか?

この質問に対する私の解釈は、「モバイルデバイスがGSMネットワークに接続する方法とモバイルデバイスがWiFiネットワークに接続する方法に違いはありますか?」です。

違いはネットワークインターフェイスレイヤーにあります。

この質問は、質問にリンクされている記事の図のTCP / IPプロトコルスイートの不十分な描写を明らかにします。参考のために、図を示します。

Shitty TCP / IP図

「ハードウェア」と呼ばれる最下層は、リンク層メディアアクセス制御(MAC)層、またはネットワークインターフェイス層と呼ばれるべきです。

IBMの「TCP / IPチュートリアルと技術概要」ページ34から:

リンク層またはデータリンク層とも呼ばれるネットワークインターフェース層は、実際のネットワークハードウェアへのインターフェースです。このインターフェイスは、信頼できる配信を提供する場合としない場合があり、パケット指向またはストリーム指向である場合があります。実際、TCP / IPはここでプロトコルを指定していませんが、利用可能なほぼすべてのネットワークインターフェイスを使用できます。これは、IPレイヤーの柔軟性を示しています。例としては、IEEE 802.2、X.25(それ自体信頼性が高い)、ATM、FDDI、さらにはSNAがあります。

以下は、正しく優れた描写です(The TCP / IP Guideから)。

TCP / IPスタックの優れた図

ネットワークインターフェイスレイヤーの説明が関連する理由は、セルラー/モバイルデバイスがGSMネットワークとWiFiネットワークに接続する方法に違いがあるのはこのレイヤーであるためです。

  • GSMネットワークに接続する場合、モバイルデバイスとベーストランシーバーステーション(BTS)間の接続を処理するために使用されるネットワークインターフェイスレイヤープロトコルは、通常3Gによって指定されます。

  • WiFiワイヤレスアクセスポイント(WAP)に接続する場合、使用されるプロトコルはIEEE 802.11規格で指定されています。


  1. 「アプリケーション」層を持たないように見える単機能デバイスについてはどうでしょうか-例:Web接続カメラ、照明スイッチ、サーモスタット

前述のように、TCP / IPプロトコルスイートのアプリケーション層のプロトコルは、プロセス間でアプリケーションデータを交換する方法の標準を提供します。

レイヤーは概念的です。システムまたはハードウェアプラットフォームには存在しません。

Web接続カメラ、ライトスイッチ、およびサーモスタットには、インターネット上でリモートシステム上で実行されるプロセスと通信するプロセスが実行されている場合があります(ファームウェアの更新の確認、サーバーとのデータ交換など)。これらのプロセスまたはアプリケーションは、TCP / IPプロトコルスイートの実装を利用して、このプロセス間通信を実現します。

TCP / IPプロトコルスイートと組み込みシステム(「IoT」)

従来のPCまたはサーバーで実行されるさまざまなアプリケーション層プロトコルを利用するさまざまなアプリケーションがありますが、ハードウェアプラットフォームがそれぞれのアクセスポイント(ネットワークインターフェイス/データリンク層)に接続する方法に関してはそれほど違いはありません。主に有線またはワイヤレスでイーサネット経由で実現されます。

TCP / IPを介して通信する多種多様な組み込みシステムに関しては、状況は多少異なります。これの説明を次に示します(Postscapesから)。

IoTおよびTCP / IP 1

IoTおよびTCP / IP 2

詳細については、次の記事を参照してください。

モノのインターネットの背後にあるプロトコルを理解する

IoT標準とプロトコル

IoTテクノロジーガイドブック


このレベルの詳細では、私のnetadmin側は、TCP / IPについての言葉がなく、TCP on IPを意味し、TCPはIPにまったくバインドされておらず、IPXネットワークにも実装されていることを悲しんでいます(シグルが近く、それらは2つの非常に異なるプロトコル
でした

1
@Tensibai IPXでのTCPは、SPX(つまり、信頼性の高いポートベースのトランスポートバージョン)とほとんど同じではないでしょうか?-しかし、これは、インターネット経由で(つまり、異なるネットワークを介して)通信する2つのホストがTCP / IPを実装する必要があるという主張は厳密には真実ではないことを思い出させます。ネット1のホストAとネット3のホストB接続ネット2 evenif例えばIPX / SPXは、純粋なTCP / IPで、ネット1と3 ...トンネル・ゲートウェイが提供される
ハーゲン・フォン・Eitzen

2
@hagen nope、SPXはTCPと同等でしたが、TCPシステムと完全に相互接続可能ではないため、TCP over IPXが開発されたため、IPとIPXのシステムでエンドツーエンドのTCP通信が可能になりました。 。そして、はい、インターネットは主にIP、MPLS、およびルーティングプロトコルに依存します(おそらく忘れてしまいます)、TCPはルーティング全体で何もしません。
テンシバイ

@Tensibaiエラーが発生した場合はお知らせください。修正するために最善を尽くします
ジュリアン

@SYS_Vは実際にはエラーではなく、いくつかのショートカットが少し気になります。TCP通信の観点では大丈夫だとしましょう:)問題を掘りたいと思う人にとって必要な情報はすべてあります。あなたの最初の段落であなたはOPに対して少し失礼だと感じています、私の懸念に対処するために明日(コンピュータから)編集を提案しようとします:)
Tensibai

12

スマートフォン/テレビ/ゲームコンソールなど、あらゆる種類のコンピューターがこの形式を使用していますか?

インターネットで何かを交換するには、どこかでIPスタックを通過する必要があります。

OSは重要ですか?

IPプロトコルはRFC 791で定義されているため、OS /ファームウェアはそれが何であれ、それに準拠する必要があります。

(この点に関して)セルラーインターネットとWifi / Ethernetに違いはありますか?

少し簡略化すると、ここでの違いは、レイヤー1(物理)無線信号とワイヤ上の電気信号にあります。詳細開放型システム間相互接続モデル(OSIモデル)ページウィキペディア。

それらはすべて、特定の媒体でレイヤー3(ネットワーク)、ここではIPを転置するのに役立ちます。

「アプリケーション」レイヤーを持たないように見える単機能デバイスについてはどうでしょうか。たとえば、Web接続カメラ、ライトスイッチ、サーモスタットなどです。

アプリケーション層は特定の通信プロトコル(HTTP、SSHなど)に関連します。たとえば、ChromeやFirefoxなどのアプリケーションである必要はありません。
通常、これらのプロトコルはTCPの上に実装され、確認応答の待機をブロックしたくない場合や、古くなったパケットを取得しても意味がない場合(音声通話、ストリーミング)はUDPの上に実装されます。他にもレイヤー4プロトコルがありますが、通常はICMPのような特定の用途向けpingです。TCPは、データが宛先に確実に到着するようにする場合に選択するプロトコルです。

例のサーモスタットなどの「リモートデバイス」の場合、HTTPなどの既存のプロトコルを使用するか、独自のプロトコルを使用してデータを送信できますが、通常はトランスポートだけではないため、アプリケーション層に残りますプロトコル。
レイヤー4でのみ行うことができますが、新しいプロトコルを作成する必要があり、オーバーヘッドは通常は価値がなく、システムと他のシステムとの互換性がなくなります。オープンスタンダードを使用する方が謙虚な意見です。


3
TCP-IPはすべてのOS(mbed / arduinoからMC WindowsおよびLinuxまで)でかなり一般的な「必須」であることを明確にする価値があるかもしれません。
ショーンフーリハネ

確かに、より高いレベルのプロトコルについては私に非常に暗示されているので、忘れてしまいます。
テンシバイ

回答1と回答2は非回答であり、回答3はTCP / IPプロトコルスイートではなくOSI参照モデルを使用して説明されています。この投稿の回答はいずれも、質問で行われている概念的なエラーに対処していません。
ジュリアン

2
@Sys_vノベルを書くつもりはありませんでした:)
天柴井

5

インターネットに接続されたすべてのデバイスが通信にTCP / IP(またはUDP)を使用するのは事実ですが、それは本当に物事が面白くなるスタックの次のレベルです。

最新のIoTデバイスはすべて、TLSを使用して暗号化と認証を提供します。これにより、(理論上)他の人が通過するメッセージを観察したり、干渉したりすることを防ぎます。TCP / IPスタックの重要な考慮事項は、送信される情報の大部分が簡単に観察できることです。これは、多くの場合、セキュリティの欠陥に非常に簡単につながります。

デバイスは「ソース」でインターネットに接続する必要がないため、Bluetooth経由でTCPを実装する必要はありません(例として)。また、最終ホップとして携帯電話プロトコル(通常のSMSやテキストなど)を使用するIoTデバイスが表示されることもあります。最終的に、これらのプロトコル(インストールされた環境用に何らかの方法で選択された)は、ハブデバイスによって「インターネット」にブリッジされる可能性があります。


2番目の段落の前提については、私たちは、後で今日より設計されたとしてもデバイスに遭遇し、まだ暗号無視することが怖いです
ハーゲン・フォン・Eitzen

1
簡単なことだけでなく、今日のベストプラクティスを使用して設計された現代的な意味。
ショーンフーリハネ

4

TCP over IPを使用するすべてのデバイスには、TCP / IPスタックが必要です。

プロトコルは標準化されているため、異なるメーカーのデバイスや異なるオペレーティングシステムを使用しているデバイスが相互に理解できます。

TCPは、データパケットの到着を保証します。そうしないと、送信者に損失が通知されます。TCPは、気付かないうちにデータを失う余裕がない場合に使用されます(銀行との通信など)。

また、パケットと「そこに到達することを望む」を送信するUDPもあります。これは、たとえば、数フレームの損失が致命的ではない音楽やビデオのストリーミングに使用できます。

重要な部分は標準化です。


2

スタック自体は仮想概念です。スタック内の各レイヤーは、物理メディア(電波またはその他の電子信号)を介して送信される最終ビットを変更します。スタック内の各レイヤーは、単一のコード単位またはハードウェア単位で設計する必要があるというルールはありません。たとえば、iEthernetチップはTCP、IP、MAC、およびPHYレイヤーを組み合わせており、開発者はTLSおよびアプリケーションレイヤーソフトウェアを実装するタスクを残しています。

ただし、すべてのビットは関連するさまざまなプロトコルに準拠する必要があり、このため、通常は各層を個別のエンティティとして設計する方が簡単であるため、独立してテストおよび検証できます。スマートフォン、スマートテレビ、ゲームコンソールなどのほとんどのデバイスは、通常、特定の分野に特化したサードパーティからチップを購入します。たとえば、ほとんどの携帯電話は、いくつかの異なるBluetoothチップのうちの1つを使用しています。これは、メーカーが新しい製品ごとに車輪を再発明することを心配する必要がないことを意味します。

理論的には、一部の小型で特殊なデバイスには、ネットワーク(アプリケーション、TLS、TCP、IP、PHY)のすべてのレイヤーを単一のコード単位として処理する組み込みSoC(チップ上のソフトウェア)を備えた単一のプロセッサーが含まれる場合があります。現時点では具体的な例を見つけることはできませんが、いくつかの小型、低電力または専用機能のデバイスがスタックのすべてのレイヤーを単一ユニットに組み合わせて消費電力を削減しても驚かないでしょう(バッテリー寿命を延ばします)。テレビ、電話、ゲームシステムなどのより大きく複雑な製品には、おそらく少なくとも3つのレイヤー(アプリケーション、オペレーティングシステム、ハードウェア)がありますが、トースターには1つまたは2つのレイヤーしかありません。


注:リンクした特定のトースターに1層または2層があると言っているのではなく、そのように設計されていて、単一目的のデバイスである場合は論理的です。


トースターがすべてのレイヤーを持たないようにするにはどうすればよいですか?ネットワークケーブルを接続するか、WiFi波に反応するため、PHYレイヤーを実装します。Inは、ローカルおよびリモートデバイス(iPhoneなど)と通信できます-したがって、IPレイヤーを実装します。データ(イメージ)の安全な送信が必要です-したがって、TCPをより適切に実装します。一部は送信されたデータの意味を理解する必要があるため、アプリケーション層が必ず最上部にあります。---(まあ、ネットワークの代わりにbluetoothを使用している場合はそうではないかもしれません...)
ハーゲンフォンアイツェン

@HagenvonEitzenプロトコルは配置される層を決定しますが、私のポイントは、TCP / IP「スタック」内の1つの「層」がソフトウェア/ハードウェア「スタック」内の単一の個別「層」ではないかもしれないということです。4つのレイヤーをすべて単独で実装するチップセットの例を挙げました。ハードウェア/ソフトウェアに関しては、これは接続性を実装する「スタック」内の「レイヤー」の1つにすぎません。そのチップと独自のTLSを実装するアプリケーションを使用すると、2層スタックになります。物理コンポーネントは、OPで説明されている4つの論理層と一致しません。
phyrfox
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.