O Datagrama IP
Para conectar-se a internet, em qualquer lugar do mundo, os dispositivos precisam identificar uns aos outros. Você imagina como os computares se identificam na rede? Essa comunicação é realizada pelo Protocolo IP.
Neste artigo, que trata sobre os o protocolo IP e seu endereçamento, você aprenderá como os computadores e outros dispositivos conectados à Internet podem ser identificados, não importa em que local do mundo eles estejam. Para isso você conhecerá o cabeçalho do protocolo IP e estudará que este protocolo oferece serviços de endereçamento, roteamento e fragmentação. Descobrirá que atualmente utilizamos endereçamentos sem classes, e que o roteador é o elemento que une as diferentes redes.
Introdução
Para a transmissão de dados as diferentes redes precisam se comunicar utilizando um protocolo em comum. Na Internet, esse protocolo comum é o protocolo IP. Todos os dispositivos conectados à Internet precisam entender os dados enviados. Para isso os datagramas IP possuem um cabeçalho com informações que todos os dispositivos consigam compreender.
Nesta sessão vamos entender qual a estrutura de um datagrama IP. A figura 1, representa um datagrama IP.
O campo “tamanho do cabeçalho” possui quatro bits (de 0 até 15). Ele indica o número de linhas existentes no cabeçalho IP.
Observe na figura x que cada linha possui 32 bits, ou seja 4 bytes. Repare que as cinco primeiras linhas são obrigatórias, uma vez que o campo “opções” não é obrigatório. Deste modo, o “tamanho de cabeçalho” é preenchido com no mínimo 5 e no máximo 15. Por este motivo, o tamanho em bytes do cabeçalho IP é de 20 bytes até 60 bytes.
O campo “tipo de serviço” possui 8 bits e, originalmente, foi criado para dar preferência entre pacotes de diferentes serviços. Desta forma seria possível criar pacotes com mais prioridade e outros com menos prioridade. Ocorre que poucos roteadores implantaram essas funcionalidades, sendo utilizados por redes de telecomunicação e não por usuários.
O campo “tamanho total” possui 16 bits. Ele informa o tamanho total do datagrama em bytes e inclui o cabeçalho. Desta forma, o tamanho mínimo é 20 bytes e o máximo e 65.535.
O campo “identificação” possui 16 bits. Ele é o identificador único de um datagrama. Se um datagrama for fragmentado, o destinatário consegue identificar todos os fragmentos através do campo “identificação”.
O campo “flags” são três bits em separado que realizam o controle da fragmentação.
O primeiro bit ainda não é utilizado e deve ser zero. O segundo bit, conhecido como “DF” (Don’t Fragment) será zero se o datagrama pode ser fragmentado e um se o datagrama não pode ser fragmentado. O terceiro bit, conhecido como “MF” (More Fragments) serve para indicar se existem fragmentos no pacote. Será um se o pacote for fragmentado e zero se for o último datagrama em uma sequência de fragmentos.
O campo “offset” possui 13 bits e permite que o destinatário do datagrama determine ordene os fragmentos do datagrama IP original.
O campo “TTL” (time to live, em portugês tempo de vida) possui 8 bits (0 a 255). Ele foi criado para que um datagrama não fique circulando na internet indefinidamente, causando sobrecarga na rede.
Quando o transmissor constrói o datagrama, ele preenche o campo TTL com um número, geralmente 255. Este número é decrementado em cada um dos roteadores ao qual o datagrama passa. Quando o TTL atinge o valor zero, o roteador descarta o pacote e envia uma mensagem de erro para o “endereço de origem”, informando “tempo de vida esgotado”.
O campo “protocolo” possui oito bits (0 a 255) e identifica o protocolo encapsulado dentro do IP. Será preenchido com 1 para o protocolo ICMP, 6 para TCP e 17 para UDP, conforme RFC 1700.
O campo “soma de verificação do cabeçalho” faz uma soma de verificação das informações do cabeçalho IP. Isso permite verificar se houve erros ou modificações no cabeçalho IP ao longo da transmissão.
Neste ponto, chamamos a atenção para o fato de que existe interação entre os campos “TTL” e “soma de verificação”. Como o TTL é decrementado em cada roteador que passa, a “soma de verificação” deve ser recalculada e atualizada.
O campo “endereço de origem” é preenchido com o endereço IP do transmissor e o campo “endereço de destino” é preenchido com o endereço IP do receptor do datagrama. Ambos são números de 32 bits.
O campo “opções” não é obrigatório. Originalmente ele era utilizado para adicionar informações sobre roteamento, tempo e outras. Com o passar do tempo ele deixou de ser utilizado.
Após estudarmos cada um dos campos do protocolo TCP/IP precisamos nos aprofundar como funciona o endereçamento do protocolo IP.
Bom humor no datagrama IP
O pessoal de redes é bastante extrovertido. Em primeiro de abril de 2003, o primeiro bit não utilizado foi definido para ser o Evil Bit. Se um atacante for enviar qualquer datagrama malicioso, esse campo deveria ser marcado com um; caso contrário, zero.
[https://www.ietf.org/rfc/rfc3514.txt]
Obviamente tratava-se de uma brincadeira de primeiro de abril. Qual atacante iria marcar seus datagramas como maliciosos?
Versões do Protocolo IP
Você já deve ter ouvido falar que os endereços de Internet está se esgotando. Você conhece a solução para o esgotamento dos endereços IP?
Atualmente a internet funciona com duas versões protocolos de rede. O IPv4, que estamos estudando, e o IPv6 que vem sendo implantado gradualmente. Muitos computadores hoje em dia utilizam tanto IPv4 quanto IPv6 para se comunicar. A tendência é que em alguns anos utilizaremos apenas o IPv6.
Veja o vídeo no NIC.BR sobre o tema e reflita sobre o assunto.