Todas as coisas conectadas à Internet usam a mesma pilha "Aplicativo - TCP - IP - Hardware" para se comunicar?

15

Não sou particularmente conhecedor da Internet, e as tecnologias de IoT são especialmente confusas para mim. Eu estava lendo este white paper de Stanford sobre estrutura da Internet. No diagrama 2, ele mostra uma representação da "pilha" de software que um computador (PC) usaria para criar, processar e enviar uma mensagem, através da Internet, para outro computador.

  • Todos os tipos de computadores - smartphones / TVs / consolas de jogos, etc. usam este formato?

  • O sistema operacional importa?

  • (A este respeito) existe alguma diferença entre internet celular e Wifi / Ethernet?

  • E os dispositivos de função única que não parecem ter uma camada "Aplicativo" - por exemplo, câmera conectada à Web, interruptores de luz ou termostatos.

BestMillimeter
fonte
Relacionados iot.stackexchange.com/questions/1119
Sean Houlihane
3
É muito melhor fazer apenas uma pergunta por pergunta - no entanto, isso é meio difícil para essas perguntas muito básicas. Se você tiver perguntas de acompanhamento, tente torná-las mais específicas.
21717 Sean Houlihane
Todos os dispositivos têm uma camada de aplicação. A camada de aplicativo para um interruptor de luz conectado à Web é o software que liga e desliga a luz quando recebe um comando.
precisa saber é o seguinte
@immibis, isso parecerá terrivelmente pedante, mas as camadas da pilha de protocolos não são propriedades que um dispositivo possa possuir. No TCP / IP, a camada de aplicativo contém os protocolos de comunicação e os métodos de interface usados ​​nas comunicações processo a processo em uma rede de computadores IP. Um dispositivo pode hospedar um sistema e esse sistema pode estar executando aplicativos, mas um dispositivo não possui uma camada de aplicativo. O próprio TCP / IP é um modelo conceitual.
Julian
@SYS_V Quando eu digo "o dispositivo tem uma camada de aplicação" Quero dizer "o dispositivo tem algum componente de software que implementa o TCP / IP descreve como a camada de aplicação"
user253751

Respostas:

26

Existem alguns possíveis equívocos ou mal-entendidos na pergunta que serão abordados neste post.

  • No diagrama 2, mostra uma representação da "pilha" de software que um computador (PC) usaria para criar, processar e enviar uma mensagem, através da Internet, para outro computador

  • Todos os tipos de computadores - smartphones / TVs / consolas de jogos, etc. usam este formato?

  • (A este respeito) existe alguma diferença entre internet celular e Wifi / Ethernet?

  • E os dispositivos de função única que não parecem ter uma camada "Aplicativo" - por exemplo, câmera conectada à web, interruptores de luz ou termostatos.

A presença desses conceitos errôneos requer a inclusão de uma explicação do seguinte (a fim de fornecer contexto para a discussão subsequente):

  • O que é a Internet
  • O que é o conjunto de protocolos TCP / IP
  • O que é uma aplicação

Em seguida, as perguntas serão abordadas diretamente.

Observe que, dada sua importância e complexidade, uma série inteira de livros foi escrita no conjunto de protocolos TCP / IP. As definições e explicações aqui serão extraídas principalmente da Wikipedia, TCP / IP Volume 1 ilustrado 1ª edição: Os protocolos de Stevens e Fall e do Tutorial TCP / IP e visão geral técnica da IBM .

1. A Internet

A Internet é tecnicamente um Wide Area Network (WAN) , mas uma maneira mais útil para pensar sobre isso é como uma espécie de SuperNetwork (uma rede de redes) ou um agregado de diversos inter- conectadas líquidas obras. Aqui está uma imagem dos caminhos de roteamento através de uma parte da Internet:

Visualização do caminho da rota

  • A Internet consiste em muitas redes conectadas
  • Uma rede pode consistir em 1 ou mais sistemas ( host )
  • Um sistema conectado normalmente é executado em algum tipo de plataforma de hardware
  • existe uma variação significativa nos tipos de sistemas conectados às redes e no hardware em que são executados

Uma leitura divertida sobre como a Internet funciona pode ser encontrada no artigo da Arstechnica: Como a Internet funciona: fibra submarina, cérebros em potes e cabos coaxiais .

Então, como diferentes sistemas em execução em diferentes plataformas de hardware conectadas a redes diferentes são capazes de se comunicar? Como é possível a comunicação entre uma variedade tão vasta e heterogênea de sistemas e redes? Como tudo isso pode acontecer simultaneamente?

2. O conjunto de protocolos da Internet

A resposta é fornecida pelo conjunto de protocolos da Internet, também conhecido como conjunto de protocolos TCP / IP. Essas questões foram consideradas durante o processo de design da arquitetura da Internet (TCP / IP ilustrado, seção 1.1: princípios arquitetônicos):

Vários objetivos orientaram a criação da arquitetura da Internet. Em [C88], Clark relata que o objetivo principal era “desenvolver uma técnica eficaz para a utilização multiplexada das redes interconectadas existentes”. A essência dessa afirmação é que a arquitetura da Internet deve ser capaz de interconectar várias redes distintas e que várias atividades devem poder executar simultaneamente na rede interconectada resultante .

Do Internet Protocol Suite (Wikipedia):

O conjunto de protocolos da Internet é o modelo conceitual e o conjunto de protocolos de comunicação usados ​​na Internet e em redes de computadores similares.

O conjunto de protocolos da Internet fornece comunicação de dados de ponta a ponta, especificando como os dados devem ser empacotados, endereçados, transmitidos, roteados e recebidos . Essa funcionalidade é organizada em quatro camadas de abstração, usadas para classificar todos os protocolos relacionados de acordo com o escopo da rede envolvida.

Uma maneira de pensar no conjunto de protocolos TCP / IP é como uma especificação de como os processos executados em diferentes sistemas e redes diferentes podem se comunicar. Em essência, o conjunto de protocolos TCP / IP fornece um padrão para comunicação entre processos.

Qualquer sistema que implemente corretamente o conjunto de protocolos TCP / IP pode usar a funcionalidade que fornece para permitir que seus processos se comuniquem pela Internet. De fato, para que os processos se comuniquem pela Internet com outros processos executados em sistemas remotos em outras redes, um sistema deve utilizar protocolos de conjunto de TCP / IP compatíveis com os padrões.

Conjunto de protocolos TCP / IP

3. Aplicações

Do software de aplicação (Wikipedia):

Um programa de aplicativo (aplicativo ou aplicativo para abreviar) é um programa de computador projetado para executar um grupo de funções, tarefas ou atividades coordenadas para o benefício do usuário. Exemplos de um aplicativo incluem um processador de texto, uma planilha, um aplicativo de contabilidade, um navegador da web, um media player, um simulador de vôo aeronáutico, um jogo de console ou um editor de fotos. O software de aplicativo substantivo coletivo refere-se a todos os aplicativos coletivamente. Isso contrasta com o software do sistema, que está principalmente envolvido na execução do computador.

Software de aplicação

Um aplicativo pode ser pensado como um processo de espaço do usuário em execução em um sistema. Além dos exemplos listados acima, isso pode incluir programas como vírus de computador (modo não-kernel), servidores da Web, aplicativos de câmera e programas de agregação de dados de sensores.

Quando um aplicativo transmite e recebe dados pela Internet, deve utilizar a implementação do conjunto de protocolos TCP / IP do sistema host. Na camada Aplicativo (Wikipedia):

No TCP / IP, a camada de aplicativo contém os protocolos de comunicação e os métodos de interface usados ​​nas comunicações processo a processo através de uma rede de computadores IP. A camada de aplicativo padroniza apenas a comunicação e depende dos protocolos subjacentes da camada de transporte para estabelecer canais de transferência de dados host a host e gerenciar a troca de dados em um modelo de rede cliente-servidor ou ponto a ponto.

A camada de aplicativo do conjunto de protocolos TCP / IP inclui protocolos como FTP (File Transfer Protocol), DNS (Domain Name System) e provavelmente o mais famoso protocolo de transferência de hipertexto (HTTP).

Como exemplo, o protocolo da camada de aplicativos HTTP especifica como os dados são transmitidos entre 2 processos em execução em (geralmente) sistemas diferentes: o aplicativo cliente, um navegador da web e o aplicativo do servidor, o processo do servidor da web.

Esclarecimento de possíveis equívocos

  1. No diagrama 2, ele mostra uma representação da "pilha" de software que um computador (PC) usaria para criar, processar e enviar uma mensagem, pela Internet, para outro computador.

O conjunto de protocolos TCP / IP não é uma pilha de software. Da Technopedia :

Uma pilha de software é um grupo de programas que trabalham em conjunto para produzir um resultado ou atingir um objetivo comum. A pilha de software também se refere a qualquer conjunto de aplicativos que funcione em uma ordem específica e definida em direção a um objetivo comum, ou a qualquer grupo de utilitários ou aplicativos de rotina que funcionem como um conjunto. Arquivos instaláveis, definições de software de produtos e patches podem ser incluídos em uma pilha de software. Uma das mais populares pilhas de software baseadas em Linux é o LAMP (Linux, Apache, MYSQL, Perl ou PHP ou Python). O WINS (Windows Server, Internet Explorer, .NET, SQL Server) é uma pilha de software popular baseada em Windows.

Pelo contrário, é uma pilha de protocolos, geralmente implementada pelo kernel (também da Technopedia ):

Uma pilha de protocolos refere-se a um grupo de protocolos que são executados simultaneamente e são empregados para a implementação do conjunto de protocolos de rede.

Os protocolos em uma pilha determinam as regras de interconectividade para um modelo de rede em camadas, como nos modelos OSI ou TCP / IP. Para se tornar uma pilha, os protocolos devem ser interoperáveis, podendo conectar-se verticalmente entre as camadas da rede e horizontalmente entre os pontos finais de cada segmento de transmissão.


  1. Todos os tipos de computadores - smartphones / TVs / consolas de jogos, etc. usam este formato ?

O conjunto de protocolos TCP / IP é uma especificação de comunicação independente de hardware e sistema operacional, não um formato . Se um processo em execução em uma plataforma de hardware precisar se comunicar com um processo em execução em um sistema remoto em uma plataforma de hardware diferente e a comunicação ocorrer pela Internet, os sistemas deverão

  • implementar corretamente o conjunto de protocolos TCP / IP e
  • os protocolos apropriados nesse conjunto devem ser usados ​​para realizar a comunicação entre processos

  1. (A este respeito) existe alguma diferença entre internet celular e Wifi / Ethernet?

Minha interpretação desta pergunta é "Existe alguma diferença na maneira como um dispositivo móvel se conecta a uma rede GSM e na maneira como um dispositivo móvel se conecta a uma rede WiFi?"

A diferença está na camada da interface de rede.

Esta pergunta expõe a má representação do conjunto de protocolos TCP / IP no diagrama no artigo vinculado na pergunta. Para referência, aqui está o diagrama:

Diagrama de TCP / IP de merda

A camada mais baixa, chamada de "hardware", deve ser chamada de camada de link , camada de controle de acesso à mídia (MAC) ou camada de interface de rede .

Na página "Visão geral técnica e técnica do TCP / IP" da IBM 34:

A camada da interface de rede, também chamada camada de link ou camada de link de dados, é a interface para o hardware de rede real. Essa interface pode ou não fornecer uma entrega confiável e pode ser orientada por pacotes ou fluxos. De fato, o TCP / IP não especifica nenhum protocolo aqui, mas pode usar quase qualquer interface de rede disponível, o que ilustra a flexibilidade da camada IP. Exemplos são IEEE 802.2, X.25 (que é confiável por si só), ATM, FDDI e até SNA.

Aqui está uma representação correta e superior (do Guia TCP / IP ):

Diagrama superior da pilha TCP / IP

A razão pela qual a discussão sobre a camada da interface de rede é relevante é que é nessa camada que há uma diferença na maneira como um dispositivo celular / móvel se conecta a uma rede GSM versus uma rede WiFi.

  • ao conectar-se a uma rede GSM, o protocolo da camada de interface de rede empregado para lidar com a conexão entre o dispositivo móvel e a estação base do transceptor (BTS) é normalmente especificado por 3G

  • ao conectar-se a um ponto de acesso sem fio WiFi (WAP), o protocolo usado é especificado pelo padrão IEEE 802.11 .


  1. E os dispositivos de função única que não parecem ter uma camada "Aplicativo" - por exemplo, câmera conectada à Web, interruptores de luz ou termostatos

Conforme descrito anteriormente, os protocolos na camada de aplicativos do conjunto de protocolos TCP / IP fornecem um padrão para a troca de dados de aplicativos entre processos.

As camadas são conceituais. Eles não residem em um sistema ou em uma plataforma de hardware.

As câmeras, interruptores de luz e termostatos conectados à Web podem ter processos em execução neles que se comunicam pela Internet com processos em sistemas remotos (verificação de atualizações de firmware, troca de dados com um servidor etc.). Esses processos, ou aplicativos, utilizarão a implementação do conjunto de protocolos TCP / IP para realizar essa comunicação entre processos.

O conjunto de protocolos TCP / IP e os Sistemas Incorporados ("IoT")

Embora haja uma variedade de aplicativos diferentes utilizando diferentes protocolos da camada de aplicativos em execução em PCs ou servidores tradicionais, não há muita variação em termos de como as plataformas de hardware se conectam aos seus respectivos pontos de acesso (interface de rede / camada de enlace de dados). É realizado principalmente com ou sem fio via Ethernet.

A situação é um pouco diferente quando se trata da grande variedade de sistemas embarcados que se comunicam via TCP / IP. Aqui está uma ilustração disso (do Postscapes ):

IoT e TCP / IP 1

IoT e TCP / IP 2

Para mais informações, consulte estes artigos:

Compreendendo os protocolos atrás da Internet das coisas

Padrões e protocolos de IoT

Guia da tecnologia da Internet das coisas

juliano
fonte
Nesse nível de detalhes, meu lado netadmin está triste por não haver uma palavra sobre TCP / IP que signifique TCP em IP, TCP não está vinculado a IP, ele também foi implementado em redes IPX (mesmo que o sigle seja perto, eles foram 2 protocolos muito diferentes)
Tensibai
11
@Tensibai O TCP no IPX não seria basicamente o mesmo que o SPX (ou seja, a versão de transporte confiável e baseada em porta)? - Mas isso me lembra que a alegação de que dois hosts que desejam se comunicar pela Internet (por redes diferentes) deve implementar TCP / IP não é estritamente verdadeira: o host A na rede 1 e o host B na rede 3 podem falar por exemplo, IPX / SPX evenif a conexão net 2 é pura TCP / IP, desde que haja gateways túnel na net 1 e 3 ...
Hagen von Eitzen
2
@hagen não, o SPX era o equivalente ao TCP, mas absolutamente não interconectável com um sistema TCP, por isso o TCP over IPX foi desenvolvido para permitir comunicações TCP de ponta a ponta para sistemas IP e IPX com um roteador simples de camada 3 entre . E sim, a Internet depende principalmente de IP, MPLS e protocolos de roteamento (provavelmente esqueço alguns), o TCP não desempenha nada no roteamento geral, apenas circula sobre ele até o momento.
Tensibai
@Tensibai Se eu fiz um erro ou erros, por favor me avise e eu farei o meu melhor para corrigi-los
Julian
@SYS_V não é realmente um erro, alguns atalhos me incomodam um pouco. digamos que está tudo bem do ponto de vista da comunicação TCP :) Há todas as informações necessárias para alguém disposto a cavar o problema. Eu sinto que você está um pouco rude para o OP no seu primeiro parágrafo, eu vou tentar propor uma edição de amanhã (de um computador) para resolver as minhas preocupações :)
Tensibai
12

Todos os tipos de computadores - smartphones / TVs / consolas de jogos, etc. usam este formato?

Para que algo seja trocado na internet, ele precisará passar por uma pilha de IP em algum lugar.

O sistema operacional importa?

O protocolo IP é definido pelo RFC 791 , portanto o OS / Firmware precisa cumpri-lo, seja ele qual for.

(A este respeito) existe alguma diferença entre internet celular e Wifi / Ethernet?

Simplificando um pouco, a diferença aqui estará no sinal de rádio da camada 1 (físico) x sinal elétrico nos fios. Mais detalhes na página da wiki da Open Systems Interconnection model (modelo OSI) .

Todos eles servem para transpor a camada 3 (Rede), IP, no caso aqui, em seus meios específicos.

E os dispositivos de função única que não parecem ter uma camada "Aplicativo" - por exemplo, câmera conectada à web, interruptores de luz ou termostatos.

A Camada de Aplicação está relacionada a um protocolo de comunicação específico (HTTP, SSH, etc.), não precisa ser uma aplicação como Chrome ou Firefox, por exemplo.
Geralmente esses protocolos serão implementados sobre o TCP , alguns sobre o UDP quando há um desejo de não bloquear a espera do reconhecimento ou quando obter um pacote desatualizado não faz sentido (chamadas de voz, streaming). Existem outros protocolos da camada 4, mas geralmente para usos específicos, como o ICMP ping. O TCP é o protocolo de escolha quando você deseja garantir a chegada de alguns dados ao destino.

Para um 'dispositivo remoto', como o termostato no seu exemplo, ele pode usar protocolos já existentes, como HTTP, ou usar um proprietário para enviar seus dados, que ainda estarão na camada de Aplicação, pois geralmente não será apenas um transporte. protocolo.
Isso pode ser feito apenas na camada 4, mas isso precisa criar um novo protocolo e a sobrecarga geralmente não vale a pena e torna o sistema incompatível com os outros. Usar padrões abertos é uma abordagem melhor na minha humilde opinião.

Tensibai
fonte
3
Talvez valha a pena esclarecer que o TCP-IP é um 'must have' bastante comum em qualquer sistema operacional (do mbed / arduino ao MC Windows e Linux).
21717 Sean Houlihane
Na verdade, parece-me tão implícito para protocolos de nível superior que eu esqueço.
Tensibai
a resposta 1 e a resposta 2 não são respostas e a resposta 3 é explicada usando o Modelo de Referência OSI em vez do conjunto de protocolos TCP / IP. Nenhuma das respostas neste post aborda os erros conceituais que estão sendo feitos na pergunta.
Julian
2
@Sys_v I não foi até escrever uma Novell :)
Tensibai
5

Embora seja verdade que qualquer dispositivo conectado à Internet use TCP / IP (ou UDP) para comunicação, é realmente o próximo nível na pilha em que as coisas ficam interessantes.

Qualquer dispositivo IoT moderno usará o TLS para fornecer criptografia e autenticação. Isso impede (em teoria) qualquer outra pessoa de observar ou interferir nas mensagens que estão sendo passadas. Uma consideração importante da pilha TCP / IP é que muitas das informações transmitidas podem ser observadas trivialmente - e isso geralmente leva muito facilmente a falhas de segurança.

Os dispositivos não precisam se conectar à Internet 'na fonte'; portanto, não é necessário implementar o TCP por bluetooth (como exemplo). Você também pode ver os dispositivos IoT usando protocolos de telefone celular (como SMS ou textos regulares) como seu salto final. Eventualmente, esses protocolos (selecionados de alguma forma para o ambiente instalado) provavelmente serão conectados à "Internet" por um dispositivo de hub.

Sean Houlihane
fonte
Em relação a premissa do segundo parágrafo, eu tenho medo que podemos encontrar até mesmo dispositivos projetados mais tarde do que hoje e ainda ignorando cripto
Hagen von Eitzen
11
Significado moderno projetado usando as melhores práticas de hoje, não apenas o que é fácil.
21717 Sean Houlihane
4

Todos os dispositivos que desejam usar o TCP sobre IP precisam de uma pilha TCP / IP.

O protocolo é padronizado, para que dispositivos de diferentes fabricantes ou usando sistemas operacionais diferentes possam se entender.

Observe que o TCP garante que os pacotes de dados cheguem ou o remetente será notificado sobre sua perda. O TCP seria usado quando você não puder perder dados sem estar ciente deles (por exemplo, comunicação com seu banco).

Há também o UDP, que envia pacotes e "espera que eles cheguem lá". Isso pode ser usado, por exemplo, para streaming de música ou vídeo, onde a perda de alguns quadros não é fatal.

A parte importante é a padronização.

Mawg diz que restabelece Monica
fonte
2

A pilha em si é um conceito virtual. Cada camada da pilha modifica os bits finais enviados pelo meio físico (ondas de rádio ou outros sinais eletrônicos). Não existe uma regra que diga que cada camada da pilha deve ser projetada em uma única unidade de código ou hardware discreto. Por exemplo, os chips iEthernet combinam as camadas TCP, IP, MAC e PHY, deixando aos desenvolvedores a tarefa de implementar o TLS e os aplicativos.

Dito isto, todos os bits devem estar em conformidade com os vários protocolos envolvidos e, por esse motivo, geralmente é mais fácil projetar cada camada como uma entidade separada, para que possam ser testados e verificados independentemente. A maioria dos dispositivos, incluindo smartphones, TVs inteligentes e consoles de jogos, normalmente compra seus chips de terceiros especializados em alguma área. Por exemplo, a maioria dos telefones usa apenas um dos poucos chips bluetooth diferentes; isso significa que o fabricante não precisa se preocupar em reinventar a roda com cada novo produto.

Em teoria, alguns dispositivos pequenos e especializados podem ter apenas um único processador com SoC (Software on Chip) incorporado que lida com todas as camadas da rede (aplicativo, TLS, TCP, IP, PHY) como uma única unidade de código discreta. Não consigo encontrar exemplos concretos agora, mas não me surpreenderia se alguns dispositivos de função pequenos, de baixo consumo de energia ou dedicados combinassem todas as camadas da pilha em uma única unidade para reduzir o consumo de energia (prolongar a vida útil da bateria). Produtos maiores e mais complicados, como televisores, telefones e sistemas de jogos, provavelmente têm pelo menos três camadas (aplicativo, sistema operacional e peças de hardware), enquanto uma torradeira pode ter apenas 1 ou 2 camadas.


Nota: Não estou dizendo que a torradeira específica que vinculei tenha 1 ou 2 camadas, mas seria lógico se fosse projetada dessa maneira, sendo um dispositivo de propósito único.

phyrfox
fonte
Como a Torradeira seria capaz de não ter todas as camadas? Você pode conectar um cabo de rede ou reagir a ondas de WiFi - portanto, implementa a camada PHY. O In pode se comunicar com dispositivos locais e remotos (como o seu iPhone) - portanto, implementa a camada IP. Requer transmissão segura de dados (a imagem) - portanto, é melhor implementar o TCP. Alguma parte precisa entender os dados transmitidos, portanto, certamente temos uma camada de aplicação no topo. --- (Bem, talvez não, se em vez do trabalho em rede que usam Bluetooth ...)
Hagen von Eitzen
@HagenvonEitzen Os protocolos ditam as camadas que estão no lugar, mas o que quero dizer é que uma "camada" na "pilha" TCP / IP pode não ser uma única "camada" discreta em uma "pilha" de software / hardware. Dei um exemplo de chipset que implementa quatro camadas por si só. Em termos de hardware / software, essa é apenas uma "camada" na "pilha" que implementa a conectividade. Usar esse chip mais um aplicativo que implementa seu próprio TLS resulta em uma pilha de duas camadas; os componentes físicos não estão alinhados com as quatro camadas lógicas descritas no OP.
Phyrfox