Utilizador:Murillovp
Trasnporte Orientado Para Conexao: TCP
[editar | editar código]O protocolo TCP é, sem dúvidas, um dos mais importantes protocolos utilizados atualmente. Esse protocolo fornece um serviço de entrega de pacotes confiável e orientado para conexão, ou seja, todos os aplicativos que utilizam o TCP como protocolo de transporte estabelecem uma conexão antes de começar a trocar dados alem de contar com serviços como detecção de erros, retransmissões, reconhecimento cumulativo, temporizadores e campos de cabeçalho para números de seqüência e de reconhecimento. Ao contrario do UDP para mandar dados através do TCP é necessário a abertura de uma conexão fim-a-fim, ou seja o TCP suporta comunicação apenas entre dois hosts por vez. Uma sessão TCP é inicializada através de um processo conhecido como um tree-way handshake que consiste em tres pacotes de estabelecimento de conexão sendo um pacote SYN enviado pelo cliente que consiste em um segmento TCP especial que não contem nenhum dado da camada de aplicação mas com o flag SYN ativado. Alem disso o cliente escolhe aleatoriamente um numero de seqüência inicial e coloca esse numero no campo de numero de seqüência do segmento SYN inicial. Quando o servidor recebe o segmento SYN ele aloca buffers e variáveis TCP necessárias a conexão e envia um segmente de aceitação de conexão ao TCP cliente. Esse segmento também é chamado de segmento SYNACK. Ao receber o segmento SYNACK o cliente também reserva buffers e variáveis para a conexão. O cliente então envia ao servidor mais um segmento que reconhece o segmento de confirmação da conexão do servidor, o bit SYN é ajustado para 0 e a conexão já esta estabelecida. Esse processo sincroniza os números de seqüência e oferece informações de controle necessárias para estabelecer uma conexão virtual entre os dois hosts. Depois de concluído o tree-way handshake inicial, os segmentos são enviados e confirmados de forma seqüencial entre os hosts remetente e destinatário. Um processo de handshake semelhante é usado pelo TCP antes de fechar a conexão para verificar se os dois hosts acabaram de enviar e receber todos os dados. O TCP recebe os dados de aplicação e processa esses dados como um conjunto de bytes e esses bytes são agrupados em segmentos que o TCP numera em seqüência para a entrega. Apos receber os dados de aplicação o TCP direciona esses dados para um buffer de envio da conexão (reservado durante o estabelecimento da conexão) e vai criando segmentos e enviando para a rede. A quantidade máxima retirada do buffer e colocada em um segmento é limitada pelo MMS (tamanho máximo do segmento). O TCP utiliza o conceito de portas, que permite que vários programas estejam em funcionamento, ao mesmo tempo, no mesmo computador, trocando informações com um ou mais serviços/servidores. Algumas das principais características do TCP e que faz com que ele seja tao utilizado são citadas a seguir: •Garante a entrega de datagramas IP: Esta talvez seja a principal função do TCP, ou seja, garantir que os pacotes sejam entregues sem alterações, sem terem sido corrompidos e na ordem correta. O TCP tem uma série de mecanismos para garantir esta entrega. •Garante o seqüenciamento adequado e entrega ordenada de dados segmentados: Esta característica refere-se a função de dividir grandes arquivos em pacotes menores e transmitir cada pacote separadamente. Os pacotes podem ser enviados por caminhos diferentes e chegar fora de ordem. O TCP tem mecanismos para garantir que, no destino, os pacotes sejam ordenados corretamente, antes de serem entregues ao programa de destino. •Verifica a integridade dos dados transmitidos: Usando cálculos de soma de verificaçao o TCP faz verificações para garantir que os dados não foram alterados ou corrompidos durante o transporte entre a origem e o destino. •Envia mensagens positivas dependendo do recebimento bem-sucedido dos dados. No destino, o TCP recebe os pacotes, verifica se estão OK e, em caso afirmativo, envia uma mensagem para a origem, confirmando cada pacote que foi recebido corretamente. Caso um pacote não tenha sido recebido ou tenha sido recebido com problemas, o TCP envia uma mensagem ao computador de origem, solicitando uma retransmissão do pacote. Com esse mecanismo, apenas pacotes com problemas terão que ser reenviados, o que reduz o tráfego na rede e agiliza o envio dos pacotes. •Oferece um método preferencial de transporte de programas que devem usar transmissão confiável de dados baseada em sessões: Ou seja, o TCP é muito mais confiável do que o UDP e é indicado para programas e serviços que dependam de uma entrega confiável de dados.
Transporte Não Orientado Para Conexao: UDP
[editar | editar código]O UDP é um protocolo usado para o transporte rápido de dados entre hosts TCP/IP. Porém o UDP não fornece garantia de entrega e nem verificação de dados. De uma maneira simples, podemos dizer que o protocolo UDP manda os dados para o destino sem a necessidade de apresentação entre as unidades remetentes e destinatária antes de enviar o segmento, porem se vai chegar ou se vai chegar corretamente, sem erros (o UDP fornece verificação de erro porem nada faz para corrigir o erro, e apenas informa a aplicação que o pacote esta com erro), é impossível saber. O UDP não garante a entrega ou verifica o seqüenciamento para qualquer pacote. Uma outra solução bastante utilizada ultimamente é a inserção da confiabilidade na própria aplicação (adicionando mecanismos de reconhecimento e de transmissão embutidos na aplicação) permitindo assim que ela tire proveito de ambas as alternativas, ou seja, os processos de aplicação se comunicam de maneira confiável sem ter que se sujeitar as limitações da taxa de transmissão impostas pelo mecanismo de controle de congestionamento impostas pelo TCP. Alguns dos principais motivos pelo qual o UDP pode ser preferível são:
- Melhor controle no nível de aplicação sobre quais dados são enviados e quando: como ele não possui controle de congestionamento (como ocorre no TCP) não ocorre atraso no envio do pacote. Não possui o serviço de confirmação de recebimento que pode atrasar a transmissão se alguns pacotes forem perdidos e é compatível com aplicações de tempo real onde a velocidade é mais importantes que a confiabilidade na entrega
- Não há estabelecimento de conexão: O UDP apenas envia os dados sem perder tempo tentando abrir conexões (como ocorre no TCP) esse pode ser o motivo pelo qual DNS roda sobre UDP
- Não há estados de conexão: Usado pelo TCP para garantir a entrega confiável de dados (esses estados inclui buffers de envio e recebimento paramentos de controle de congestionamento e etc) por isso um servidor com uma aplicação especifica pode suportar um numero muito maior de clientes ativos quando a aplicação roda sobre UDP e não sobre TCP
- Pequena Sobrecarga de Cabeçalho de Pacote: O TCP possui 20 bytes de sobrecarga de cabeçalho enquanto o UDP so possui 8 bytes
Algumas das aplicações mais importantes que utilizam o UDP são:
- Atualização de tabelas de roteamento com protocolo RIP
- Transferir dados de gerenciamento de rede (que normalmente funcionam quando a rede esta sobrecarregada e é difícil conseguir transferência confiável devido ao controle de congestionamento.
- O DNS também roda sobre o UDP
- É bastante utilizado em aplicações multimídia como telefone por internet, vídeo conferencia em tempo real e recepção de áudio e vídeo armazenados.
Mecanismos de Controle de Congestionamento
[editar | editar código]Podemos distinguir mecanismos de controle de congestionamento conforme a camada de rede ofereça ou não assistência explicita a camada de transporte com finalidade de controle de congestionamento. Sabendo que Janela de Congestionamento é um parâmetro que impõe uma limitação a taxa a qual o remetente pode enviar trafego para dentro da rede (especificamente a quantidade de dados não reconhecidos em um hospedeiro não pode exceder o mínimo da janela de congestionamento) podemos dividir o controle de congestionamento em dois modos: Controle de congestionamento fim-a-fim: Nesse método a camada de rede não fornece nenhum suporte explicito a camada de trasporte e o congestionamento da rede é intuída pelos sistemas finais com base na observação do comportamento da rede (perda de pacotes). Esse é o metodo utilizado pelo protocolo TCP. Controle de congestionamento assistido pela rede: com esse método os roteadores fornecem realimentação de informações ao remetente a respeito do congestionamento da rede. O controle de congestionamento assistido pela rede tem dois modos de operação. São eles:
- Realimentação Direta: Pacote enviados de um roteador da rede a um remetente (como se fosse um pacote de congestionamento dizendo: “estou congestionado”)
- Realimentação Indireta: Ocorre quando um roteador marca / atualiza um campo em um pacote que esta indo do remetente ao destinatário para indicar o congestionamento e com isso o destinatário informa ao remetente sobre o congestionamento. Esse método possui a desvantagem de leva no mínimo o tempo de ida e volta de um pacote para avisa ao remetente sobre o congestionamento
Algoritimo de Controle de Congestionamento
[editar | editar código]O principal objetivo do controle de congestionamento é reduzir a taxa em que um remetente envia pacotes na rede. Normalmente isso é conseguido diminuindo o tamanho da janela de congestionamento de todos os remetentes quando a rede esta congestionada (ocorre perdas de pacotes).
Alguns dos principais algoritimos usados no controle de congestinamento são:
- Diminuição Multiplicativa: Nessa abordagem o TCP diminui a janela de congestionamento pela metade toda vez que houver uma nova perda de pacotes. O valor da janela de congestionamento pode atingir um valor mínimo igual a 1 MSS.
- Aumento Aditivo: Esse método é utilizado toda vez que não há congestionamento, o principio desse método é que se nenhum congestionamento for detectado provavelmente há largura de banda disponível e que pode ser usada adicionalmente pelo TCP. Nessas circunstancias o TCP aumenta sua janela de congestionamento lentamente para verificar se há largura de banda adicional disponível no caminho fim-a-fim. Isso é conseguido incrementando a janela de congestionamento cada vez que um novo reconhecimento é recebido tendo como meta aumentar a janela de congestionamento de 1 MSS a cada tempo de viagem de ida e volta
- Partida Lenta: No inicio de uma conexão o TCP inicia o valor da janela de congestionamento em 1 MSS. Nesse caso a taxa de aumento da janela de congestionamento aumenta exponencialmente, duplicando seu valor de janela de congestionamento a cada RTT. Esse aumento exponencial continua ate ocorrer o primeiro evento de perda.
Referencias
[editar | editar código]KUROSE; ROSS. Redes de Computadores e a Internet: Uma abordagem top-down. São Paulo: Pearson Addison Wesley, 2006