Capítulo 2 - Protocolo TCP/IP


O desenvolvimento da arquitetura Internet Transmission Control Protocol/Internet Protocol (TCP/IP) foi patrocinado pela Defense Advanced Research Projects Agency (DARPA). O TCP/IP é um conjunto de protocolos desenvolvidos para permitir que computadores compartilhem recursos dentro de uma rede. Em uma definição mais básica, o nome correto para este conjunto de protocolos é " Conjunto de Protocolos Internet". Os protocolos TCP e IP são dois dos protocolos deste conjunto. Como os protocolos TCP e IP são os mais conhecidos, é comum se referir a TCP/IP para referenciar toda a família de protocolos.

Na família de protocolos TCP/IP, alguns protocolos, como TCP, IP e User Datagram Protocol (UDP), provêm funções de baixo nível, necessárias a diversas aplicações. Os outros protocolos são execução de tarefas específicas, como por exemplo, transferência de arquivos entre computadores, envio de mensagens. Os serviços TCP/IP mais importantes são [Hedrick88]:

O protocolo TCP/IP é baseado em um modelo que pressupõe a existência de um grande número de redes independentes conectadas através de gateways. Um usuário pode ter acesso a computadores ou outros recursos em qualquer uma destas redes. As mensagens, muitas vezes, passam por uma grande quantidade de redes para atingirem seus destinos. O roteamento destas mensagens deve ser completamente invisível para o usuário. Assim para ter acesso a um recurso em outro computador o usuário deve conhecer o endereço Internet deste computador. Atualmente este endereço é um número de 32 bits, escrito como 4 números decimais, cada um representando 8 bits de endereço.

2.1 - Internet Protocol (IP)

O protocolo IP, padrão para redes Internet, é baseado em um serviço sem conexão. Sua função é transferir blocos de dados, denominados datagramas, da origem para o destino, onde a origem e o destino são hosts identificados por endereços IP. Este protocolo também fornece serviço de fragmentação e remontagem de datagramas longos, para que estes possam ser transportados em redes onde o tamanho máximo permitido para os pacotes é pequeno.

Como o serviço fornecido pelo protocolo IP é sem conexão, cada datagrama é tratado como uma unidade independente que não possui nenhuma relação com qualquer outro datagrama. A comunicação é não-confiável, pois não são utilizados reconhecimentos fim-a-fim ou entre nós intermediários. Não são empregados mecanismos de controle de fluxo e de controle de erros. Apenas uma conferência simples do cabeçalho é realizada, para garantir que as informações nele contidas, usadas pelos gateways para encaminhar datagramas, estão corretas.

2.1.1 - Endereços IP

Os endereços IP são números de 32 bits, normalmente escritos como quatro octetos na forma decimal, como por exemplo 200.236.143.1. A primeira parte do endereço identifica uma rede específica na inter-rede, a segunda parte identifica um host dentro desta rede. Este endereço, portanto, pode ser usado para nos referirmos tanto a redes quanto a um host individual. É através do endereço IP que os hosts conseguem enviar e receber mensagens pela rede, em uma arquitetura Internet TCP/IP.

O protocolo IP utiliza três classes diferentes de endereços. A definição de classes de endereços deve-se ao fato do tamanho das redes que estão interligadas variar muito, indo desde redes locais de computadores a redes públicas interligando milhares de hosts [Soares97].

Na primeira classe de endereços, a classe A, o bit mais significativo é 0, os outros 7 bits do primeiro octeto identificam a rede, e os 24 bits restantes definem o endereço local. Essa classe é usada para redes de grande porte, seus endereços variam de 1 a 126, e cada rede tem capacidade de endereçar cerca de 16 milhões de hosts.

A classe B de endereços usa dois octetos para o número da rede e dois para endereços de hosts. Os endereços de redes classe B variam na faixa de 128.1 até 191.255 (os números 0 e 255 do segundo octeto, e 127 do primeiro octeto são usados para funções especiais e testes), e cada rede pode interligar cerca de 65 mil hosts.

Já os endereços classe C, utilizam três octetos para identificar a rede e apenas um octeto para o host. Os endereços de rede situam-se na faixa de 192.1.1 até 223.254.254 (os endereços acima de 223 no primeiro octeto foram reservados para uso futuro), e cada rede pode endereçar 254 hosts.

2.2 - Transmission Control Protocol (TCP)

O TCP é um protocolo da camada de transporte da arquitetura Internet TCP/IP. O protocolo é orientado a conexão e fornece um serviço confiável de transferência de arquivos fim-a-fim. Ele é responsável por inserir as mensagens das aplicações dentro do datagrama de transporte, reenviar datagramas perdidos e ordenar a chegada de datagramas enviados por outro micro. O TCP foi projetado para funcionar com base em um serviço de rede sem conexão e sem confirmação, fornecido pelo protocolo IP.

O protocolo TCP interage de um lado com processos das aplicações e do outro com o protocolo da camada de rede da arquitetura Internet. A interface entre o protocolo e a camada superior consiste em um conjunto de chamadas. Existem chamadas, por exemplo, para abrir e fechar conexões e para enviar e receber dados em conexões previamente estabelecidas. Já a interface entre o TCP e a camada inferior define um mecanismo através do qual as duas camadas trocam informações assincronamente.

Este protocolo é capaz de transferir uma cadeia (stream) contínua de octetos, nas duas direções, entre seus usuários. Normalmente o próprio protocolo decide o momento de parar de agrupar os octetos e de, conseqüentemente, transmitir o segmento formado por esse agrupamento. Porém, caso seja necessário, o usuário do TCP pode requerer a transmissão imediata dos octetos que estão no buffer de transmissão, através da função push [Soares97].

Conforme mencionado, o protocolo TCP não exige um serviço de rede confiável para operar, logo, responsabiliza-se pela recuperação de dados corrompidos, perdidos, duplicados ou entregues fora de ordem pelo protocolo de rede. Isto é feito associando-se cada octeto a um número de seqüência. O número de seqüência do primeiro octeto dos dados contidos em um segmento é transmitido junto com o segmento e é denominado número de seqüência do segmento. Os segmentos carregam "de carona" (piggybacking) um reconhecimento.

O reconhecimento constitui-se do número de seqüência do próximo octeto que a entidade TCP transmissora espera receber do TCP receptor na direção oposta da conexão. Por exemplo, se o número de seqüência X for transmitido no campo Acknowledge (ACK), ele indica que a estação TCP transmissora recebeu corretamente os octetos com número de seqüência menores que X, e que ele espera receber o octeto X na próxima mensagem [Soares97].

2.3 - User Datagram Protocol (UDP)

Muitas vezes não são necessários todos os recursos do protocolo TCP e alguns outros protocolos mais simples são utilizados em seu lugar. A alternativa mais comum é o protocolo UDP, designado para aplicações onde o usuário não necessita enviar seqüências longas de datagramas. Ele trabalha como o protocolo TCP, porém ele não divide os dados em múltiplos datagramas. Além disto, o protocolo UDP só mantém controle sobre os dados enviados quando o reenvio for necessário.

Na montagem do datagrama pelo protocolo UDP, o cabeçalho inserido é muito menor do que aquele inserido pelo protocolo TCP.

O protocolo UDP opera no modo sem conexão e fornece um serviço de datagrama não confiável, sendo, portanto, uma simples extensão do protocolo IP. O UDP recebe os pedidos de transmissão de mensagens entregues pelos processos de aplicação da estação de origem, e os encaminha ao IP que é o responsável pela transmissão. Na estação de destino, o processo inverso ocorre. O protocolo IP entrega as mensagens (datagramas) recebidas ao UDP que as entrega aos processos de aplicação, sem nenhuma garantia.


Sumário | Resumo | Cap. 1 | Cap. 2 | Cap. 3 | Cap. 4 | Cap. 5 | Cap. 6 | Cap. 7
Referências Bibliográficas | Bibliografia Consultada