Cursos / Redes de Computadores / Redes de Computadores I / Aula

arrow_back Aula 05 - Arquitetura Internet – Parte II

Formato do Quadro IP

Você sabe que cada camada da pilha de protocolos adiciona seus próprios cabeçalhos, e com o protocolo IP, que implementa a camada de rede, não seria diferente. O Quadro 1 mostra os campos do cabeçalho de um pacote IP (ou datagrama IP). O pacote, evidentemente, ainda possui um campo de dados após esse cabeçalho que irá conter as informações recebidas da camada de transporte.

Versão
4 bits
HLEN
4 bits
TOS
8 bits
Tamanho
16 bits
Identificação
16 bits
Flags
3 bits
Fragmentação
13 bits
TTL
8 bits
Protocolo
8 bits
Checksum do cabeçalho
16 bits
Endereço IP de Origem
32 bits
Endereço IP de Destin
32 bits
Opções

Quadro 1 – Formato do cabeçalho do pacote IP

A seguir, veja uma breve descrição sobre cada um dos campos.

  • Versão: indica a versão do protocolo IP sendo utilizado. Atualmente, a maioria das redes utiliza a versão 4 do protocolo, mas já existe a versão 6, que gradativamente vem substituindo a versão 4.
  • HLEN (Header Length – tamanho do cabeçalho): conforme o nome já sugere, o campo opções pode ser utilizado para incluir campos opcionais no cabeçalho. Mas, muitas vezes, ele não é utilizado. Isso faz com que o tamanho do cabeçalho seja variável. Desse modo, o HLEN contém o tamanho do cabeçalho em palavras de 32 bits. Ou seja, multiplique o valor de HLEN por 4 para obter o tamanho do cabeçalho IP em bytes. O tamanho máximo do cabeçalho IP é 60 bytes, mas observe que sem as opções ele possui 20 bytes.
  • TOS (Type of Service – tipo de Serviço): para compensar o fato de que o protocolo IP utiliza comutação de pacotes, e, portanto, não garante taxa constante de transmissão, esses bits indicam o tipo de dados contidos no pacote e com isso os roteadores podem dar prioridades na hora de encaminhá-los. Os pacotes podem, por exemplo, serem marcados solicitando prioridade, requerendo, assim, um baixo atraso, uma alta vazão ou maior confiabilidade durante sua transmissão.
  • Tamanho: esse campo indica o tamanho em bytes do pacote IP (incluindo o cabeçalho e os dados) e, como possui 16 bits, significa que o tamanho máximo é 65.535 bytes. Na prática, o tamanho da maioria dos pacotes não ultrapassa os 1500 bytes.
  • Identificação , Flags e Fragmentação: esses três campos são utilizados para realizarem a fragmentação dos pacotes IP, os quais estudaremos mais a frente nesta aula.TTL (Time To Live – Tempo de Vida): caso ocorra algum problema no roteamento, um pacote pode ficar circulando eternamente na rede. Para evitar que isso ocorra, esse campo contém um contador que vai sendo decrementado ao passar por cada roteador. Quando chega a zero, o roteador o descarta. Tipicamente, quem gera o pacote coloca o valor 255 nesse campo. Observe que não se utiliza, realmente, nenhuma medição de tempo para realizar essa função.
  • TTL (Time To Live – Tempo de Vida): caso ocorra algum problema no roteamento, um pacote pode ficar circulando eternamente na rede. Para evitar que isso ocorra, esse campo contém um contador que vai sendo decrementado ao passar por cada roteador. Quando chega a zero, o roteador o descarta. Tipicamente, quem gera o pacote coloca o valor 255 nesse campo. Observe que não se utiliza, realmente, nenhuma medição de tempo para realizar essa função.
  • Protocolo: esse campo indica o protocolo da camada de transporte para o qual a parte de dados do pacote deve ser passada quando chegar ao destino. Evidentemente, o protocolo indicado será o mesmo utilizado na origem. Veja que esse código só é analisado na máquina de destino, pois não tem nenhuma utilidade para os roteadores no caminho. Existem códigos padronizados para cada protocolo de transporte. O do TCP é 6 e do UDP é 17. A função desse campo é a mesma do campo de tipo do quadro Ethernet: indicar o protocolo da camada superior (no caso rede), que deve receber a parte de dados do quadro.
  • Checksum do cabeçalho: esse campo tem a mesma função do CRC (Cyclic Redundancy Check – Verificação de Redundância Cíclica) nas redes Ethernet, ou seja, identificar erros. Entretanto, existem duas diferenças principais em relação ao CRC. A primeira é que o cálculo do checksum é feito apenas sobre os bytes do cabeçalho, a parte de dados não é considerada. A segunda diferença é que o algoritmo utilizado aqui é muito mais simples. Basicamente, ele agrupa cada dois bytes do cabeçalho como um número e soma esses números utilizando complemenTOS aritméticos de 1. A razão para essas diferenças é acelerar o cálculo do checksum, uma vez que ele precisa ser recalculado em cada roteador do caminho, já que alguns campos do cabeçalho são alterados, como é o caso do TTL. Além disso, a parte de dados do pacote, normalmente, já é protegida contra erros pelos protocolos de transporte, que incluem seus próprios checksum.
  • Endereço IP de Origem: contém o endereço IP da máquina que gerou o pacote. Esse campo não é alterado ao longo do caminho entre a origem e o destino.
  • Endereço IP de destino: contém o endereço IP da máquina de destino. Esse campo não é alterado ao longo do caminho entre a origem e o destino.
  • Opções: são campos opcionais com a finalidade de depuração e testes, mas que, normalmente, não são utilizados.

Veja que, embora o Quadro 1 mostre o cabeçalho com várias linhas, lembre-se de que ele, na verdade, é uma sequência de bytes. Portanto, um pacote IP é composto pelos bytes de todos os campos do cabeçalho, seguidos pelos bytes da parte de dados.

No caso dos datagramas IP, para que um host destinatário possa reconstruir um datagrama original, ele faz uso de alguns campos do protocolo IP, como o campo identificação, flag e deslocamento. Quando um host remetente cria um datagrama, ele marca esse datagrama com um número de identificação e também acrescenta o endereço de origem e de destino. O host remetente incrementa o número de identificação para cada datagrama que envia. Sempre que um roteador precisar fragmentar um datagrama, cada novo datagrama resultante (datagrama de TOS menor – fragmento) recebe o endereço de origem, o endereço de destino e o número de identificação do datagrama original.

Assim, quando um destinatário recebe vários datagramas de um mesmo remetente, ele examina os números de identificação dos datagramas, a fim de detectar quais deles são fragmenTOS de um mesmo datagrama de tamanho maior. O último datagrama resultante da fragmentação de um datagrama maior recebe um flag setado (marcado) para 0, a fim de indicar que esse é o último datagrama que forma o datagrama original, já os demais datagramas têm esse flag setado para 1. De posse dessas informações, o destinatário é capaz de remontar o datagrama original.


Versão 5.3 - Todos os Direitos reservados