Carregando...
Elievelto Edimar

Analista de Soc

Segurança da Informação

Cyber Security

Elievelto Edimar

Analista de Soc

Segurança da Informação

Cyber Security

Blog Post

IPV4: Desvendando o Cabeçalho do Datagrama (Guia Completo)

IPV4: Desvendando o Cabeçalho do Datagrama (Guia Completo)

No vasto universo da internet, o IPV4 (Internet Protocol versão 4) é a espinha dorsal que permite a comunicação entre bilhões de dispositivos. Mas, como as informações viajam de um ponto a outro de forma organizada e eficiente? A resposta reside no cabeçalho do IPV4: uma estrutura de dados essencial que acompanha cada pacote (ou datagrama) e funciona como seu “passaporte” na rede.

Compreender o cabeçalho do IPV4 é fundamental para qualquer profissional de TI, pois ele contém as instruções vitais para o roteamento, a fragmentação e a entrega dos dados. Neste guia completo, vamos desvendar cada um dos campos desse cabeçalho, explicando sua função e importância de forma didática.

Campos Essenciais do Cabeçalho IPv4

O cabeçalho IPv4 é uma estrutura de dados fundamental em cada pacote IP, contendo informações essenciais para o roteamento e processamento do datagrama através da rede. Os campos são geralmente representados em uma estrutura de 32 bits por linha.

Cabeçalho IPV4

1. Versão (Version)

  • Tamanho: 4 bits
  • Função: Indica a versão do protocolo IP. Para o IPv4, este campo sempre terá o valor binário 0100 (4 em decimal), caso seja o ipv6 esse campo terá valor de 0110 (6 em decimal).
  • Importância: Permite que os roteadores e hosts saibam qual protocolo IP (IPv4 ou IPv6) está sendo utilizado para processar o pacote corretamente.

2. IHL (Internet Header Length)

  • Tamanho: 4 bits
  • Função: Especifica o tamanho do cabeçalho IPv4 em “palavras” de 32 bits (4 bytes).
  • Detalhes:
    • O valor mínimo é 5 (5 x 4 bytes = 20 bytes), que é o tamanho de um cabeçalho IP padrão sem opções.
    • O valor máximo é 15 (15 x 4 bytes = 60 bytes), pois o campo tem 4 bits (24=16 valores possíveis, de 0 a 15). Isso significa que o cabeçalho IP pode ter no máximo 60 bytes (20 bytes de cabeçalho base + 40 bytes de opções).
  • Importância: Permite que o receptor saiba onde o cabeçalho termina e os dados do pacote começam.

3. Tipo de Serviço (ToS) / DSCP (Differentiated Services Code Point)

  • Tamanho: 8 bits
  • Função: Originalmente chamado “Type of Service” (Tipo de Serviço), este campo é usado para indicar o tipo de serviço desejado para o datagrama, o que pode influenciar a forma como os roteadores o tratam (por exemplo, priorizando o tráfego).
  • Evolução: Embora ainda possa ser referido como ToS, na prática moderna ele é mais comumente usado como o campo DSCP (Differentiated Services Code Point) para implementar QoS (Quality of Service – Qualidade de Serviço).
    • Os 6 bits mais significativos do campo ToS (DSCP) são usados para classificar o tráfego em diferentes classes de serviço.
    • Os 2 bits menos significativos (Explicit Congestion Notification – ECN) são usados para sinalização de controle de congestionamento.
  • Importância: Permite que as redes priorizem certos tipos de tráfego (voz sobre IP, vídeo) sobre outros (e-mail, navegação web), garantindo um desempenho mais consistente para aplicações sensíveis à latência e requisitos específicos.

4. Comprimento Total (Total Length)

  • Tamanho: 16 bits
  • Função: Indica o comprimento total do datagrama IP, em bytes, incluindo o cabeçalho e os dados.
  • Detalhes: O comprimento máximo de um datagrama IP é 216−1=65.535 bytes. Na prática, a maioria dos links de rede impõe um limite menor (MTU).
  • Importância: Essencial para que o receptor saiba o tamanho completo do pacote e possa alocar memória adequadamente, especialmente em caso de fragmentação.

5. Identificação (Identification)

  • Tamanho: 16 bits
  • Função: Usado principalmente para identificar exclusivamente um datagrama IP original quando ele é fragmentado. Todos os fragmentos de um mesmo datagrama original terão o mesmo valor neste campo.
  • Importância: Permite que o host receptor monte novamente os fragmentos na ordem correta, mesmo que cheguem fora de ordem.

6. Flags

  • Tamanho: 3 bits
  • Função: Usados para controlar a fragmentação de datagramas IP. São três flags:
    • Bit 0 (Reserved): Reservado para uso futuro e deve ser zero.
    • Bit 1 (DF – Don’t Fragment): Se este bit estiver definido como ‘1’, o datagrama não pode ser fragmentado. Se um roteador encontrar um datagrama com DF=1 que exceda o MTU (Maximum Transmission Unit) da próxima rede, ele descartará o datagrama e enviará uma mensagem ICMP de “destino inalcançável – fragmentação necessária” de volta ao remetente.
    • Bit 2 (MF – More Fragments): Se este bit estiver definido como ‘1’, indica que o datagrama é um fragmento e que existem mais fragmentos a seguir. Se for ‘0’, indica que é o último fragmento do datagrama original ou que o datagrama não foi fragmentado.
  • Importância: Controla o processo de fragmentação, essencial quando um pacote é maior do que o que pode ser transportado por uma rede específica.

7. Offset do Fragmento (Fragment Offset)

  • Tamanho: 13 bits
  • Função: Indica a posição, em unidades de 8 bytes (64 bits), do início dos dados deste fragmento em relação ao início dos dados do datagrama IP original.
  • Contexto: É usado em conjunto com o campo “Flags” para reconstruir o datagrama IP original após a fragmentação. Permite que o receptor saiba a ordem correta dos fragmentos para a remontagem.
  • Importância: Crucial para a remontagem correta de pacotes fragmentados no destino.

8. Tempo de Vida (TTL – Time to Live)

  • Tamanho: 8 bits
  • Função: Serve para evitar que datagramas IP fiquem circulando infinitamente pela internet em caso de loops de roteamento.
  • Funcionamento:
    • É um contador decrementado em 1 (pelo menos) cada vez que o datagrama passa por um roteador (hop).
    • Quando o TTL chega a zero, o roteador descarta o datagrama e envia uma mensagem ICMP de “Tempo Excedido” de volta ao remetente.
  • Detalhes: O valor inicial do TTL é definido pelo remetente (geralmente entre 64 e 255).
  • Importância: Previne o congestionamento da rede por pacotes “perdidos” em loops.

9. Protocolo (Protocol)

  • Tamanho: 8 bits
  • Função: Identifica o protocolo da camada superior que o IP está transportando.
  • Detalhes: Cada protocolo da camada de transporte (ou superior) tem um número atribuído:
    • 1: ICMP (Internet Control Message Protocol)
    • 6: TCP (Transmission Control Protocol)
    • 17: UDP (User Datagram Protocol)
    • Outros números são atribuídos a outros protocolos (ex: OSPF, EIGRP, GRE).
  • Importância: Permite que o host de destino saiba para qual protocolo da camada superior deve entregar os dados contidos no datagrama.

10. Checksum do Cabeçalho (Header Checksum)

  • Tamanho: 16 bits
  • Função: Usado para detecção de erros apenas no cabeçalho IP.
  • Funcionamento: O remetente calcula um valor checksum do cabeçalho e o insere neste campo. Cada roteador intermediário recalcula o checksum. Se o valor calculado não corresponder ao valor no campo, o datagrama é descartado (indicando que o cabeçalho foi corrompido).
  • Importância: Garante a integridade das informações de roteamento e controle no cabeçalho. Não cobre os dados do pacote.

11. Endereço IP de Origem (Source IP Address)

  • Tamanho: 32 bits
  • Função: Contém o endereço IP do dispositivo que originou o datagrama.
  • Importância: Permite que o host de destino saiba de onde o pacote veio e, se necessário, para onde enviar uma resposta.

12. Endereço IP de Destino (Destination IP Address)

  • Tamanho: 32 bits
  • Função: Contém o endereço IP do dispositivo para o qual o datagrama é destinado.
  • Importância: É o principal campo usado pelos roteadores para determinar a próxima “parada” (o próximo roteador ou o destino final) do pacote.

13. Opções (Options)

  • Tamanho: Variável (de 0 a 40 bytes)
  • Função: Permite funcionalidades adicionais que não são cobertas pelos campos fixos do cabeçalho. São usadas para depuração, segurança, roteamento específico e outras necessidades.
  • Detalhes: O comprimento das opções é refletido no campo IHL. Se houver opções, o IHL será maior que 5.
  • Importância: Embora não sejam de uso comum em tráfego IP diário, são importantes para cenários específicos e extensões do protocolo.

14. Preenchimento (Padding)

  • Tamanho: Variável (de 0 a 3 bytes)
  • Função: Bits de preenchimento são adicionados após o campo “Opções” para garantir que o cabeçalho IPv4 termine em um múltiplo de 32 bits (4 bytes).
  • Importância: Garante que o cabeçalho tenha um tamanho que seja um múltiplo de 4 bytes, o que é crucial para o processamento eficiente pelos roteadores e placas de rede.

Conclusão

O cabeçalho do IPV4 é, sem dúvida, uma obra-prima de engenharia que, com seus poucos bytes, orquestra a complexa comunicação de dados na internet. Cada campo, desde a versão do IPV4 até o TTL e os endereços de origem e destino, desempenha um papel vital para que seus dados cheguem ao destino correto, de forma eficiente e segura.

Compreender esses campos é mais do que apenas memorizar detalhes técnicos; é entender a lógica por trás de como a internet funciona e como os datagramas são gerenciados em cada etapa do roteamento. Este conhecimento é um pilar para qualquer estudo aprofundado em redes e para a sua jornada profissional na área de TI. Continue explorando e desvendando os segredos dessa fascinante tecnologia!

Tags:
Write a comment