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

11 - Datagrama IPv4

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

O Datagrama IPv4 é a unidade de dados básica da camada de rede. Ele é composto por um Cabeçalho (mínimo de 20 bytes) seguido pelos dados propriamente ditos. Definido pela RFC 791 (1981), o datagrama IPv4 é a PDU (Protocol Data Unit) que transporta informações através da Internet, sendo encapsulado em quadros de Camada de Enlace a cada salto entre roteadores.

1. Estrutura do Cabeçalho IPv4 (RFC 791)

Campo Tamanho (Bits) Função
Version 4 Para o IPv4, o valor é fixo em 4 (0100).
IHL (Header Length) 4 Indica o tamanho do cabeçalho em palavras de 32 bits.
Type of Service (ToS) 8 Usado para priorização de pacotes (Differentiated Services).
Total Length 16 Tamanho total do datagrama (Cabeçalho + Dados).
Identification 16 Identifica pacotes que pertencem a um mesmo datagrama fragmentado.
Flags 3 Usado no controle de fragmentação (Don't Fragment, More Fragments).
Fragment Offset 13 Indica a posição da parte do dado no datagrama original.
TTL (Time to Live) 8 Contador de "saltos" para evitar pacotes em loop infinito na rede.
Protocol 8 Identifica qual protocolo da camada superior (ex: 6=TCP, 17=UDP, 1=ICMP).
Header Checksum 16 Verificação de integridade apenas do cabeçalho.
Source Address 32 Endereço IP do emissor.
Destination Address 32 Endereço IP do receptor final.
Options (opcional) 0-320 Campo variável para opções de roteamento, debugging e timestamps.

O cabeçalho totaliza 20 bytes fixos (sem opções) e pode chegar a 60 bytes (com IHL=15) quando opções são usadas.

2. Diagrama Visual do Datagrama IPv4

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  IHL  |    ToS/DSCP   |         Total Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |Flags|    Fragment Offset      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  TTL  |    Protocol           |       Header Checksum          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source Address                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Destination Address                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options (variable, 0-40 bytes)             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Payload (Dados L4)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Cada linha do diagrama representa 32 bits (4 bytes). O cabeçalho mínimo (IHL=5) ocupa 5 linhas, totalizando 20 bytes. Após o cabeçalho, o payload (segmento TCP/UDP, mensagem ICMP ou dados IGMP) é transportado transparentemente.

3. O Papel do TTL (Time to Live)

O campo TTL é vital para a sobrevivência da rede:

  • A cada roteador que o pacote atravessa, o valor do TTL é subtraído em 1.
  • Se o TTL chegar a zero, o roteador descarta o pacote e envia uma mensagem de erro ICMP Type 11 (Time Exceeded) para o remetente.
  • Isso impede que pacotes fiquem girando para sempre em caso de erro de roteamento.
  • Valor típico inicial em Linux: 64; em Windows: 128; em equipamentos Cisco: 255.
  • O TTL também é usado propositalmente pela ferramenta traceroute, que envia pacotes com TTL crescente (1, 2, 3...) para mapear a rota.

4. Fragmentação e Montagem

Quando um pacote IP precisa atravessar um link com uma MTU (Maximum Transmission Unit) menor que o tamanho do pacote, ele é fragmentado.

  • Os roteadores dividem o pacote original em pedaços menores.
  • O host de destino usa o campo Identification e Fragment Offset para remontar o pacote original antes de entregá-lo para a camada de transporte.
  • A flag DF (Don't Fragment), quando setada, instrui os roteadores a não fragmentarem; caso o pacote seja maior que a MTU, o roteador descarta e envia ICMP Type 3 Code 4 (Fragmentation Needed), mecanismo usado pelo PMTUD (Path MTU Discovery).
  • A flag MF (More Fragments) indica se há mais fragmentos a caminho (MF=1) ou se aquele é o último (MF=0).

Exemplo de Fragmentação

Um datagrama IP de 4000 bytes atravessando uma Ethernet com MTU 1500:

Fragmento Offset Tamanho Total MF Payload
1 0 1500 bytes 1 1480 bytes de dados
2 1480 1500 bytes 1 1480 bytes de dados
3 2960 1040 bytes 0 1020 bytes de dados

O destino aguarda receber todos os fragmentos (com mesmo Identification) para recompô-los em ordem usando o Fragment Offset.

5. Identificação do Protocolo de Camada Superior

O campo Protocol (8 bits) indica qual protocolo de camada superior está encapsulado no payload:

Valor Protocolo Descrição
1 ICMP Internet Control Message Protocol
2 IGMP Internet Group Management Protocol
6 TCP Transmission Control Protocol
17 UDP User Datagram Protocol
41 IPv6 Encapsulação IPv6-in-IPv4
47 GRE Generic Routing Encapsulation
50 ESP IPsec Encapsulating Security Payload
89 OSPF Open Shortest Path First
132 SCTP Stream Control Transmission Protocol

A lista completa é mantida pela IANA em https://www.iana.org/assignments/protocol-numbers.

6. Campo Options (Opcional)

Embora raramente utilizado na Internet pública, o campo Options permite funcionalidades avançadas:

  • Strict Source Route (SSRR, type 137): O emissor define a rota exata que o pacote deve seguir.
  • Loose Source Route (LSRR, type 131): O emissor define alguns roteadores pelos quais o pacote deve passar (mas não a rota completa).
  • Record Route (type 7): Cada roteador no caminho adiciona seu IP ao campo, permitindo rastrear a rota inversa.
  • Timestamp (type 68): Cada roteador adiciona seu IP e o timestamp, útil para medição de delay.

Essas opções são frequentemente bloqueadas em roteadores de borda por motivos de segurança, pois podem ser usadas para mapeamento de rede e ataques de IP spoofing.

7. Tamanho Máximo e MTU

  • Limite teórico: 65.535 bytes (campo Total Length de 16 bits).
  • MTU Ethernet padrão: 1500 bytes.
  • MTU PPPoE: 1492 bytes (devido ao overhead de 8 bytes do PPPoE).
  • MTU IPv6 mínimo: 1280 bytes (RFC 8200).
  • Jumbo frames (datacenter): 9000 bytes, usado para reduzir overhead.

8. Diferenças em Relação ao Datagrama IPv6

O IPv6 simplifica o cabeçalho, removendo campos como Header Checksum, IHL (cabeçalho fixo de 40 bytes) e Options (substituído por extensões encadeadas). A fragmentação só é feita pela origem, e a identificação de protocolo passa a se chamar Next Header.


Important

No IPv6, a fragmentação não é mais feita pelos roteadores intermediários. Se um pacote for muito grande, o roteador simplesmente o descarta e avisa o emissor para que ele mesmo faça a fragmentação. Isso torna o roteamento na espinha dorsal da Internet muito mais performático.

Note

Apesar do IPv6 ser o sucessor natural, o IPv4 ainda domina o tráfego da Internet em grande parte das redes locais e provedores. A coexistência é viabilizada por mecanismos como túneis (6to4, Teredo) e tradução (NAT64/DNS64).