12. Tarefas e protocolos da camada de rede

12.1. Protocolo IPv4

O protocolo IPv4 está concebido de tal forma que não há necessidade de adicionar muitos dados de controlo durante o processo de encapsulamento. Fornece apenas a funcionalidade básica necessária para transmitir pacotes desde a origem até ao destino. É sem ligação, o que significa que não estabelece uma ligação antes do envio de dados e funciona numa base de "melhor esforço", o que significa que não utiliza controlo de fluxo ou qualquer reconhecimento de entrega de dados como faz o protocolo TCP, mas faz tudo o que está ao seu alcance para tornar a comunicação eficiente. É também um protocolo independente do meio, o que significa que os dados podem ser transferidos entre anfitriões, independentemente do meio utilizado.

Afinal de contas, numa rede podemos estar a utilizar um par torcido, noutra fibra e numa terceira onda de rádio. O protocolo IP funciona exatamente da mesma forma em todas as redes. O problema que pode surgir ao enviar dados através de diferentes meios é o tamanho máximo do pacote, que é o valor MTU (Maximum Transmission Unit), se o pacote for demasiado grande, os routers ligados à rede dividi-lo-ão em pedaços mais pequenos. Este processo chama-se fragmentação, que é outro termo do nosso dicionário de Internet.

Para ajudar a compreender como funciona o IPv4 e como os pacotes são transmitidos através da Internet, vou utilizar o exemplo de um pacote enviado pela minha tia dos Estados Unidos para explicar como funciona. O pacote consiste em 3 caixas de cartão unidas entre si. A minha tia escreveu um endereço para o presente e enviou-o para a empresa de correio rápido. Quando ela envia a embalagem, ela desiste de opções adicionais, tais como confirmação de receção ou rastreio. Um empregado da empresa marca a embalagem com o destino e o endereço de devolução antes de libertar a encomenda. Foi transportada de carro para o porto juntamente com dezenas de outras encomendas, onde foi embalada num contentor e depois atravessou o oceano.

No porto de destino, os contentores são desembalados, as encomendas são selecionadas e depois transportadas de carro para as várias cidades e pontos de recolha locais. A partir do ponto de recolha de carro, a encomenda deve ser entregue no endereço especificado, mas acontece que as três caixas combinadas são demasiado grandes para serem transportadas num carrinho, pelo que o estafeta separa-as em caixas individuais e entrega-as como tal. Como a sua tia não escolheu as opções adicionais, a empresa de correio não lhe entregou um recibo. Pode fazê-lo você mesmo, por exemplo, telefonar à sua tia para lhe dizer obrigado

Converter isto em comunicação IP ficaria assim:

·         A encomenda é enviada sem notificação prévia ao destinatário - temos um modo sem ligação;

·         Durante o processo de encapsulamento, é atribuída uma fonte e um endereço de destino

- No nosso caso, o endereço de casa do destinatário é o endereço de destino e o endereço de casa da tia é o endereço de retorno;

·         A remessa não continha muitos dados de controlo, o que poderia atrasar a comunicação - Para o que a minha tia desistiu de uma opção extra, confirmação e rastreio;

·         As encomendas chegam ao seu destino via fibras óticas, pares torcidos e ondas de rádio - uma vez que as encomendas são entregues por vários meios de transporte: barcos, carros grandes, carros pequenos;

·         A parcela é demasiado grande para ser enviada na sua totalidade através de uma das redes, tornando-a fragmentada - ou seja, a parcela é dividida a dada altura para que possa ser transportada num pequeno carro;

·         A IP não enviou um aviso de receção do pacote - tal como a empresa não garantiu à tia que o pacote tinha chegado. Como qualquer protocolo de comunicação, o IPv4 também tem cabeçalhos padronizados para adicionar informação de controlo. Um exemplo de um cabeçalho IPv4 típico é mostrado abaixo.

Versão

IHL

Tipo de serviço

Comprimento da embalagem

       Identificação

Bandeira

Movendo um fragmento

TTL

Protocolo

Cheque de cabeçalho

Endereço de origem

Endereço de

destino

Opções

            Preenchimento

 

·         Endereço IP de destino - o endereço IP do dispositivo para o qual os dados são dirigidos;

·         Endereço IP de origem - o endereço IP do dispositivo que está a enviar os dados;

·         Time to Live (TTL) - Um campo de 8 bits que indica o tempo de vida restante do pacote. O valor TTL diminui pelo menos 1 de cada vez que o pacote passa pelo router (ou seja, após cada salto). Quando o valor atinge 0, o router descarta o pacote e retira-o do fluxo de dados da rede. Este mecanismo impede a transmissão infinita de pacotes que não podem chegar ao seu destino entre os chamados loops de encaminhamento. Se forem permitidos loops de encaminhamento, a rede ficará sobrecarregada com pacotes que nunca chegarão ao seu destino. A diminuição do valor TTL em cada laço assegura que eventualmente chegará a 0, e os pacotes com um campo TTL de 0 serão descartados.

·         Protocolo - este valor de 8 bits especifica o protocolo de camada mais alto (transporte) utilizado, tal como UDP ou TCP.

·         Tipo de Serviço (ToS) - contém um valor de 8 bits que determina a prioridade de cada pacote.

·         Fragment Offset - Um campo utilizado na reconstrução de pacotes divididos por routers. Indica a ordem em que cada pacote deve ser organizado durante a reconstrução.

·         Mais Fragmentos (MF) bandeira - Um único bit utilizado com o campo Fragment Offset para partição de pacotes e reconstrução. A colocação da bandeira MF indica que o fragmento não é o último fragmento no pacote. Quando o anfitrião recetor repara num pacote recebido com MF = 1 conjunto, verifica o campo Fragment Offset para colocar o fragmento durante a reconstrução do pacote. Quando o hospedeiro receptor repara que um pacote de entrada tem MF = 0 conjunto e tem um valor não nulo no campo offset do fragmento, utilizará o fragmento como o último bloco do pacote reconstruído.

·         DF (Don't Fragment) flag - Uma única bit que, se definida, indica, que a fragmentação dos pacotes não é permitida. A fragmentação de pacotes não é permitida se a bandeira DF estiver hasteada.

·         Versão - contém o número da versão do protocolo IP (neste caso IPv4).

·         Comprimento do cabeçalho (IHL) - determina o tamanho do cabeçalho do pacote.

·         Comprimento do pacote - este campo o tamanho total do pacote em bytes, incluindo o cabeçalho e os dados incluídos.

·         Identificação - este campo é utilizado para identificar de forma única o fragmento de um pacote IP dividido.

·         Header checksum - este campo é utilizado para verificar a existência de erros de cabeçalho de pacotes.

·         OPÇÕES - este é o espaço no cabeçalho do IPv4 para campos adicionais para suportar outros serviços. No entanto, é raramente utilizado.