02 - Unidade Básica de Transferência
video: https://youtu.be/... no frontmatter da nota.Unidade Básica de Transferência (Datagrama IP)
Na Camada de Rede, a unidade fundamental de transferência de informações é denominada Datagrama (quando se trata de redes orientadas a pacotes sem conexão, como a arquitetura TCP/IP). O datagrama é a PDU (Protocol Data Unit) desta camada, análoga ao "quadro" na Camada de Enlace ou ao "segmento" na Camada de Transporte.
O conceito de datagrama é mais do que apenas um pacote de dados; ele define a atomicidade da informação que trafega pela internet. Ele representa a menor entidade de informação que a Camada de Rede entende, processa e roteia de forma independente, conforme padronizado pela RFC 791 (Postel, 1981) — documento fundador do protocolo IPv4.
1. Datagrama vs Circuito Virtual
O modelo de comunicação em redes de computadores divide-se em duas grandes filosofias:
| Característica | Datagrama (sem conexão) | Circuito Virtual (orientado a conexão) |
|---|---|---|
| Estabelecimento de conexão | Não | Sim (sinalização prévia) |
| Rota dos pacotes | Variável (cada pacote decide) | Fixa (definida na conexão) |
| Estado nos roteadores | Nenhum (stateless) | Estado por conexão |
| Ordem de chegada | Não garantida | Garantida |
| Exemplo IP | IP, UDP, CLNP | X.25, ATM, Frame Relay, MPLS |
| RFC de referência | RFC 791 (IP) | RFC 3031 (MPLS) |
O modelo de datagrama sem conexão foi escolhido pela arquitetura TCP/IP (e depois pelo OSI CLNP) por sua simplicidade e resiliência: falhas em um roteador não derrubam todas as conexões; o próximo datagrama pode tomar outra rota.
2. Definição e Autossuficiência
Um datagrama IP é uma estrutura de dados autossuficiente. Isso significa que ele carrega consigo todas as informações necessárias para ser entregue ao seu destino, independentemente de qualquer outro datagrama.
- Cabeçalho Rico em Metadados: O datagrama é composto por um cabeçalho (header) e uma carga útil (payload). O cabeçalho contém metadados cruciais, como o endereço IP de origem e o endereço IP de destino.
- Endereçamento Global: Diferente de um quadro da Camada de Enlace, que contém endereços MAC que têm validade apenas localmente (saltos individuais), o datagrama contém endereços lógicos globais que permanecem constantes do início ao fim da jornada (exceto em casos específicos de NAT).
- Ausência de Contexto Externo: Quando um roteador recebe um datagrama, ele toma a decisão de encaminhamento baseando-se apenas no que está escrito dentro daquele datagrama específico. O roteador não precisa saber qual datagrama chegou antes nem qual chegará depois.
3. Estrutura do Datagrama IPv4 (RFC 791)
O cabeçalho IPv4 tem tamanho variável de 20 a 60 bytes (5 a 15 words de 32 bits):
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 | Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TTL | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options (0-40 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Campo | Bits | Função |
|---|---|---|
| Version | 4 | Versão do IP (4 para IPv4, 6 para IPv6) |
| IHL | 4 | Tamanho do cabeçalho em words de 32 bits (5-15) |
| TOS / DSCP | 8 | Tipo de serviço / QoS (RFC 2474) |
| Total Length | 16 | Tamanho total do datagrama (até 65535 bytes) |
| Identification | 16 | ID único para fragmentação |
| Flags | 3 | DF (Don't Fragment), MF (More Fragments) |
| Fragment Offset | 13 | Posição do fragmento (em blocos de 8 bytes) |
| TTL | 8 | Time To Live (decrementado a cada salto) |
| Protocol | 8 | Protocolo L4 (TCP=6, UDP=17, ICMP=1) |
| Header Checksum | 16 | Checksum do cabeçalho apenas |
| Source Address | 32 | IP de origem |
| Destination Address | 32 | IP de destino |
| Options | 0-320 | Opções (Record Route, Timestamp, LSRR/SSRR) |
4. Independência de Pacotes
A característica mais distintiva do datagrama como unidade de transferência é a sua independência. No protocolo IP, não existe o conceito de um "fluxo" físico ou lógico de dados contínuo no nível da rede.
- Tratamento Individual: Cada datagrama é processado isoladamente. Se uma mensagem é grande e precisa ser dividida em 10 datagramas, a rede trata esses 10 datagramas como 10 mensagens distintas que, por coincidência, estão indo para o mesmo lugar.
- Roteamento Divergente: Devido a essa independência, o datagrama 1 pode tomar a Rota A, enquanto o datagrama 2 pode tomar a Rota B. Isso pode ocorrer devido a mudanças nas tabelas de roteamento, balanceamento de carga (ECMP) ou falhas temporárias em links.
- Chegada Desordenada: Como consequência da rota independente, os datagramas não garantem a ordem de chegada. A unidade básica de transferência não sequencia os dados; ela apenas os transporta. A ordenação é uma responsabilidade da Camada de Transporte (ex: o número de sequência no TCP).
5. Estrutura Variável e Fragmentação
O datagrama IP é uma unidade de tamanho variável. Diferente de células fixas (como em tecnologias ATM, com 53 bytes), o datagrama pode ter poucos bytes ou vários quilobytes, limitado apenas pela MTU (Maximum Transmission Unit) da rede subjacente e pela capacidade do cabeçalho.
MTU Padrão por Tecnologia
| Tecnologia | MTU Típica (bytes) |
|---|---|
| Ethernet (RFC 894) | 1500 |
| IEEE 802.3/802.2 LLC | 1492 |
| PPPoE | 1492 |
| IPv4 mínimo (RFC 791) | 68 |
| IPv6 mínimo (RFC 8200) | 1280 |
| Jumbo Frames | 9000 |
| ATM AAL5 | 9180 |
- Encapsulamento: O datagrama encapsula o segmento da Camada de Transporte. Se o segmento for muito grande para a rede pela qual ele deve passar, o datagrama pode ser fragmentado (RFC 791).
- Fragmentos como Unidades: Quando um datagrama é fragmentado, cada fragmento torna-se, ele próprio, um datagrama independente (ou parte de um), com seu próprio cabeçalho IP. Eles são roteados independentemente e remontados apenas no destino final. Isso reforça que a "unidade de transferência" é flexível e adaptável às restrições físicas das redes intermediárias.
Processo de Fragmentação
Dado um datagrama de 4000 bytes chegando em uma interface com MTU 1500:
- Calcula-se o payload máximo por fragmento:
1500 - 20 = 1480. Arredonda para baixo para múltiplo de 8:1480. - Fragmento 1: offset 0, MF=1, length 1480.
- Fragmento 2: offset 1480/8=185, MF=1, length 1480.
- Fragmento 3: offset 2960/8=370, MF=0, length 1040.
Path MTU Discovery (PMTUD)
Para evitar fragmentação intermediária (custosa e problemática), a RFC 1191 (PMTUD) introduziu a técnica de descoberta da MTU do caminho completo: o emissor seta o bit DF=1; se um roteador intermediário não puder encaminhar, descarta o pacote e envia ICMP Fragmentation Needed (Type 3 Code 4) informando a MTU do próximo salto. O emissor reduz a MTU e reenvia.
Em IPv6 (RFC 8200), roteadores intermediários não fragmentam — PMTUD é obrigatório.
6. Ciclo de Vida da Unidade
Como unidade de transferência, o datagrama tem um ciclo de vida claro dentro da arquitetura de rede:
- Criação (Origem): A Camada de Rede do host origem recebe dados da Camada de Transporte, anexa o cabeçalho IP (endereçamento e controle) e cria o datagrama.
- Transmissão: O datagrama é passado para a Camada de Enlace para ser colocado no meio físico como um quadro.
- Roteamento (Intermediário): Em cada salto, o quadro é desencapsulado, expondo o datagrama. O roteador lê o cabeçalho do datagrama, decrementa o TTL e decide o próximo salto. O datagrama é então reencapsulado em um novo quadro para o próximo link.
- Destruição (Destino): O host de destino recebe o quadro, retira o datagrama, verifica o cabeçalho e, se o endereço de destino corresponder ao seu próprio, remove o cabeçalho IP e entrega o conteúdo (payload) para a Camada de Transporte, encerrando a vida útil daquele datagrama.
7. Limites e Tamanhos Práticos
| Limite | Valor | Razão |
|---|---|---|
| Tamanho máximo IPv4 | 65535 bytes | Campo Total Length = 16 bits |
| Tamanho máximo IPv6 (jumbogram) | 4 GB | RFC 2675 |
| Datagrama mínimo sem fragmentar | 576 bytes (IPv4), 1280 bytes (IPv6) | RFC 791 / RFC 8200 |
| Header mínimo | 20 bytes | IHL = 5 |
| Header máximo | 60 bytes | IHL = 15 |
8. IPv6: Evolução do Datagrama
O IPv6 (RFC 8200) reformulou o datagrama, simplificando o cabeçalho para 40 bytes fixos e movendo opções para Extension Headers encadeados (Hop-by-Hop, Routing, Fragment, ESP, AH, Destination Options). A fragmentação intermediária foi abolida, e o campo TTL foi renomeado para Hop Limit com semântica idêntica.
9. Conclusão
O datagrama IP é a unidade atômica da Internet — o pacote autossuficiente que carrega endereços globais, metadados de roteamento e payload, sem depender de estado em roteadores intermediários. Sua filosofia de sem conexão, melhor esforço, independente foi fundamental para o sucesso da arquitetura TCP/IP, permitindo escala global e resiliência a falhas. Compreender o datagrama é entender a própria essência do funcionamento da Camada de Rede: um estado mínimo no núcleo, inteligência nas bordas (hosts), e simplicidade matemática na decisão de roteamento por salto. As evoluções de IPv4 para IPv6 preservaram esses princípios, refinando apenas aspectos de desempenho e segurança.