Quando um host recebe um pacote, ocorre uma complexa série de eventos, orquestrada por hardware e software. Aqui está um detalhamento do processo, da camada física à camada de aplicação:
1. Recepção da camada física: *
Recepção de sinal: A placa de interface de rede (NIC) recebe o sinal de entrada (onda elétrica, óptica ou de rádio) carregando o pacote.
*
Conversão de sinal: A NIC converte o sinal em um formato digital que o computador pode entender (bits e bytes).
*
Detecção de erro de camada física: O NIC geralmente realiza detecção básica de erros, verificando coisas como integridade de sinal e erros de enquadramento na camada física. Se os erros forem detectados, o pacote poderá ser descartado imediatamente.
2. Processamento de camada de link de dados (normalmente Ethernet): *
demarcação de quadro: A NIC identifica o início e o final do quadro de dados usando delimitadores de quadros (por exemplo, preâmbulo e delimitador de quadros de partida na Ethernet).
*
Verificação de sequência de verificação de quadro (FCS): A NIC calcula o FCS (também conhecido como uma verificação de redundância cíclica CRC) para o quadro recebido e o compara ao FCS incluído no quadro. Esta é uma verificação de erro mais robusta do que na camada física. Se o FCS não corresponder, indicando a corrupção de dados durante a transmissão, o quadro será descartado.
*
Destino MAC Endereço Verificação: O NIC extrai o endereço MAC de destino do cabeçalho do quadro e o compara ao endereço MAC da NIC ou ao endereço MAC de transmissão.
*
correspondência: Se os endereços MAC correspondem (ou for uma transmissão), o quadro será aceito e passado para a próxima camada (camada de rede).
*
incompatibilidade: Se os endereços MAC não corresponderem, o quadro será normalmente descartado. No modo promíscuo (usado para monitoramento de rede), a NIC pode ser configurada para capturar todos os quadros, independentemente do endereço MAC de destino.
*
Fonte MAC Endereço Aprendizagem (para Switches): Se o dispositivo receptor for um comutador de rede, ele aprenderá o mapeamento do endereço MAC de origem na porta na qual o quadro foi recebido. Isso ajuda a alternar os quadros futuros com mais eficiência.
3. Processamento da camada de rede (normalmente IP): *
Extração de pacotes: A NIC passa a carga útil do quadro (o pacote IP) para a pilha de rede do sistema operacional.
*
Validação do cabeçalho IP: A pilha de rede verifica o cabeçalho IP para validade:
*
Versão: Verifica a versão IP (IPv4 ou IPv6).
*
Soma de cabeçalho: Valida a soma de verificação do cabeçalho IP para garantir que o cabeçalho não tenha sido corrompido. Se a soma de verificação for inválida, o pacote será descartado.
*
Hora de viver (TTL) / Limite de salto: Diminui o campo TTL (IPv4) ou Limite de salto (IPv6). Se o limite TTL/HOP atingir 0, o pacote será descartado para evitar loops de roteamento e uma mensagem "tempo excedida" do ICMP poderá ser enviada de volta à fonte.
*
Verificação de endereço IP de destino: A pilha de rede compara o endereço IP de destino no cabeçalho IP com o próprio endereço IP do host.
*
correspondência: Se os endereços IP corresponderem, o pacote será destinado a este host e será processado ainda mais.
*
incompatibilidade: Se os endereços IP não corresponderem:
*
não um roteador: Se o host não estiver configurado como roteador, o pacote será descartado.
*
roteador: Se o host for configurado como roteador, ele consultará sua tabela de roteamento para determinar o próximo salto para o pacote e encaminhar o pacote de acordo (após diminuir o limite de TTL/Hop e atualizar a soma de cabeçalho).
*
fragmentação/remontagem (se necessário): Se o pacote foi fragmentado na fonte (ou um roteador intermediário) porque era muito grande para o caminho da rede (problemas da MTU), o host receptor pode precisar remontar os fragmentos no pacote IP original.
*
Identificação do protocolo: A pilha de rede usa o campo "Protocolo" no cabeçalho IP (por exemplo, 6 para TCP, 17 para UDP, 1 para ICMP) para determinar qual protocolo de camada de transporte o pacote está usando.
4. Processamento da camada de transporte (TCP ou UDP): *
Identificação do número da porta: A camada de transporte extrai o número da porta de destino do cabeçalho TCP ou UDP. O número da porta identifica o aplicativo ou serviço específico em execução no host que deve receber os dados.
*
Validação do cabeçalho da camada de transporte: A camada de transporte verifica a integridade do cabeçalho.
*
soma de verificação: Os cabeçalhos TCP e UDP contêm uma soma de verificação para garantir que os dados não foram corrompidos durante a transmissão. Se a soma de verificação for inválida, o pacote será normalmente descartado.
*
Gerenciamento de conexão (somente TCP): Se o pacote for um pacote TCP, a camada de transporte lida com recursos orientados para a conexão:
*
Verificação do número da sequência: O TCP usa números de sequência para garantir que os pacotes sejam recebidos na ordem correta e para detectar pacotes ausentes. O receptor verifica o número da sequência para remontar o fluxo de dados corretamente.
*
Reconhecimento (ACK) Enviando: O receptor envia reconhecimentos (ACKs) de volta ao remetente para confirmar que os pacotes foram recebidos com sucesso.
*
Controle de fluxo: O TCP implementa mecanismos de controle de fluxo para impedir que o remetente sobrecarregue o receptor com dados.
*
Entrega de dados: A camada de transporte entrega os dados (a carga útil do pacote TCP ou UDP) para o aplicativo ou serviço apropriado identificado pelo número da porta.
5. Processamento da camada de aplicação: *
Interpretação de dados: O aplicativo recebe os dados da camada de transporte. Em seguida, interpreta os dados de acordo com seu protocolo específico (por exemplo, HTTP, SMTP, DNS).
*
Ação com base nos dados: O aplicativo toma medidas apropriadas com base nos dados recebidos. Isso pode envolver:
* Exibindo uma página da web em um navegador (http).
* Entregando um email (SMTP).
* Resolvendo um nome de domínio (DNS).
* Reproduzindo um fluxo de vídeo.
Tabela de resumo: | Camada | Ações -chave |
| -----------
| Físico | Recepção de sinal, conversão, detecção básica de erro |
| Link de dados | Demarcação de quadro, verificação do FCS, filtragem de endereço MAC |
| Rede | Validação do cabeçalho IP, correspondência de endereço IP, roteamento, fragmentação/remontagem |
| Transporte | Identificação do número da porta, validação do cabeçalho, Gerenciamento de conexão (TCP) |
| Aplicação | Interpretação de dados, processamento específico do aplicativo |
Considerações importantes: *
Manuseio de erro: A detecção e manuseio de erros são cruciais em cada camada. Os pacotes considerados corrompidos são normalmente descartados.
*
multithreading/multiprocessamento: Os sistemas operacionais modernos usam multithreading e multiprocessamento para lidar com o tráfego de rede com eficiência. A pilha de rede pode lidar com vários pacotes simultaneamente.
*
Otimização de desempenho: Os sistemas operacionais empregam várias técnicas para otimizar o desempenho da rede, como gerenciamento de buffer, cache e mitigação de interrupção.
*
Segurança de rede: Firewalls e sistemas de detecção de intrusões (IDs) podem inspecionar pacotes em várias camadas para identificar e bloquear o tráfego malicioso.
* Aceleração de hardware
: Algumas NICs oferecem aceleração de hardware para determinadas tarefas de rede, como o cálculo da soma de verificação do TCP, o que pode melhorar o desempenho.
Essa quebra detalhada ilustra o processo complexo envolvido no recebimento e processamento de um pacote. Cada camada executa funções específicas para garantir uma transmissão de dados confiável e eficiente.