Redes de computadores – Camada de Transporte

No artigo anterior, o internet explorer quer enviar informações para http://www.google.com.br usando a porta 80 do protocolo de transporte TCP. Neste artigo faremos esta mágica acontecer. Para o protocolo de transporte, não importa qual o endereço de destino, importa apenas como os dados serão transportados.Um protocolo de transporte pode adicionar várias funcionalidades para a comunicação de dados, como, por exemplo:

  • Estabelecimento de conexões: A camada de rede, que veremos no próximo artigo, só encaminha as informações, não cria conexões.
  • Confiabilidade de transmissão: Dados podem se perder no meio do caminho. A camada de transporte pode garantir que a informação seja entregue ao destinatário.
  • Controle de fluxo: Garante que o remetente não enviará mais dados do que o destinatário pode receber.
  • Garantia de ordem de recebimento de dados: Garante que os pacotes serão recebidos na ordem que foram enviados.
  • Portas: Essencialmente, portas são meios de criar enviar dados para partes diferentes de uma mesma localização (um computador com um endereço de IP pode ter um servidor de email na porta 110, um servidor http na porta 80…. a porta determina qual servidor vai receber a informação).
  • Orientação de Bytes: Transforma a conexão em um fluxo de bytes, o que, literalmente, esconde da aplicação todos o mecanismo que está por traz da transmissão. Neste caso, não faz diferença enviar dados para uma pendrive, para um disquete, para um computador na internet. É tudo fluxo de bytes. (em programação chama-se de stream).

O protocolo de transporte também pode ser o responsável por quebrar uma grande quantidade de informação muito grande para ser enviada em um unico pacote de dados, tornando esta tarefa transparente para a aplicação.

Isto são apenas alguns exemplos do que a camada de transporte pode fazer, não quer dizer que os protocolos precisam fazer isto.

Existem vários protocolos, porém, os 2 protocolos de transporte mais utilizados na internet são: TCP e UDP.

O protocolo UDP (User Datagram Protocol) não possui nenhum mecanismo de controle de fluxo, de confirmação de recebimento, nem nada. A única coisa que ele implementa é o conceito de portas. Se a informação chegou ou não ao destino  ou se chegou na ordem enviada… não importa, o UDP apenas designa numero de portas. A idéia dele é a seguinte: É prover um modo de transmitir dados usando o conceito de portas, usando a menor quantidade de processamento e menor inclusão de dados possível. Resumindo, o UDP garante que os dados chegam corretamente, mas não garante que eles chegam ao destino. Caso um pacote de dados seja corrompido, ele é descartado.

O protocolo UDP tem o seguinte formato:

<Porta de Origem><Porta de Destino><Tamanho do pacote><CheckSum do cabeçalho e dos dados><Dados a serem enviados>

Observe que não existe nada que informe a ordem dos pacotes: A informação é enviada e pronto.

O protocolo TCP (Transport Control Protocol) é usado quando deseja-se ter certeza que a informação enviada foi recebida corretamente. Ele é o mais usado e o mais importante, normal associar o seu nome com o nome de todo o sistema de rede (TCP/IP).

TCP tem o foco principal de garantir que um fluxo de dados seja transmitido corretamente pela rede, não levando em consideração o tempo necessário para que isto seja feito. Com TCP, temos a garantia de que tudo o que será enviado, será recebido. Quase tudo usa TCP. Esta página chegou corretamente ao seu computador graças ao TCP.

O protocolo TCP possui o seguinte cabeçalho:

<porta origem><porta destino><numero de sequencia><numero de reconhecimento (Acknowledgment)><offset dos dados><reservado para uso futuro><CWR><ECE><flags><Window Size><CheckSum><ponteiro para o pacote urgente><Opções (opcional, não precisa existir caso não seja necessário)<Dados>

  • Porta origem e de destino é auto explicativo.
  • Numero de seqüencia: Possui duas funções: Se a flag SYN está ativa, é o valor inicial da seqüencia (que é um numero aleatório). se Syn não esta ativo, é o numero inicial da seqüencia mais um.
  • Numero de reconhecimento: Quando ACK está ativo, este valor representa o valor da seqüencia que o receptor está esperando.
  • Offset de dados: Informa o tamanho do cabeçalho TCP.
  • Reservado para uso futuro, como no nome diz, são reservador para uso futuro🙂 são 4 bits que devem ser sempre zero.
  • Flags: Compostas de 8 bits, servem como controle para a conexão: São elas: CWR, ECE, URG, ACK, PSH, RST, SYN, FIN.
  • Window informa quantos bytes o receptor ainda pode receber, serve para controle de fluxo
  • Checksum é um código usado para detecção de erros no cabeçalho e nos dados.
  • Opções são opções extras que veremos em um artigo especifico para TCP
  • Dados…. são os dados a serem enviados

O funcionamento é relativamente simples:

Quando uma aplicação no computador A quer se conectar a outra aplicação no computador B usando o TCP, o protocolo encaminha um pacote TCP com a flag SYN ativada contendo um numero de seqüencia inicial.

O computador B responde com um pacote com as flags SYN/ACK contendo o numero de seqüencia enviado pelo A e o numero de seqüencia que ele espera receber (no campo de reconhecimento).

O computador A, ao receber este pacote, responde com um pacote ACK contendo o numero de seqüencia que ele esperará receber.

O que acontece, é que ambos os computadores conhecem os números adequados para envio dos dados. E a partir dai, a conexão é estabelecida, e os dados podem ser enviados.

Cada pacote de dados enviado possui um valor de SYN igual ao anterior ,acrescido do numero de bytes recebidos (se a seqüencia anterior é 11 e foi transmitido 110 bytes, o próximo valor será 121).

O computador que recebe a informação responde um um pacote ACK contendo o valor do ultimo byte válido recebido (ACK Acumulativo), o que confirma o recebimento de toda a seqüencia, permitindo, assim, que um único pacote ACK confirme o recebimento de múltiplos pacotes.

Confirmações seletivas também podem ser feitas:

Caso o sistema receba 15 pacotes, e o pacote de numero 3 seja perdido, o receptor pode confirmar o recebimento dos pacotes 1 a 2, 4 a 15, e o remetente apenas reenvia o pacote numero 3. (Se ACK Acumulativo for usado, é necessário reenviar toda a seqüencia de 3 a 15, por causa de uma falha no pacote numero 3).

Lembram que o internet explorer quer navegar no google? O pedido de informação ao google já saiu da aplicação (IE), já ganhou os cabeçalhos necessários para uma comunicação confiável, porém esta informação não é capaz de circular pela rede: Ela não tem nada que diga para onde ela deve ser encaminhada. Isto deve-se ao fato que o protocolo de transporte conecta-se ao protocolo de rede, que é o responsável pela circulação das informações na redes.

No proximo artigo falarei sobre protocolos de rede, mais especificamente, o protocolo IP versão 4.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: