Neste artigo vou falar sobre os protocolos IP, isso mesmo há duas versões de protocolo IP utilizados a IPv4 definida pela RFC 791 que é a mais usada atualmente e a IPv6 definida pelas RFC 2373 e RFC 2460, que foi proposta para substituir a IPv4.

Formato Datagrama:

Um pacote na camada de rede é denominado datagrama que desempenha um papel fundamental na Internet. O formato datagrama IPv4 é mostrado abaixo:

Versão

Comprimento do cabeçalho

Tipo de serviço

Comprimento do datagrama

Identificador de 16 bits

Flag

Deslocamento de fragmentação (13 bits)

Tempo de Vida

Protocolo da camada Superior

Soma de verificação do cabeçalho

Endereço IP de 32 bits da fonte

Endereço IP de 32 bits do destino

Opção (se houver)

dados

  • Versão – Possui 4 bits e define a versão do protocolo IP do datagrama. Através desta informação o roteador poderá saber como tratar o restante do datagrama.
  • Comprimento do cabeçalho – Possui 4 bits, como o no IPv4 possui um número variado de opções este campo permita saber onde realmente começam os dados.
  • Tipo de Serviço (Type of Service TOS) - Possui 8 bits e é utilizado para diferenciar os datagramas (baixo atraso, alta vazão e confiabilidade).
  • Comprimento do Datagrama – Possui 16 bits é o comprimento total do datagrama, o tamanho máximo teórico do datagrama IP é 65.535 bytes.
  • Identificador, flags, deslocamento de fragmentação – Estes três campos tem a ver com a fragmentação IP.
  • Tempo de Vida – Este campo serve para que o datagrama não fique circulando eternamente na rede, cada vez que passa por um roteador ele é decrementado de ume quando chegar a zero ele é descartado.
  • Protocolo – este campo é utilizado somente quando chega em seu destino, ele serve para identificar qual protocolo da camada de transporte ele será encaminhado.
  • Soma de verificação de Cabeçalho – Ela ajuda o roteador na detecção de erros do datagrama. A somo é tratada a cada 2 bytes e funciona da mesma forma da soma de verificação do protocolo UDP. Casa vez que o datagrama passa por um roteador a soma de verificação é calculada novamente devida a mudança de alguns campos como o Tempo de vida. Quando é detectado algum erro o datagrama é descartado pelo roteador.
  • Endereço IP de 32 bit da Fonte – Este campo armazena o endereço IP do hospedeiro que gerou o datagrama
  • Endereço IP de 32 bit do Destino – Este campo armazena o endereço IP do hospedeiro de destino do datagrama.
  • Opções – O campo opções permite que o cabeçalho IP seja ampliado, ele é raramente utilizado e nem é recomendada a sua utilização.
  • Dados – É o mais importante campo do datagrama é onde contém o seguimento da camada de transporte.

Fragmentação do datagrama IP

A internet trabalha com vários tipos de protocolos na camada de enlace (logo abaixo da camada de rede) onde os comprimentos dos datagramas variam. A capacidade de de receber o datagrama de determinado tamanho se chama Unidade Máxima de Transmissão -MTU. Quando um roteador recebe um datagrama e percebe que a o roteador de destino tem um MTU menor que o comprimento do datagrama, ele tem que fragmenta-lo em vários datagramas menores para que possa transmiti-lo estes datagramas menores são denominados fragmentos.

Para fragmentar o datagrama o roteador utiliza os campos identificação,flag e deslocamento do cabeçalho. Quando um datagrama é criado no remetente ele recebe um número de identificação, este número será utilizado para identificar todos os fragmentos que pertençam a este datagrama, o campo flag identifica se o fragmento é o último (0) ou não (1) e o campo deslocamento mostra que parte do datagrama este fragmento começa. Todos os fragmentos possuem o restante do cabeçalho igual ao datagrama original. Lembrando que cada novo fragmento possui um novo cabeçalho, Se tivermos de fragmentas um datagrama de 4000 bytes para um MTU de 1500 bytes, iremos pegar os dados do datagrama que tem 3980 bytes (20bytes são do cabeçalho) e iremos gerar dois fragmento contendo 1480 bytes de dados e um fragmento contendo 1020 bytes de dados no final teremos dois fragmentos de 1500 bytes (1480 de dados e 20 de cabeçalho) e um de 1040 bytes (1020 de dados e 20 de cabeçalho). A tabela abaixo especifica o exemplo dado.

Fragmento Tamanho do campo de dados* Id Deslocamento** flag Tamanho do Fragmento*
1480 84 0 1 1500
1480 84 185 1 1500
1020 84 370 0 1040
  • *unidade bytes
  • ** haverá um deslocamento de x*8, se o deslocamento for 185 significa de a posição inicial do primeiro byte de dados será 185*8=1480.
Nota: O roteador não monta os fragmento, eles são montados quando chegam no destinatário

Endereçamento IP

Cada protocolo de internet “IP” possui um endereço na internet com o comprimento de 32 bits possibilitando cerca de 4 bilhões de combinações de endereçamento possíveis. Estes endereços são descritos em notação decimal onde cada byte é separado por um ponto. Quando um grupo de computadores ligados a uma mesma interface de um computado possui uma mesma faixa de IP exemplo 255.2.1.1, 255.2.1.3, 255.2.1.47 a chamamos de sub-rede, o endereçamento IP designa um endereço a essa sub-rede: 255.2.1.0/24,onde o /24 conhecido como mascara de rede, indica que os 24 bits mais a esquerda dos 32 bits definem o endereço da sub-rede.

Sub mascara Número Binário Sub marcara IP possível IP possível
255.240.2.0/24 11111111.11111111.11111111.00000000 255.240.2.57 255.240.2.57
255.240.0.0/16 11111111.11111111.00000000.00000000 255.240.195.58 255.240.36.58

Os bits que estão com o algarismo “1” não podem ser alterados para selecionar o um possível IP, somente os bits com o algarismo “0”podem ser alterados. Se tivermos uma sub-mascara 255.240.80.0/30 teremos uma seqüência binária 11111111.11111111.11111111.11111100 onde só poderemos ter 4 IPs disponíveis já que temos somente os dois últimos bits para trabalhar nossas opções para este exemplo seria 255.240.80.252, 255.240.80.253, 255.240.80.254 e 255.240.80.255.