Os endereços TL; DR> MAC são um componente de baixo nível de uma rede Ethernet (e alguns outros padrões semelhantes, como Wi-Fi). Eles permitem que um dispositivo se comunique com uma máquina na rede física local (LAN) e não podem ser roteados pela Internet - porque o hardware físico pode, em teoria, ser conectado a qualquer lugar do mundo.
Por outro lado, os endereços IP cobrem toda a Internet e os roteadores os usam para descobrir para onde enviar dados, mesmo que precisem de vários saltos para chegar ao seu destino - mas eles não são úteis na interface com o hardware físico da rede local.
Se algum dia encontrarmos um padrão melhor que o Ethernet, ele poderá não usar endereços MAC, mas o tráfego IP da Internet ainda poderá fluir através dele, mesmo que outras pessoas na Internet nunca tenham ouvido falar dele.
Se algum dia encontrarmos um padrão melhor que o IP (por exemplo, IPv6, se todos os endereços IPv4 se esgotarem), a maioria dos hardwares Ethernet poderá transportar o novo tipo de tráfego sem modificação - e uma simples atualização de software / firmware consertaria a maior parte do resto.
Os endereços MAC são necessários para fazer com que uma rede local Ethernet (ou wifi) funcione. Eles permitem que um dispositivo de rede atraia a atenção de um único dispositivo conectado diretamente, mesmo que a conexão física seja compartilhada. Isso pode ser importante quando milhares de dispositivos estão conectados juntos em uma única organização. Eles não servem para nenhuma função na Internet em geral.
Para realmente entender a resposta a essa pergunta, você precisa entender o modelo OSI (às vezes conhecido como 7 camadas) .
Para que a comunicação ocorra entre dois aplicativos em execução em máquinas separadas que não possuem uma conexão física direta, é necessário muito trabalho.
Antigamente, cada aplicativo sabia exatamente quais instruções de código de máquina precisavam ser executadas para produzir um sinal apropriado que atingisse e pudesse ser decodificado pelo aplicativo no outro extremo. Toda a comunicação era efetivamente ponto a ponto, e o software tinha que ser escrito para se adequar à situação exata em que deveria ser implantado. Obviamente, isso era insustentável.
Em vez disso, o problema da rede foi dividido em camadas, e cada camada sabia como falar com a camada correspondente em uma máquina remota e como se comunicar com a camada abaixo (e às vezes acima) dela em sua máquina local. Ele não sabia nada sobre outras camadas existentes - portanto, seu navegador da web não precisa se importar se está sendo executado em uma máquina que usa um anel de token, ethernet ou rede wifi - e definitivamente não precisa saber qual hardware a máquina remota usa.
Para fazer isso funcionar, o modelo de 7 camadas usa um sistema como envelopes aninhados; o aplicativo cria seus dados e os envolve em um envelope para o sistema operacional entregar. O sistema operacional envolve isso em outro envelope e o passa para o driver de rede. O driver de rede envolve isso em outro envelope e o coloca no cabo físico. E assim por diante.
A camada inferior, camada 1 , é a camada física. Essa é a camada de fios e transistores e ondas de rádio e, nessa camada, a comunicação é basicamente apenas um fluxo de uns e de nada. Os dados vão para todo lugar fisicamente conectado. Você conecta a porta de rede do computador ao seu switch usando um cabo CAT-5.
Camada 2 é a camada de vínculo de dados. Isso fornece alguma estrutura para esses e poucos, alguns recursos de detecção e correção de erros e alguma indicação sobre qual dispositivo conectado fisicamente (as conexões físicas aqui podem realmente ser feitas por Wi-Fi) deve prestar atenção à mensagem. Essa é a camada em que os endereços MAC entram em jogo, e voltaremos a ela mais tarde. Mas os endereços MAC não são a única possibilidade nessa camada. As redes de token ring, por exemplo, precisam de uma implementação de link de dados diferente.
Camada 3 é a camada de rede. Essa é a camada na qual o IP trabalha (embora também não seja o único protocolo de camada de rede) e permite que os computadores enviem uma mensagem que pode chegar a qualquer máquina em qualquer lugar da "rede". Não precisa haver uma conexão direta entre as máquinas em questão.
As camadas 4-7 são protocolos de nível superior. Eles ficam cada vez mais distantes do hardware e mais próximos do aplicativo. O TCP, por exemplo, fica no topo do IP e fornece mecanismos que reenviam automaticamente as mensagens quando elas desaparecem.
Portanto, os endereços MAC funcionam na Camada 2 e permitem que duas máquinas fisicamente conectadas entre si enviem mensagens que serão ignoradas por outras máquinas que compartilham a mesma conexão física.
Suponha que eu tenha um aplicativo que queira enviar alguns dados para a máquina com endereço IP 8.8.8.8
A camada 3 agrupa os dados em um envelope que contém, entre outras coisas, o endereço IP 8.8.8.8 e o entrega à camada 2.
A camada 2 examina esse endereço IP e decide em qual máquina está diretamente conectada e capaz de lidar com esta mensagem. Ele terá uma tabela de pesquisa de uma seleção dos endereços IP conectados diretamente, juntamente com o endereço MAC correspondente da placa de rede nessa máquina. Essa tabela de pesquisa é construída usando um protocolo chamado ARP, que permite que uma placa de rede faça perguntas aos outros dispositivos conectados diretamente. A Ethernet reserva um endereço MAC especial, FF: FF: FF: FF: FF: FF, que permite que um dispositivo fale com todos os dispositivos conectados fisicamente.
Se o endereço IP estiver na tabela (ou puder ser resolvido através do ARP), ele envolverá o envelope da Camada 3 em um envelope da Camada 2 com o endereço MAC no novo cabeçalho e passará todo o pacote para o hardware da Camada 1 A placa de rede com o endereço MAC correspondente receberá a mensagem e o driver de rede abrirá o envelope da Camada 2 e transmitirá o conteúdo para qualquer parte do sistema operacional que esteja esperando receber mensagens no endereço IP específico.
Como alternativa, se o endereço IP não estiver na rede local, o novo envelope terá o endereço MAC do gateway padrão (ou seja, roteador) configurado para esta interface de rede e o hardware transportará o pacote para o roteador.
O roteador percebe seu próprio endereço MAC no envelope da camada 2 e abre o pacote de nível 2. Ele examina o endereço IP no envelope de nível 3 e calcula para onde a mensagem deve ir a seguir, que provavelmente será o roteador no seu ISP. Se o roteador usa NAT (ou similar), ele pode até modificar o envelope de nível 3 neste momento, para manter seus endereços IP internos privados. Em seguida, embrulha o envelope de nível 3 em um novo envelope de nível 2 endereçado ao endereço MAC do roteador do ISP e envia a mensagem para lá.
Esse processo de remover o envelope externo e envolver o conteúdo em um novo envelope endereçado à próxima etapa da cadeia continuará até que a mensagem chegue à máquina de destino.
Os envelopes continuarão sendo rasgados à medida que a mensagem voltará pelas camadas até finalmente chegar ao destinatário pretendido, que será um aplicativo em algum lugar que, esperançosamente, saberá o que fazer com a mensagem - mas não terá idéia de como o a mensagem chegou, nem todas as etapas necessárias para obter a resposta de volta à máquina original.
Mas tudo funciona, quase como mágica!
Observe que os comutadores de rede podem usar endereços MAC para otimizar o fluxo do tráfego de rede. Enquanto um hub ethernet simplesmente encaminha todo o tráfego de entrada para todas as suas portas, por outro lado, um switch pode encaminhar o tráfego apenas para a única porta à qual o endereço MAC de destino do pacote está conectado. Isso aumenta a largura de banda efetiva da rede; ao direcionar portas específicas, o switch evita o tráfego de encaminhamento em segmentos desnecessários da rede. O switch usará o ARP ou o sniffing de pacotes para identificar quais dispositivos estão conectados a qual porta. Os switches ignoram completamente o conteúdo dos pacotes da camada 2.