Introdução ao Protocolo TCP/IP

Para haver comunicação entre dois equipamentos de rede é essencial que ambos entendam as mesmas regras ou seja, ambos devem usar a mesma linguagem (protocolo) de comunicação. No início das redes de computadores havia diversos protocolos de comunicação como:

  • NETBEUI;
  • IPX/SPX;
  • Xerox Network System (XNS);
  • Apple Talk.

Cada fabricante possuía seu próprio protocolo de comunicação, logo equipamentos de fabricantes diferentes não se comunicavam diretamente, assim para possibilitar a comunicação entre dispositivos diversos, não importando o fabricante ou o sistema operacional, o protocolo TCP/IP foi criado.

Uma breve história:

  • 1968 – Foi desenvolvido pela ARPA (Advanced Research Projects Agency) o primeiro backbone. O objetivo desse projeto era interligar várias universidades e a área militar;
  • 1975 – A ARPA deu lugar ao DARPA (Defence Advanced Research Projects Agency) e começou a desenvolver os protocolos TCP/IP;
  • 1979 – Foi formado comité ICCB (Internet Control and Configuration Board) para gerir o desenvolvimento do TCP/IP;
  • 1983 – A DARPA cedeu os direitos do código dos protocolos TCP/IP à Universidade da Califórnia para que fosse distribuído na versão UNIX. A DARPA exigiu que todos os PCs ligados ao ARPANET usassem os protocolos TCP/IP. Esses protocolos difundiram-se rapidamente, visto não serem produtos comerciais;
  • 1985 – A Fundação Nacional de Ciência dos Estados Unidos (NSF) criou a NSFNET, que era uma rede de alta capacidade destinada a atender, tanto nos EUA como noutros países, as entidades científicas e de pesquisa;
  • 1987 – A Internet passou a ser comercializada nos EUA;
  • 1989 – A ARPANET deu lugar à NSFNET e o ICCB foi substituído pela IAB (Internet Advisory Board). A IAB possuía dois grupos principais: o IRTF (Internet Research Task Force) e o IETF (Internet Engeneering Task Force);
  • 1992 – Começaram a aparecer diversos ISP (Internet Service Provider) dando-se início à massificação da Internet o serviço responsável pela massificação foi o www que surgiu neste ano;

A partir do ano de 1992 muitas redes foram desenvolvidas sobre o TCP/IP, novas aplicações criadas e um conjunto de serviços desenvolvidos de forma a melhorar e a diferenciar o tráfego que circula na Internet, e o que hoje é conhecido como a Internet originou-se de um experimento usado principalmente por cientistas e desenvolvedores.

Uma curiosidade é que o crescimento da Internet ultrapassou todas as expectativas dos seus criadores.

Transmission Control Protocol/Internet Protocol:

O TCP/IP é uma família de protocolos de rede que foram usados para construir a Internet, também conhecidos como a suíte de protocolos DoD ou ARPANET.

O modelo TCP / IP consiste em cinco camadas:

  • Camada de Aplicação;
  • Camada de Transporte;
  • Camada de Rede;
  • Camada de Enlace de Dados;
  • Camada Física.

Camada de Aplicação:
Este nível trata dos detalhes específicos de cada aplicação, e algumas aplicações padrão em TCP/IP incluem:

  • Telnet
  • FTP
  • SMTP
  • SNMP

Camada de Transporte:
Proporciona um fluxo de dados entre dois hosts, para o nível de aplicação, sendo que dois protocolos de transporte podem ser empregados:

TCP: Trata-se de um protocolo confiável, ele sequencia os dados recebidos do nível de aplicação, agrupando-os em segmentos. Estabelece conexões (three way handshake). Confirma recepção dos segmentos enviados.

UDP: É um protocolo de transporte não-confiável, ele envia pacotes de dados (datagramas) de um host para outro, sem garantia de entrega. A sobrecarga desse protocolo é menor que a do TCP.

Camada de Rede:
Esta camada tem como principal função a adaptação do Modelo TCP/IP aos diversos tipos de redes (X.25, ATM, FDDI, Ethernet, Token Ring, Frame Relay, PPP e SLIP). É a camada de abstração de hardware e devido à enorme variedade de tecnologias de rede possíveis, é uma camada não normalizada pelo modelo TCP/IP. É possível a interligação e inter-operação com redes heterogêneas. Nesta camada são utilizados gateways ou routers.

Camada Enlace de Dados:
Este nível abrange o driver de dispositivo no SO e a correspondente placa de rede. Trata dos detalhes de hardware necessários para o interfaceamento físico com a rede.

Camada Física:
Esta camada descreve as características físicas da comunicação tais como a natureza do meio usado para a comunicação (cobre, fibra óptica ou links de rádio) e todos os detalhes relacionados com os sinais (modulações, comprimentos de onda, níveis de sinal, sincronizações, distâncias máximas, etc).

Encapsulamento

Quando uma aplicação envia dados usando TCP/IP, ela os envia através de cada nível da pilha de protocolos. Cada nível adiciona sua informação aos dados da camada superior, no final, os dados são enviados como uma sequência de bits pela rede.

Demultiplexação

Quando um quadro ethernet é recebido por um host ele começa a subir nas camadas de protocolos. Cada camada procura seu respectivo cabeçalho e decide o que fazer com os dados, antes de passá-los para o próximo nível. O protocolo padrão (nível de rede) empregado pela suíte de protocolos TCP/IP.

O protocolo IP define as regras para encapsular o tráfego da rede em datagramas, assim como a movimentação (roteamento) desse tráfego, o IP também é responsável pela fragmentação dos dados, quando necessário, e pela reconstrução dos datagramas no destino.

Cabeçalho IP:

Descritivo o do Cabeçalho IP:

  1. Version (versão): Indica qual é a versão do IP que está sendo usado. (normalmente IPv4);
  2. Header Length (comprimento do cabeçalho): Indica quantas palavras de 4 bytes existem no cabeçalho;
  3. Type of Service-TOS (tipo de serviço): Indica o nível de serviço associado ao datagrama;
  4. Datagram Length (comprimento do datagrama): comprimento, em bytes, do datagrama – incluindo o cabeçalho (max 65,535 bytes);
  5. Datagram Identification: (identificação do datagrama): Identifica, univocamente, um datagrama enviado para um host;
  6. Flags: bits indicadores. O primeiro não é usado. O Don’t Fragment (DF) e More Fragment (MF) controlam o modo como um datagrama é fragmentado;
  7. Fragment Offset: Indica qual é o fragmento;
  8. Time to Live (TTL): Indica por quantos roteadores um datagrama pode passar antes de ser descartado (max TTL é 255);
  9. Protocol: Indica qual é o protocolo de camada superior que usa o datagrama IP;
  10. Header Checksum: Armazena o resultado de um cálculo efetuado sobre os bits do cabeçalho. Tem por objetivo permitir que o destino averigue a integridade dos dados recebidos;
  11. Source/Destination IP Addresses (Endereços IP fonte/destino): Endereços IP (32bits) do host que envia o datagrama (fonte) e do host que receberá o datagrama (destino);
  12. Options (opções): As opções (*) atualmente definidas raramente são usadas. Existem opções para segurança, armazenamento de rota, roteamento mandatório, timestamp, etc;
  13. Data (dados): São os dados transportados pelo datagrama IP. São atribuídos pelos protocolos de camadas superiores.

Características do TCP

TCP é um protocolo de transporte (nível 4) e oferece uma conexão confiável entre dois hosts além de proporcionar um ‘circuito virtual’ entre dois hosts.

Toda comunicação exige confirmação (acknowledge) de recepção, onde TCP empacota os dados em segmentos, que contém os dados e informação de controle de sessão, os segmentos podem chegar fora da ordem em que foram enviados e os números de sequência são empregados para reordenar os segmentos.

O TCP maximiza a performance de uma conexão, assegurando-se que os segmentos não sejam muito pequenos ou muito grandes.

Os Circuitos Virtuais das conexões TCP comportam-se como uma conexão full-duplex e são confiáveis, ou seja, os segmentos TCP tem garantia de entrega e caso e a entrega não for possível, a aplicação é notificada. O TCP pode modificar variáveis de transmissão, de acordo com as condições da rede, e com isso otimiza a performance da rede.

Cabeção TCP:

Descritivo o do Cabeçalho TCP:

  • Source Port/Destination Port: 16-bit port number do host origem e do host destino;
  • Sequence Number: 4-byte number assinalado pelo TCP, começando com um valor randômico;
  • Acknowledgement Number: Confirma o último segmento enviado pelo host ;
  • Header Length: Tamanho do cabeçalho em palavras de 4-bytes;
  • Flags: usados para negociar e gerenciar uma conexão;
  • URG: Indica que segmento enviado tem caráter de urgência;
  • ACK: Indica que o ack no segmento é válido;
  • PSH: (PUSH) indica que os dados devem ser passados para a aplicação assim que possível;
  • RST: Reseta a conexão;
  • SYN: Sincroniza número de sequência para iniciar uma conexão;
  • FIN: Encerramento normal de conexão;
  • 16-Bit Window Size: O número de bytes que o receptor está disposto a aceitar, sem confirmação;
  • 16-Bit TCP Checksum: um checksum do segmento TCP;
  • 16-Bit Urgent Pointer: usado somente se o flag URG estiver acionado;
  • Options: A opção mais comum é o Maximum Segment Size (MSS) que determina o maior tamanho de segmento que o host origem pode receber;
  • Data: Quando conexões estão sendo estabelecidas, nenhum dado é enviado (opcional);

Processo de estabelecimento uma conexão TCP:

Para estabelecer uma conexão TCP é necessário um método de apresentação conhecido como “three-way handshake”, onde um servidor inicia o processo aguardando conexões e um cliente solicita uma conexão ao servidor enviando um segmento SYN, na sequência o servidor responde com um segmento SYN-ACK, por fim o cliente confirma com um segmento ACK e a conexão é estabelecida entre ambos.

Características do UDP

UDP é um protocolo de transporte que não detecta erros, não tem confirmação de entrega, e não estabelece conexões, proporcionando uma entrega sem conexão entre dois hosts.

o UDP tem uma grande vantagem quando se trata de serviços cuja velocidade é fundamental e a perda mínima de dados não muito prejudicial.

Como exemplo transmissão de Voz (VoIP) ou jogos online, em que é normal alguns bytes se perderem na comunicação, mas que é sempre importante que a aplicação continue rodando com rapidez, sem se importar tanto com as perdas ou falhas.

Descritivo o do Cabeçalho UDP:

  • Source Port Number: 16-bit port number do host origem. Usa portas randômicas (acima de 1024);
  • Destination Port Number: 16-bit port number do host destino. Usa portas conhecidas;
  • 16-Bit UDP Length: Indica o comprimento do datagrama UDP, incluindo o cabeçalho;
  • 16-Bit UDP Checksum: Checksum calculado a partir de todo datagrama UDP.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *