Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

02 - Valor no campo Protocol = 1

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Valor no campo Protocol = 1

No cabeçalho do datagrama IPv4, o campo Protocol (Protocol) é um identificador de 8 bits (1 byte) localizado logo após o campo Header Checksum e antes do Source Address. Sua função é fundamental para o processo de desmultiplexação (demultiplexing) da Camada de Rede: ele informa ao sistema operacional receptor qual protocolo da camada superior ou qual protocolo auxiliar está encapsulado na carga útil (payload) do datagrama IP.

O valor 1 (decimal) neste campo tem um significado específico e universalmente definido pela IANA (Internet Assigned Numbers Authority): ele identifica exclusivamente o protocolo ICMP (Internet Control Message Protocol).

1. O Registro IANA e a Identificação do Protocolo

A IANA mantém um registro oficial chamado "Protocol Numbers". Neste registro, o número 1 é mapeado permanentemente para o ICMP.

  • Valor: 1 (Decimal) ou 0x01 (Hexadecimal).
  • Binário: 00000001.
  • Protocolo Associado: ICMP.
  • RFC de Referência: RFC 792 (1981), atualizado pelas RFCs 4884, 6633 e 6918.

Quando um roteador ou host recebe um datagrama IP e inspeciona o campo Protocol encontrando o valor 1, o software de rede entende imediatamente que os dados contidos após o cabeçalho IP não são um segmento TCP ou UDP, mas sim uma mensagem de controle ou erro ICMP. Isso instrui o sistema operacional a passar o pacote para o módulo de processamento de ICMP (o "manipulador de ICMP") do kernel, em vez de passá-lo para a pilha de transporte.

2. História e Justificativa do Valor 1

A atribuição do valor 1 ao ICMP não é casual. Quando Jon Postel codificou os protocolos fundamentais da internet em 1981 (RFC 791 para IP e RFC 792 para ICMP), o ICMP foi considerado o primeiro protocolo auxiliar da Camada de Rede — literalmente, o "protocolo número 1" da suíte IP, antes mesmo do TCP (6) e UDP (17). A numeração reflete a precedência conceitual: o ICMP é parte da própria infraestrutura IP, não um serviço de aplicação.

3. O Mecanismo de Desmultiplexação

O campo Protocol atua como um rótulo de roteamento interno dentro do próprio host. Como a Camada de Rede (IP) serve de transporte para múltiplos protocolos sobrepostos, ela precisa de um mecanismo para separar os fluxos de dados.

O processo funciona da seguinte maneira:

  1. Recebimento: A placa de rede recebe o quadro (frame) da Camada de Enlace e o passa para a Camada de Rede.
  2. Validação do IP: O kernel verifica o Header Checksum do IP e confirma se o endereço de destino corresponde à máquina (ou se é um broadcast).
  3. Leitura do Campo Protocol: O kernel lê o byte do campo Protocol.
  4. Decisão de Entrega (Dispatching):
    • Se o valor for 6, o payload é entregue ao módulo TCP.
    • Se o valor for 17, o payload é entregue ao módulo UDP.
    • Se o valor for 1, o payload é entregue ao módulo ICMP.
  5. Processamento: O módulo de ICMP lê seu próprio cabeçalho (Type, Code, Checksum) para determinar a ação apropriada (ex: gerar uma resposta de ping, notificar uma aplicação sobre um erro, ou atualizar a tabela de roteamento).

Tabela de Dispatch Comum

Valor Protocolo Camada de Destino
1 ICMP Módulo ICMP no kernel
2 IGMP Módulo de gerenciamento multicast
6 TCP Pilha de transporte TCP
17 UDP Pilha de transporte UDP
89 OSPF Daemon de roteamento OSPF

4. Estrutura do Pacote

Visualmente, a presença do valor 1 no cabeçalho IP altera a interpretação da estrutura do pacote:

Estrutura com Protocol = 1 (ICMP):

+-------------------------+
| Cabeçalho IPv4          |
| (Source/Dest Addr)      |
+-------------------------+
| Protocol = 1 (ICMP)    | <-- O campo que define o próximo passo
+-------------------------+
| Cabeçalho ICMP          |
| (Type, Code, Checksum)  |
+-------------------------+
| Dados ICMP (Payload)    |
+-------------------------+

Se o campo fosse 6 (TCP), a estrutura abaixo do cabeçalho IPv4 seria um cabeçalho TCP (Portas, Sequence Number, Flags). Como é 1, o formato abaixo muda radicalmente para o formato do ICMP. Sem esse campo, a máquina receberia dados binários e não saberia como interpretá-los, resultando em corrupção de dados.

5. Estrutura Interna do ICMP (Após o Cabeçalho IP)

Quando Protocol = 1, o payload do datagrama IP segue a estrutura do ICMP:

+------+------+--------------------+
| Type | Code | Checksum (16 bits) |
| (8)  | (8)  |                    |
+------+------+--------------------+
| Rest of Header (32 bits, dependente do Type) |
+----------------------------------------------+
| Data (variável, geralmente cópia do IP original em mensagens de erro)
+----------------------------------------------+

Tipos de Mensagem ICMP Mais Comuns

Type Nome Código Função
0 Echo Reply 0 Resposta ao comando ping
3 Destination Unreachable 0-15 Host/rede/porta inalcançável
5 Redirect 0-3 Roteador sugere rota melhor
8 Echo Request 0 Solicitação do comando ping
11 Time Exceeded 0-1 TTL expirado (base do traceroute)
13 Timestamp 0 Sincronização de relógio
14 Timestamp Reply 0 Resposta do timestamp

6. Cenário Prático: O Comando ping

Quando um usuário executa ping 8.8.8.8, ocorre a seguinte sequência:

  1. O sistema operacional monta um pacote ICMP Echo Request (Type 8, Code 0).
  2. Esse pacote é encapsulado em um datagrama IPv4 com Protocol = 1, Source = <IP local>, Destination = 8.8.8.8.
  3. O datagrama é roteado até o destino. Cada roteador intermediário examina apenas o IP de destino — não se importa com o Protocol.
  4. Ao chegar ao host 8.8.8.8, o kernel lê Protocol = 1 e despacha o payload para o módulo ICMP.
  5. O módulo ICMP reconhece Type = 8 e gera automaticamente um Echo Reply (Type 0).
  6. A resposta retorna pelo mesmo caminho, também com Protocol = 1.

7. Cenário Prático: Mensagens de Erro

Quando um roteador não consegue entregar um pacote (ex: rede inalcançável), ele gera um ICMP Destination Unreachable (Type 3). Esse pacote ICMP é encapsulado em um novo datagrama IP com Protocol = 1 e enviado de volta para a origem do pacote problemático. Dentro do ICMP, há uma cópia do cabeçalho IP original e dos primeiros 64 bits do payload, permitindo que o remetente identifique qual fluxo falhou.

8. Diferença no IPv6 (Next Header)

Embora este tópico esteja dentro da estrutura da Camada de Rede e geralmente focado no IPv4, é importante notar a evolução deste conceito no IPv6:

  • No IPv4, este é um campo fixo chamado Protocol.
  • No IPv6, o conceito foi expandido e renomeado para Next Header.
  • Importante: O valor 1 ainda é usado no IPv6? Não. No IPv6, as mensagens de controle foram renomeadas para ICMPv6 e receberam um novo valor de identificação: 58. Portanto, se você encontrar um valor 1 em um contexto IPv6, ele é inválido (ou referente a um protocolo obsoleto). O valor 1 é estritamente o identificador do ICMPv4.

Tabela Comparativa IPv4 vs. IPv6

Protocolo Valor em IPv4 (Protocol) Valor em IPv6 (Next Header)
ICMPv4 1 N/A
ICMPv6 N/A 58
TCP 6 6
UDP 17 17
OSPF 89 89

O ICMPv6, com valor 58, agregou funcionalidades extras em relação ao ICMPv4 — é responsável também pela descoberta de vizinhos (Neighbor Discovery, equivalente ao ARP), autoconfiguração de endereços (SLAAC) e descoberta de MTU no caminho (PMTUD).

9. Resumo dos Valores Comuns para Contexto

Para entender a importância do valor 1, é útil compará-lo com seus vizinhos no registro da IANA:

  • 1: ICMP (Internet Control Message Protocol) -> Nosso foco.
  • 6: TCP (Transmission Control Protocol) -> Dados confiáveis.
  • 17: UDP (User Datagram Protocol) -> Dados rápidos/não confiáveis.
  • 89: OSPF (Open Shortest Path First) -> Roteamento dinâmico.

10. Conclusão

O valor 1 no campo Protocol do cabeçalho IPv4 é a "porta de entrada" para a operação, manutenção e sinalização de erros da própria infraestrutura da Internet. Sem o ICMP, ferramentas como ping e traceroute não existiriam, roteadores não conseguiriam notificar hosts sobre problemas de entrega, e o Path MTU Discovery (PMTUD) não funcionaria — levando a fragmentação ineficiente e a "black holes" de MTU que afetam conexões TCP. Para engenheiros de rede, observar o tráfego com Protocol = 1 em capturas de pacotes é frequentemente o primeiro passo para diagnosticar problemas de roteamento, congestionamento e indisponibilidade de serviços.