Tutte le cose connesse a Internet usano lo stesso stack "Applicazione - TCP - IP - Hardware" per comunicare?


15

Non sono particolarmente esperto di Internet e le tecnologie IoT sono particolarmente confuse per me. Stavo leggendo questo white paper di Stanford sulla struttura di Internet. Nel diagramma 2, mostra una rappresentazione dello "stack" software che un computer (PC) userebbe per creare, elaborare e inviare un messaggio, su Internet, a un altro computer.

  • Tutti i tipi di computer - smartphone / tv / console di gioco, ecc. Usano questo formato?

  • Il sistema operativo è importante?

  • (A questo proposito) c'è qualche differenza tra Internet cellulare e Wifi / Ethernet?

  • Che dire dei dispositivi a funzione singola che non sembrano avere un livello "Applicazione", ad esempio una videocamera connessa al web, interruttori della luce o termostati.



3
È molto meglio porre una sola domanda per domanda, tuttavia è difficile per queste domande basilari. Se hai domande di follow-up, assicurati di provare a renderle più specifiche.
Sean Houlihane,

Tutti i dispositivi hanno un livello applicazione. Il livello applicazione per un interruttore luci connesso al web è il software che accende e spegne la luce quando riceve un comando.
user253751

@immibis sembrerà orribilmente pedante, ma i livelli di stack di protocollo non sono proprietà che un dispositivo può possedere. In TCP / IP, il livello applicazione contiene i protocolli di comunicazione e i metodi di interfaccia utilizzati nelle comunicazioni da processo a processo attraverso una rete di computer IP. Un dispositivo può ospitare un sistema e quel sistema può eseguire applicazioni, ma un dispositivo non ha un livello applicazione. TCP / IP stesso è un modello concettuale.
giuliano

@SYS_V Quando dico "il dispositivo ha un livello applicazione" Voglio dire "il dispositivo ha un componente software che implementa quello che TCP / IP descrive come il livello applicazione"
user253751

Risposte:


26

Ci sono alcuni potenziali malintesi o incomprensioni nella domanda che verranno affrontati in questo post.

  • Nel diagramma 2, mostra una rappresentazione dello "stack" software che un computer (PC) userebbe per creare, elaborare e inviare un messaggio, su Internet, a un altro computer

  • Tutti i tipi di computer - smartphone / tv / console di gioco, ecc. Usano questo formato?

  • (A questo proposito) c'è qualche differenza tra Internet cellulare e Wifi / Ethernet?

  • Che dire dei dispositivi a funzione singola che non sembrano avere un livello "Applicazione", ad esempio una videocamera connessa al web, interruttori della luce o termostati.

La presenza di queste idee sbagliate richiede l'inclusione di una spiegazione di quanto segue (al fine di fornire un contesto per la discussione successiva):

  • Che cos'è Internet
  • Che cos'è la suite di protocolli TCP / IP
  • Che cos'è un'applicazione

Quindi le domande verranno indirizzate direttamente.

Si noti che data la loro importanza e complessità, intere serie di libri sono stati scritti sulla suite di protocolli TCP / IP. Le definizioni e le spiegazioni qui saranno tratte principalmente da Wikipedia, TCP / IP Illustrated Volume 1 Seconda edizione: The Protocols by Stevens and Fall e dal tutorial TCP / IP di IBM e panoramica tecnica .

1. Internet

Internet è tecnicamente una Wide Area Network (WAN) , ma un modo più utile pensare è come una sorta di SuperNetwork (una rete di reti) o di un aggregato di diversi interrelazioni connessi netti opere. Ecco un'immagine dei percorsi di instradamento attraverso una parte di Internet:

Visualizzazione del percorso

  • Internet è costituito da molte reti connesse
  • Una rete può essere composta da 1 o più sistemi ( host )
  • Un sistema connesso in genere funziona su una sorta di piattaforma hardware
  • vi è una variazione significativa nei tipi di sistemi collegati alle reti e nell'hardware su cui sono in esecuzione

Una lettura divertente su come funziona Internet può essere trovata nell'articolo di Arstechnica Come funziona Internet: fibra sottomarina, cervelli in barattoli e cavi coassiali .

In che modo i diversi sistemi in esecuzione su piattaforme hardware diverse collegate a reti diverse sono in grado di comunicare tra loro? Come è possibile la comunicazione tra una gamma così vasta ed eterogenea di sistemi e reti? Come può avvenire tutto questo contemporaneamente?

2. La suite di protocolli Internet

La risposta è fornita dalla suite di protocolli Internet, nota anche come suite di protocolli TCP / IP. Queste domande sono state prese in considerazione durante il processo di progettazione dell'architettura di Internet (TCP / IP Illustrated, Sezione 1.1: Principi di architettura):

Numerosi obiettivi hanno guidato la creazione dell'architettura di Internet. In [C88], Clark racconta che l'obiettivo principale era "sviluppare una tecnica efficace per l'utilizzo multiplex di reti interconnesse esistenti". L'essenza di questa affermazione è che l'architettura di Internet dovrebbe essere in grado di interconnettere più reti distinte e che molteplici attività dovrebbero essere in grado di funzionare contemporaneamente sulla rete interconnessa risultante .

Da Internet Protocol Suite (Wikipedia):

La suite di protocolli Internet è il modello concettuale e l'insieme dei protocolli di comunicazione utilizzati su Internet e reti informatiche simili.

La suite di protocolli Internet fornisce comunicazioni end-to-end che specificano come i dati devono essere raggruppati, indirizzati, trasmessi, instradati e ricevuti . Questa funzionalità è organizzata in quattro livelli di astrazione che vengono utilizzati per ordinare tutti i protocolli correlati in base all'ambito della rete coinvolta.

Un modo di pensare alla suite di protocolli TCP / IP è come una specifica su come i processi in esecuzione su sistemi diversi e reti diverse possono comunicare tra loro. In sostanza, la suite di protocolli TCP / IP fornisce uno standard per la comunicazione tra processi.

Qualsiasi sistema che implementa correttamente la suite di protocolli TCP / IP può utilizzare la funzionalità fornita per consentire ai propri processi di comunicare su Internet. Infatti, affinché i processi possano comunicare su Internet con altri processi in esecuzione su sistemi remoti su altre reti, un sistema deve utilizzare protocolli suite TCP / IP conformi agli standard.

Suite di protocollo TCP / IP

3. Applicazioni

Dal software applicativo (Wikipedia):

Un programma applicativo (in breve app o applicazione) è un programma per computer progettato per eseguire un gruppo di funzioni, compiti o attività coordinate a beneficio dell'utente. Esempi di un'applicazione includono un elaboratore di testi, un foglio di calcolo, un'applicazione di contabilità, un browser Web, un lettore multimediale, un simulatore di volo aeronautico, un gioco per console o un editor di foto. Il software applicativo di nome collettivo si riferisce a tutte le applicazioni collettivamente. Ciò contrasta con il software di sistema, che è principalmente coinvolto nell'esecuzione del computer.

Software applicativo

Un'applicazione può essere pensata come un processo di spazio utente in esecuzione su un sistema. Oltre agli esempi sopra elencati, questo può includere programmi come virus per computer (modalità non kernel), server Web, applicazioni della fotocamera e programmi di aggregazione dei dati dei sensori.

Quando un'applicazione trasmette e riceve dati su Internet, deve utilizzare l'implementazione della suite di protocolli TCP / IP del suo sistema host. Dal livello applicazione (Wikipedia):

In TCP / IP, il livello applicazione contiene i protocolli di comunicazione e i metodi di interfaccia utilizzati nelle comunicazioni da processo a processo attraverso una rete di computer con protocollo Internet (IP). Il livello dell'applicazione standardizza solo la comunicazione e dipende dai protocolli del livello di trasporto sottostante per stabilire canali di trasferimento dati da host a host e gestire lo scambio di dati in un modello di rete client-server o peer-to-peer.

Il livello applicativo della suite di protocolli TCP / IP include protocolli come File Transfer Protocol (FTP), Domain Name System (DNS) e probabilmente il più famoso, Hypertext Transfer Protocol (HTTP).

Ad esempio, il protocollo di livello applicazione HTTP specifica come i dati vengono trasmessi tra 2 processi in esecuzione (normalmente) su sistemi diversi: l'applicazione client, un browser Web e l'applicazione server, il processo del server Web.

Chiarimento di potenziali idee sbagliate

  1. Nel diagramma 2, mostra una rappresentazione dello "stack" software che un computer (PC) userebbe per creare, elaborare e inviare un messaggio, su Internet, a un altro computer.

La suite di protocolli TCP / IP non è uno stack software. Da Technopedia :

Uno stack software è un gruppo di programmi che lavorano in tandem per produrre un risultato o raggiungere un obiettivo comune. Lo stack software si riferisce anche a qualsiasi set di applicazioni che funziona in un ordine specifico e definito verso un obiettivo comune o a qualsiasi gruppo di utility o applicazioni di routine che funzionano come un set. File installabili, definizioni software di prodotti e patch possono essere inclusi in uno stack software. Uno dei popolari stack software basati su Linux è LAMP (Linux, Apache, MYSQL, Perl o PHP o Python). WINS (Windows Server, Internet Explorer, .NET, SQL Server) è un popolare stack software basato su Windows.

Piuttosto, è uno stack di protocollo, solitamente implementato dal kernel (anche da Technopedia ):

Uno stack di protocolli fa riferimento a un gruppo di protocolli in esecuzione contemporaneamente utilizzati per l'implementazione della suite di protocolli di rete.

I protocolli in uno stack determinano le regole di interconnettività per un modello di rete a livelli come nei modelli OSI o TCP / IP. Per diventare uno stack, i protocolli devono essere interoperabili, in grado di connettersi sia in verticale tra gli strati della rete sia in orizzontale tra i punti finali di ciascun segmento di trasmissione.


  1. Tutti i tipi di computer - smartphone / tv / console di gioco, ecc. Usano questo formato ?

La suite di protocolli TCP / IP è una specifica di comunicazione indipendente dall'hardware e dal sistema operativo, non un formato . Se un processo in esecuzione su una piattaforma hardware deve comunicare con un processo in esecuzione su un sistema remoto su una piattaforma hardware diversa e la comunicazione avviene su Internet, i sistemi devono

  • implementare correttamente la suite di protocolli TCP / IP e
  • i protocolli appropriati all'interno di questa suite devono essere utilizzati per realizzare la comunicazione tra processi

  1. (A questo proposito) c'è qualche differenza tra Internet cellulare e Wifi / Ethernet?

La mia interpretazione di questa domanda è "C'è una differenza nel modo in cui un dispositivo mobile si connette a una rete GSM e nel modo in cui un dispositivo mobile si connette a una rete WiFi?"

La differenza sta nel livello dell'interfaccia di rete.

Questa domanda mostra la scarsa rappresentazione della suite di protocolli TCP / IP nel diagramma nell'articolo collegato alla domanda. Per riferimento, ecco il diagramma:

Diagramma TCP / IP di merda

Il livello più basso, indicato come "hardware", dovrebbe essere indicato come livello di collegamento , livello di controllo di accesso ai supporti (MAC) o livello di interfaccia di rete .

Dalla pagina 34 "Tutorial TCP / IP e panoramica tecnica" di IBM:

Il livello dell'interfaccia di rete, chiamato anche livello di collegamento o livello di collegamento dati, è l'interfaccia per l'hardware di rete effettivo. Questa interfaccia può fornire o meno una consegna affidabile e può essere orientata ai pacchetti o allo stream. In effetti, TCP / IP non specifica alcun protocollo qui, ma può utilizzare quasi tutte le interfacce di rete disponibili, il che illustra la flessibilità del livello IP. Esempi sono IEEE 802.2, X.25 (che è di per sé affidabile), ATM, FDDI e persino SNA.

Ecco una rappresentazione corretta e superiore (dalla Guida TCP / IP ):

Schema superiore dello stack TCP / IP

Il motivo per cui la discussione sul livello dell'interfaccia di rete è rilevante è che è a questo livello che esiste una differenza nel modo in cui un dispositivo cellulare / mobile si connette a una rete GSM rispetto a una rete WiFi.

  • quando ci si collega a una rete GSM, il protocollo di livello dell'interfaccia di rete impiegato per gestire la connessione tra il dispositivo mobile e la stazione base ricetrasmittente (BTS) è in genere specificato da 3G

  • quando ci si collega a un punto di accesso wireless WiFi (WAP), il protocollo utilizzato è specificato dallo standard IEEE 802.11 .


  1. Che dire dei dispositivi a funzione singola che non sembrano avere un livello "Applicazione", ad esempio una videocamera connessa al web, interruttori della luce o termostati

Come descritto in precedenza, i protocolli nel livello applicazione della suite di protocolli TCP / IP forniscono uno standard per il modo in cui i dati dell'applicazione vengono scambiati tra i processi.

Gli strati sono concettuali. Non risiedono in un sistema o su una piattaforma hardware.

Le telecamere, gli interruttori della luce e i termostati collegati al Web possono avere processi in esecuzione su di essi che comunicano su Internet con processi in esecuzione su sistemi remoti (controllo degli aggiornamenti del firmware, scambio di dati con un server, ecc.). Questi processi o applicazioni utilizzeranno l'implementazione della suite di protocolli TCP / IP per realizzare questa comunicazione tra processi.

La suite di protocolli TCP / IP e i sistemi integrati ("IoT")

Sebbene esistano numerose applicazioni diverse che utilizzano protocolli a livello di applicazione diversi in esecuzione su PC o server tradizionali, non vi è molta variazione in termini di modalità di connessione delle piattaforme hardware ai rispettivi punti di accesso (interfaccia di rete / livello di collegamento dati). Viene realizzato principalmente via cavo o wireless tramite Ethernet.

La situazione è leggermente diversa quando si tratta dell'ampia varietà di sistemi integrati che comunicano tramite TCP / IP. Ecco un'illustrazione di questo (da Postscapes ):

IoT e TCP / IP 1

IoT e TCP / IP 2

Per maggiori informazioni, vedi questi articoli:

Comprensione dei protocolli dietro l'Internet delle cose

Standard e protocolli IoT

Guida alla tecnologia IoT


A questo livello di dettagli il mio lato netadmin è triste che non ci sia una parola su TCP / IP che significhi TCP su IP, TCP non è affatto legato a IP, è stato implementato anche su reti IPX (un de anche se il sigle è vicino, c'erano 2 protocolli molto diversi)
Tensibai,

1
@Tensibai TCP su IPX non sarebbe sostanzialmente lo stesso di SPX (ovvero la versione di trasporto affidabile e basata su porta)? - Ma questo mi ricorda che l'affermazione secondo cui due host che vogliono comunicare su Internet (cioè attraverso reti diverse) devono implementare TCP / IP non è strettamente vera: l'host A su net 1 e l'host B su net 3 potrebbero parlare ad es. IPX / SPX anche se la rete di collegamento 2 è TCP / IP puro, a condizione che vi siano gateway tunnel nella rete 1 e 3 ...
Hagen von Eitzen,

2
@hagen no, SPX era l'equivalente di TCP, ma assolutamente non interconnettibile con un sistema TCP, quindi perché TCP su IPX è stato sviluppato, per consentire comunicazioni TCP end-to-end per sistemi su IP e IPX con un semplice router di livello 3 tra . E sì, Internet si basa principalmente su IP, MPLS e protocolli di routing (probabilmente ne dimenticherò alcuni), TCP non gioca nulla nel routing generale, circola semplicemente su di esso.
Tensibai,

@Tensibai Se ho fatto un errore o errori, per favore fatemelo sapere e farò del mio meglio per correggerli
Julian

@SYS_V non è proprio un errore, alcune scorciatoie mi danno un po 'fastidio. diciamo che va bene dal punto di vista della comunicazione TCP :) Ci sono tutte le informazioni necessarie per qualcuno disposto a scavare il problema. Sento che sei un po 'maleducato per l'OP nel tuo primo paragrafo, proverò a proporre una modifica domani (da un computer) per rispondere alle mie preoccupazioni :)
Tensibai,

12

Tutti i tipi di computer - smartphone / tv / console di gioco, ecc. Usano questo formato?

Per qualcosa da scambiare su Internet, dovrà passare attraverso uno stack IP da qualche parte.

Il sistema operativo è importante?

Il protocollo IP è definito da un RFC 791 , quindi il sistema operativo / firmware deve conformarsi ad esso, qualunque esso sia.

(A questo proposito) c'è qualche differenza tra Internet cellulare e Wifi / Ethernet?

Semplificando un po ', la differenza qui sarà al segnale radio di livello 1 (fisico) rispetto al segnale elettrico sui fili. Maggiori dettagli sulla pagina wikipedia del modello Open Systems Interconnection (modello OSI) .

Servono tutti a trasporre il layer 3 (Network), IP nel caso qui, sui loro supporti specifici.

Che dire dei dispositivi a funzione singola che non sembrano avere un livello "Applicazione", ad esempio una videocamera connessa al web, interruttori della luce o termostati.

Il livello applicazione si riferisce a un protocollo di comunicazione specifico (HTTP, SSH, ecc.), Ad esempio non deve essere un'applicazione come Chrome o Firefox.
Di solito questi protocolli saranno implementati su TCP , alcuni sono su UDP quando c'è un desiderio di non bloccare l'attesa del riconoscimento o quando ottenere un pacchetto obsoleto non ha senso (chiamate vocali, streaming). Ci sono altri protocolli di livello 4 ma di solito per usi specifici, come ICMP per ping. TCP è il protocollo preferito quando si desidera assicurarsi che alcuni dati siano arrivati ​​a destinazione.

Per un "dispositivo remoto", come il termostato nel tuo esempio, può usare protocolli già esistenti come HTTP o utilizzare uno proprietario per inviare i suoi dati, che saranno comunque a livello di Applicazione di solito in quanto non sarà solo un trasporto protocollo.
Può essere fatto solo al livello 4, ma ciò ha bisogno di creare un nuovo protocollo e l'overhead di solito non ne vale la pena e rende il sistema incompatibile con altri, usando standard aperti è un approccio migliore secondo la mia modesta opinione.


3
Forse vale la pena chiarire che TCP-IP è un "must have" abbastanza comune in qualsiasi sistema operativo (da mbed / arduino fino a MC Windows e Linux).
Sean Houlihane,

In effetti, mi sembra così implicito per protocolli di livello superiore che me lo dimentico.
Tensibai,

la risposta 1 e la risposta 2 sono non risposte e la risposta 3 è spiegata utilizzando il modello di riferimento OSI anziché la suite di protocolli TCP / IP. Nessuna delle risposte in questo post affronta gli errori concettuali commessi nella domanda.
giuliano

2
@Sys_v Non avevo intenzione di scrivere un Novell :)
Tensibai,

5

Anche se è vero che qualsiasi dispositivo connesso a Internet utilizzerà TCP / IP (o UDP) per la comunicazione, è davvero il livello successivo nello stack in cui le cose diventano interessanti.

Qualsiasi moderno dispositivo IoT utilizzerà TLS per fornire crittografia e autenticazione. Ciò impedisce (in teoria) a chiunque altro di osservare o interferire con i messaggi che vengono trasmessi. Una considerazione importante dello stack TCP / IP è che gran parte delle informazioni che vengono trasmesse possono essere osservate in modo banale - e questo spesso porta molto facilmente a difetti di sicurezza.

I dispositivi non devono connettersi a Internet "alla fonte", quindi non è necessario implementare TCP via bluetooth (come esempio). Potresti anche vedere i dispositivi IoT che utilizzano i protocolli di telefonia mobile (come SMS o SMS normali) come hop finale. Alla fine questi protocolli (selezionati in qualche modo per l'ambiente installato) potrebbero essere collegati a "Internet" da un dispositivo hub.


Per quanto riguarda la premessa del secondo paragrafo, temo che potremmo incontrare anche dispositivi progettati più tardi di oggi e ancora ignorando la crittografia
Hagen von Eitzen,

1
Significato moderno progettato usando le migliori pratiche di oggi, non solo ciò che è facile.
Sean Houlihane,

4

Tutti i dispositivi che desiderano utilizzare TCP su IP richiedono uno stack TCP / IP.

Il protocollo è standardizzato, in modo che dispositivi di produttori diversi o che utilizzano sistemi operativi diversi possano capirsi.

Si noti che TCP garantisce l'arrivo dei pacchetti di dati o che il mittente verrà avvisato della loro perdita. Il protocollo TCP verrebbe utilizzato quando non puoi permetterti di perdere alcun dato senza esserne consapevole (ad es. Comunicazione con la tua banca).

C'è anche UDP, che invia pacchetti e "spera che ci arrivino". Questo può essere usato, ad esempio, per lo streaming di musica o video, in cui la perdita di alcuni fotogrammi non è fatale.

La parte importante è la standardizzazione.


2

Lo stack stesso è un concetto virtuale. Ogni strato nello stack modifica i bit finali che vengono inviati attraverso il mezzo fisico (onde radio o altri segnali elettronici). Non esiste una regola che dice che ogni livello nello stack deve essere progettato in una singola unità discreta di codice o hardware. Ad esempio, i chip iEthernet combinano i livelli TCP, IP, MAC e PHY, lasciando agli sviluppatori il compito di implementare il software TLS e il livello di applicazione.

Detto questo, tutti i bit devono essere conformi ai vari protocolli coinvolti e, per questo motivo, di solito è più semplice progettare ogni livello come entità separata, in modo che possano essere testati e verificati in modo indipendente. La maggior parte dei dispositivi, inclusi smartphone, smart TV e console di gioco, in genere acquista i propri chip da terze parti specializzate in alcune aree. Ad esempio, la maggior parte dei telefoni utilizza solo uno dei pochi chip bluetooth diversi; ciò significa che il produttore non deve preoccuparsi di reinventare la ruota con ogni nuovo prodotto.

In teoria, alcuni piccoli dispositivi specializzati potrebbero avere un solo processore con SoC (Software on Chip) integrato che gestisce tutti i livelli di rete (applicazione, TLS, TCP, IP, PHY) come una singola unità di codice discreta. Non riesco a trovare esempi concreti in questo momento, ma non mi sorprenderebbe se alcuni dispositivi con funzioni piccole, a bassa potenza o dedicati combinassero tutti gli strati dello stack in una singola unità per ridurre il consumo energetico (prolungare la durata della batteria). I prodotti più grandi e più complicati, come televisori, telefoni e sistemi di gioco hanno probabilmente almeno 3 livelli (applicazioni, sistema operativo e componenti hardware), mentre un tostapane potrebbe avere solo 1 o 2 strati.


Nota: non sto dicendo che il particolare tostapane che ho collegato abbia 1 o 2 livelli, solo che sarebbe logico se fosse progettato in quel modo, essendo un dispositivo monouso.


In che modo il tostapane potrebbe non avere tutti i livelli? È possibile collegare un cavo di rete o reagisce alle onde WiFi, quindi implementa il livello PHY. Può comunicare con dispositivi locali e remoti (come il tuo iPhone), quindi implementa il livello IP. Richiede una trasmissione sicura dei dati (l'immagine), quindi implementa meglio TCP. Alcune parti devono dare un senso ai dati trasmessi, quindi abbiamo sicuramente un livello di applicazione in cima. --- (Beh, forse no se invece di collegarsi in rete usano il bluetooth ...)
Hagen von Eitzen,

@HagenvonEitzen I protocolli dettano i livelli che sono posizionati, ma il mio punto è che un "livello" nello "stack" TCP / IP potrebbe non essere un singolo "livello" discreto in uno "stack" software / hardware. Ho dato un esempio di un chipset che implementa quattro livelli da solo. In termini di hardware / software, questo è solo uno "strato" nello "stack" che implementa la connettività. L'uso di quel chip più un'applicazione che implementa il proprio TLS produce uno stack a due livelli; i componenti fisici non si allineano con i quattro livelli logici descritti nel PO.
phyrfox,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.