Cisco CCNAv7 - O pacote IPv4
Introdução
Section titled “Introdução”Todo pacote IP carrega, antes dos dados, um cabeçalho com as informações de que os roteadores precisam para encaminhá-lo. Conhecer os campos desse cabeçalho ajuda a entender o ping, o traceroute, a fragmentação e muitos problemas de rede. Neste post, você vai abrir o pacote IPv4 e ver para que serve cada campo.
Estrutura do pacote IPv4
Section titled “Estrutura do pacote IPv4”O pacote IPv4 tem duas partes: o cabeçalho (informações de controle) e a carga (os dados vindos da camada de transporte).
flowchart LR A["Cabeçalho IPv4<br/>20 a 60 bytes"] --> B["Dados<br/>segmento TCP ou UDP"]
O cabeçalho tem 20 bytes no mínimo. Pode chegar a 60 bytes, se houver opções, que hoje quase não são usadas.
Os campos do cabeçalho
Section titled “Os campos do cabeçalho”| Campo | Tamanho | Para que serve |
|---|---|---|
| Versão | 4 bits | Indica a versão do IP. No IPv4, o valor é 4 |
| IHL (Internet Header Length) | 4 bits | Tamanho do cabeçalho, em palavras de 32 bits (4 bytes) |
| DSCP / ECN | 8 bits | Classificação do tráfego (QoS) e notificação de congestionamento |
| Comprimento total | 16 bits | Tamanho do pacote inteiro (cabeçalho + dados), em bytes |
| Identificação | 16 bits | Identifica os fragmentos de um mesmo pacote |
| Flags | 3 bits | Controle da fragmentação (por exemplo, DF, que proíbe fragmentar, e MF, que indica mais fragmentos) |
| Deslocamento do fragmento | 13 bits | Posição do fragmento no pacote original |
| TTL (Time to Live) | 8 bits | Limite de saltos. Cada roteador subtrai 1 |
| Protocolo | 8 bits | Identifica o conteúdo (1 = ICMP, 6 = TCP, 17 = UDP) |
| Checksum do cabeçalho | 16 bits | Verificação de erros só do cabeçalho |
| Endereço IP de origem | 32 bits | Quem enviou |
| Endereço IP de destino | 32 bits | Para quem vai |
| Opções e enchimento | Variável | Recursos raros; o enchimento completa o múltiplo de 32 bits |
Somando os campos fixos: 4 + 4 + 8 + 16 + 16 + 3 + 13 + 8 + 8 + 16 + 32 + 32 = 160 bits = 20 bytes.
O IHL: calculando o tamanho do cabeçalho
Section titled “O IHL: calculando o tamanho do cabeçalho”O IHL conta em palavras de 4 bytes. Para obter o tamanho em bytes, multiplique por 4.
| IHL | Tamanho do cabeçalho |
|---|---|
| 5 | 5 × 4 = 20 bytes (o mais comum, sem opções) |
| 6 | 6 × 4 = 24 bytes |
| 15 (máximo) | 15 × 4 = 60 bytes |
O TTL: o “prazo de validade” do pacote
Section titled “O TTL: o “prazo de validade” do pacote”O TTL impede que um pacote circule para sempre em caso de erro de roteamento (um loop).
- O remetente define o TTL inicial (valores comuns: 64, 128 ou 255).
- Cada roteador que encaminha o pacote diminui o TTL em 1.
- Se o TTL chegar a 0, o roteador descarta o pacote e envia uma mensagem ICMP de “tempo excedido” ao remetente.
flowchart LR A["PC<br/>TTL 64"] --> B["Roteador 1<br/>TTL 63"] --> C["Roteador 2<br/>TTL 62"] --> D["Servidor<br/>TTL 62"]
O campo Protocolo
Section titled “O campo Protocolo”Informa qual protocolo da camada de transporte (ou de controle) está dentro do pacote, para o destino saber a quem entregar os dados:
| Valor | Protocolo |
|---|---|
| 1 | ICMP |
| 6 | TCP |
| 17 | UDP |
Fragmentação do pacote IPv4
Section titled “Fragmentação do pacote IPv4”Se um pacote for maior que o MTU do próximo enlace e a flag DF (Don’t Fragment) não estiver marcada, o roteador divide o pacote em fragmentos. O destino os remonta.
Cada fragmento carrega o mesmo campo Identificação, a flag MF (mais fragmentos) em todos, menos o último, e o deslocamento, medido em unidades de 8 bytes.
Exemplo calculado
Section titled “Exemplo calculado”Um pacote de 4000 bytes (20 de cabeçalho + 3980 de dados) precisa passar por um enlace com MTU de 1500 bytes.
- Cada fragmento pode ter 1500 bytes no total: 20 de cabeçalho + 1480 de dados. (1480 é múltiplo de 8, como exige o campo de deslocamento.)
| Fragmento | Dados | Tamanho total | MF | Deslocamento |
|---|---|---|---|---|
| 1 | 1480 | 1500 | 1 | 0 |
| 2 | 1480 | 1500 | 1 | 1480 ÷ 8 = 185 |
| 3 | 3980 − 2960 = 1020 | 1020 + 20 = 1040 | 0 | 2960 ÷ 8 = 370 |
Mini laboratório: observando o cabeçalho IPv4
Section titled “Mini laboratório: observando o cabeçalho IPv4”Objetivo: identificar os campos de um pacote IPv4 real.
Parte 1: no Packet Tracer (Simulation)
Section titled “Parte 1: no Packet Tracer (Simulation)”- Monte 2 PCs ligados a um switch, com IPs
192.168.10.1/24e192.168.10.2/24. - Mude para o modo Simulation e envie um
pingdo PC0 para o PC1. - Abra o envelope do ICMP e veja o PDU Information, na camada de rede (Layer 3).
- Anote: IP de origem, IP de destino, TTL e protocolo.
Parte 2: no Wireshark
Section titled “Parte 2: no Wireshark”- Inicie uma captura e rode
pingpara um site (use-c 4no Linux ou-n 4no Windows). - Aplique o filtro
icmpe clique em um pacote de Echo request. - Expanda Internet Protocol Version 4 e preencha:
| Campo | Valor observado |
|---|---|
| Version | ? |
| Header Length | ? |
| Total Length | ? |
| Time to Live | ? |
| Protocol | ? |
| Source / Destination | ? |
- Compare o TTL do pacote enviado com o TTL do Echo reply recebido. Por que costumam ser diferentes?
Parte 3: calcule
Section titled “Parte 3: calcule”| Situação | Resposta |
|---|---|
| Um pacote tem IHL = 5. Qual é o tamanho do cabeçalho? | ? |
| Um pacote de 1500 bytes tem cabeçalho de 20 bytes. Quantos bytes de dados? | ? |
| Um pacote de 3020 bytes (3000 de dados) passa por um enlace com MTU 1500. Quantos fragmentos? Quais os deslocamentos? | ? |
Ver respostas
Parte 2: versão 4; cabeçalho 20 bytes (IHL 5); protocolo ICMP (1); um ping comum tem total de 84 bytes no Linux (20 de IP, 8 de ICMP e 56 de dados). Os TTLs costumam ser diferentes porque cada sistema usa um valor inicial próprio (por exemplo, 64 no Linux, 128 no Windows e 255 em equipamentos Cisco), e a resposta ainda atravessa roteadores que subtraem 1 a cada salto.
Parte 3:
| Situação | Resposta |
|---|---|
| IHL = 5 | 5 × 4 = 20 bytes |
| Dados de um pacote de 1500 | 1500 − 20 = 1480 bytes |
| 3000 bytes de dados, MTU 1500 | 1480 + 1480 + 40 = 3 fragmentos, com dados de 1480, 1480 e 40 bytes; deslocamentos 0, 185 e 370 |
Perguntas para fixar:
- Para que serve o campo TTL e o que acontece quando ele chega a 0?
- Qual campo informa se o conteúdo do pacote é TCP, UDP ou ICMP?
- Qual é o tamanho mínimo do cabeçalho IPv4?
Ver respostas
- Evita que o pacote circule para sempre. Ao chegar a 0, o roteador descarta o pacote e envia um aviso ICMP.
- O campo Protocolo (1 = ICMP, 6 = TCP, 17 = UDP).
- 20 bytes.
Resumo
Section titled “Resumo”- O pacote IPv4 tem cabeçalho (mínimo de 20 bytes) e dados.
- Campos principais: versão (4), IHL, comprimento total, TTL, protocolo, IP de origem e IP de destino.
- O TTL diminui 1 em cada roteador e evita loops. Ao chegar a 0, o pacote é descartado.
- O campo Protocolo indica o conteúdo (1 = ICMP, 6 = TCP, 17 = UDP).
- Pacotes maiores que o MTU podem ser fragmentados (campos Identificação, Flags e Deslocamento), o que prejudica o desempenho.
