Posso criar uma rede Ethernet sem usar IP


14

Pelo que entendi pelo modelo ISO-OSI, os endereços MAC operam em uma camada diferente dos endereços IP. Isso está claro para mim.

Posso aceitar que a Ethernet (LAN) simplesmente não use endereços IP para fazer comunicação, mas use endereços MAC. Entendo que esses endereços MAC não podem ser usados ​​para roteamento fora de uma LAN, pois não são definidos hierarquicamente. Também entendo que o IP é a melhor maneira de fazer o roteamento pela grande Internet. O que não estou totalmente convencido é que os endereços MAC são a melhor maneira de se comunicar em uma LAN


Minhas perguntas são as seguintes:

  1. A Ethernet não podia usar endereços IP para enviar mensagens? Não estou dizendo que deveria, estou apenas perguntando se poderia ter escolhido fazê-lo.
  2. Como a Ethernet usa endereços MAC para comunicação, eu poderia criar uma rede Ethernet na qual os dispositivos não teriam um endereço IP, apenas um endereço MAC?

Por definição, uma rede Ethernet é uma rede em que os dispositivos não têm endereços IP. Uma rede TCP / IP, como você aponta, é outra coisa e o IP não se importa se está executando sobre IEEE 802.3, 802.11 ou 802.5.
miken32

Respostas:


5

A Ethernet poderia ter usado endereços IP em vez de seus próprios endereços da camada de enlace de dados? Certamente que não, se ele quisesse ser independente do protocolo de camada 3 usado.

Projetamos protocolos de rede em camadas para podermos misturar e combinar camadas.

A Ethernet foi originalmente desenvolvida por Bob Metcalfe e outros no Xerox PARC para ser independente da camada de rede, porque seu objetivo não era apenas o acesso TCP / IP, mas também a pilha / suíte de protocolo de rede XNS proprietário da Xerox.

O DEC (Digital Equipment Corporation) tornou-se outro pioneiro, usando-o principalmente para sua pilha / suíte de protocolos DECnet.

No final dos anos 80 e início dos anos 90, havia muitos conjuntos de protocolos de LAN concorrentes (todos completamente independentes do TCP / IP) em execução nas LANs Ethernet corporativas. Além do XNS e DECnet, havia o AppleTalk (EtherTalk) da Apple, IPX da Novell, Banyan VINES, NetBEUI, DLC / LLC, IBM SNA, OSI / ISO e outros que eu esqueci.

Então, sim, você pode usar Ethernet sem IP. Muitas redes corporativas o fizeram nos anos 80 e 90.

Como a Ethernet foi projetada para não se importar com o protocolo Layer-3 (Network Layer), era relativamente fácil para essas LANs corporativas oferecer suporte a misturas de equipamentos de vários fornecedores, e era relativamente fácil para essas LANs adicionar IPv4 suporte quando a Internet decolou, em meados do final dos anos 90, e foi relativamente fácil adicionarmos suporte IPv6 agora.


1
Obrigado por dar uma resposta na qual você coloca as coisas no contexto! Eu gostaria que você também tivesse expandido um pouco mais a segunda parte da pergunta .. Seria possível fazer uma LAN baseada em Ethernet funcionando sem usar nenhum protocolo de camada de rede? Se eu configuro uma conexão Ethernet com cabo cruzado para outro host, por que preciso usar IPs para se comunicar com esse host? Seria possível usar o TCP sobre MAC em vez do TCP sobre IP?
27416 jj_

4

Como a Ethernet usa endereços MAC para comunicação, eu poderia criar uma rede Ethernet na qual os dispositivos não teriam um endereço IP, apenas um endereço MAC?

Se você estava escrevendo todo o seu próprio software a partir do zero, certamente poderia fazer isso. Basta fazer com que o software aceite um endereço MAC em qualquer lugar que a contraparte normal desse programa tenha aceitado um endereço IP. Use todas as chamadas do sistema para enviar pacotes Ethernet brutos em vez do endereço IP e isso funcionará - mas seria um grande aborrecimento.

Geralmente, os endereços MAC na sua rede não seguem nenhum padrão. Eles são queimados no hardware pelo fabricante. Eles são longos e volumosos. A minha agora é C8-60-00-CA-4B-9A. O computador ao meu lado é 00-40-F4-48-1B-88.

Para que as máquinas possam conversar entre si, você pode fornecer a cada máquina uma lista codificada de todos os endereços MAC de todas as outras máquinas da rede, para que ela saiba para onde enviar pacotes. Isso gera muita digitação e, sempre que você altera seu hardware de rede, precisa mudar e alterar todas as listas para refletir os novos endereços MAC.

Como esse é um grande aborrecimento, você provavelmente descobrirá uma maneira de as máquinas da rede descobrirem automaticamente os endereços MAC uns dos outros usando pacotes de difusão. Depois, você lhes daria uma maneira de se identificar com algum endereço significativo, para que você tivesse que digitar comandos como "telnet C8-60-00-CA-4B-9A".

Acontece que é exatamente isso que o IP faz - é uma maneira de usar números significativos para endereçar hosts em uma rede, em vez de codificar endereços MAC. Adicione o DNS em cima do IP e você poderá digitar o comando como "telnet webserver".

A Ethernet não podia usar endereços IP para enviar mensagens? Não estou dizendo que deveria, estou apenas perguntando se poderia ter escolhido fazê-lo.

Os endereços MAC são 6 bytes de informações e os endereços IP são apenas 4 bytes; portanto, você não pode fazer nenhum tipo de mapeamento 1 para 1. Você precisa encontrar uma maneira de encontrar o endereço MAC (para colocar no pacote) a partir de um endereço IP (fornecido pelo software que deseja se comunicar com outro host na rede).

Uma maneira (essencial) de fazer isso seria entrar em todas as máquinas da rede e alterar o endereço MAC do hardware para parecer um endereço IP, fazendo com que os dois bytes iniciais sejam zeros (ou algum outro número fixo igual) para todas as máquinas da rede) e defina os quatro bytes inferiores para o "endereço IP" que você deseja que eles tenham na rede. (A maioria das placas de rede permite entrar e modificar o endereço MAC atribuído pelo fornecedor)

Para que isso funcione, em seguida, você também precisará hackear o código na sua pilha de rede para realmente usar esse sistema. Você basicamente eliminaria tudo o que tinha a ver com ARP (o método que o IP usa para converter endereços IP em endereços MAC). Você retiraria as partes que constroem / leem os cabeçalhos IP. Em vez disso, você substitui tudo pelo código muito simples que, dado um pacote IP a ser enviado para hospedar no endereço wxyz, constrói um quadro Ethernet com o endereço DEST definido como 00-00-wxyz.

Você também precisaria de uma maneira de indicar ao destinatário de um pacote para qual protocolo (UDP, TCP) ele se destina. Você provavelmente poderia colocar isso em algum lugar do cabeçalho Ethernet, substituindo um campo existente. Talvez use um dos dois primeiros bytes do endereço de origem? Isso não afetaria a capacidade de recebimento das máquinas de destino, mas poderia atrapalhar alguns comutadores. Você também pode adicionar o protocolo ao início ou ao final do quadro Ethernet e aumentar o tamanho da carga útil em um - mas isso está começando a cheirar como um cabeçalho IP.

Então, o que todo esse trabalho compraria para você?

Primeiro, você economizaria a sobrecarga de uma pesquisa na tabela ARP em todos os pacotes enviados. Provavelmente é da ordem de apenas microssegundos.

Você salva o trabalho de calcular somas de verificação do cabeçalho IP e a memória necessária para mantê-las. Provavelmente isso não é significativo no hardware moderno.

Você economiza 16 bytes em cada pacote da rede, pois não haveria cabeçalhos de IP. Isso pode aumentar dependendo do aplicativo.

O maior ganho seria que você não precisaria fazer nenhuma solicitação de ARP. O envio de um pacote IP padrão para um novo host aciona uma troca ARP que pode levar milissegundos e é imprevisível. Isso pode ser um grande ganho para alguns aplicativos que são muito sensíveis à latência e jitter.

Para algumas aplicações muito especializadas, isso realmente faz sentido. Certa vez, trabalhei em um sistema em tempo real que usava apenas pacotes UDP de difusão para todas as comunicações entre hosts pelo único motivo de evitar que essas sequências ARP fossem ativadas e imprevisivelmente adicionassem atraso e instabilidade. Também trabalhei em um sistema embarcado com recursos limitados que enviava cargas UDP diretamente dentro de pacotes IP (sem cabeçalho IP) porque economizava toda a complexidade e memória necessárias para implementar todo o material ARP e máscara de rede e somas de verificação extras.


1

A Ethernet não podia usar endereços IP para enviar mensagens? Não estou dizendo que deveria, estou apenas perguntando se poderia ter escolhido fazê-lo.

Eu acho que a Ethernet poderia ter usado endereços de quatro bytes, como IPv4, em vez de endereços de seis bytes. Provavelmente é bom que eles não tenham saído, já que os números já estavam esgotados.

Como a Ethernet usa endereços MAC para comunicação, eu poderia criar uma rede Ethernet na qual os dispositivos não teriam um endereço IP, apenas um endereço MAC?

Você pode, se tiver programas que funcionem com endereços MAC em vez de endereços IP. É claro que você ficará preso nessa rede e não poderá alcançar outras pessoas sem alguma invasão.

Você realmente só precisa da camada IP se planeja fazer o roteamento, especialmente se outra rede estiver usando uma tecnologia de Camada 2 diferente da Ethernet, como o Token Ring, que era uma possibilidade real quando a maior parte disso foi desenvolvida. Quem sabe se outra tecnologia da Camada 2 pode se tornar onipresente no futuro; nesse caso, o IP é independente dela.


0
> Couldn't Ethernet make use of IP addresses to send messages? I'm not
> saying it should, I'm just asking if it could have chosen to do so.

Se você está se referindo à Ethernet como a Camada de rede, então não, não pode. A camada de rede requer o endereço físico do dispositivo de rede. Um endereço IP é um número arbitrário atribuído a um endereço MAC por uma questão de simplicidade. Os endereços IP são uma solução de software, não fazem parte da placa de rede - a solução de hardware. É por isso que os endereços IP podem ser facilmente alterados, enquanto os endereços MAC são codificados no cartão e não podem ser alterados (apesar do software de falsificação de endereços MAC, que ainda não altera tanto o endereço quanto o endereço. )

> As Ethernet uses MAC addresses for communication, could I create an
> Ethernet network where devices would not have an IP address, just a
> MAC address?

Sim, você poderia, mas não gostaria de usá-lo, pois a funcionalidade seria muito limitada e não seria nada amigável. Há uma razão pela qual a camada de transporte foi implementada.

No WikiPedia , a camada de transporte controla a confiabilidade de um determinado link através do controle de fluxo, segmentação / dessegmentação e controle de erros. Alguns protocolos são orientados a estado e conexão. Isso significa que a camada de transporte pode acompanhar os segmentos e retransmitir os que falham. A camada de transporte também fornece o reconhecimento da transmissão de dados bem-sucedida e envia os próximos dados se nenhum erro ocorreu.

Portanto, sem usar a camada de Transporte, que hoje em dia significa o protocolo TCP / IP, você não teria a capacidade de garantir que seus dados chegassem ao seu destino, nem a reposição automática de todas as peças ausentes.


O endereço MAC certamente pode ser alterado. Meu PC (há muito falecido) usava o MAC de uma placa Ethernet quebrada por anos, pois meu provedor ADSL o amarrou e cobrou para trocá-lo (e levou alguns dias também).
vonbrand

0

Certamente é possível que máquinas em uma rede local se comuniquem sem uma camada de roteamento. Você apenas incorpora a mensagem em um quadro Ethernet e espera o melhor. É como colocar uma nota em um cartão postal e esperar que os correios façam seu trabalho.

Você precisa esperar que o receptor esteja ouvindo e ouvir atentamente uma mensagem de resposta (potencialmente entre muitas outras mensagens de outros nós). Você será responsável por resolver todas essas mensagens.

Se você quiser coisas como mensagens 1: 1, precisará de outro protocolo sobre os quadros Ethernet para lidar com tudo isso. O protocolo ponto a ponto (PPP) é frequentemente usado para isso; na Ethernet, isso é conhecido como PPPoE. O PPPoE oferece autenticação e criptografia, ambas boas idéias em uma rede de transmissão.

Mas, sem alguma forma de informações de roteamento, você só pode se comunicar com os nós na rede local. Assim que você começar a usar as informações de roteamento para retransmitir mensagens (por exemplo, para a Internet), você deseja algum tipo de protocolo de roteamento, como IP ou IPX. E você provavelmente também desejará o controle de transmissão (TCP) ...


0

As redes IP são uma abstração, uma camada de indireção, ou seja, são uma rede virtual - não permanentemente vinculada a nenhum método ou dispositivo de comunicação física específico.

Um host Ethernet possui um endereço MAC (por NIC) que o identifica exclusivamente globalmente. No entanto, esse host pode pertencer simultaneamente a muitas redes IP, com um endereço IP diferente para cada uma, enquanto sempre usa o único endereço MAC.

Essa separação de endereçamento físico e lógico, ou virtualização de endereçamento, permite certa flexibilidade, como mover um host IP (por exemplo, um servidor) de uma máquina física para outra, com um endereço MAC diferente, mas sem a necessidade de uma reconfiguração de outros hosts. (por exemplo, software cliente).

O IP, ou o Protocolo da Internet e a Ethernet resolvem problemas diferentes: a Ethernet fornece comunicação no nível da LAN e apenas em uma única LAN, não importa em que outras redes a LAN possa estar conectada através de um roteador. Visto que o IP se preocupa com a interconexão entre redes e, portanto, é independente da LAN. Então, a Ethernet poderia ter usado endereços IP em vez de endereços MAC? Claro, mas realmente não ganha nada, pois essas mensagens ainda seriam restritas à LAN.

Como resposta à sua segunda pergunta, esse tipo de situação existe em momentos diferentes em uma LAN Ethernet que utiliza o DHCP (Dynamic Host Configuration Protocol) para alocação de endereço IP. Quando um novo host se conecta à LAN, ele não possui um endereço IP; portanto, envia um quadro Ethernet transmitido a todos os dispositivos e aguarda uma resposta de um servidor DHCP. Nesse momento, o cliente não conhece o endereço MAC do servidor DHCP nem o endereço IP, daí a transmissão. Ao receber a solicitação, o servidor agora sabe o endereço MAC do cliente e pode endereçar a resposta corretamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.