Redes de computadores
75 pág.

Redes de computadores


DisciplinaRedes de Computadores18.439 materiais245.926 seguidores
Pré-visualização26 páginas
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:
\u2022\u2022 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 importante que a confiabilidade na entrega.
\u2022\u2022 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 é um dos motivos pelo qual DNS roda sobre UDP.
\u2022\u2022 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, parâmetros 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 ao invés de TCP.
\u2022\u2022 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:
\u2022\u2022 Atualização de tabelas de roteamento com protocolo RIP.
\u2022\u2022 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.
\u2022\u2022 O DNS também roda sobre o UDP.
\u2022\u2022 É bastante utilizado em aplicações multimídia como telefone por internet, vídeo conferência em tempo real e
recepção de áudio e vídeo armazenados.
Mecanismos de Controle de Congestionamento
Podemos distinguir mecanismos de controle de congestionamento conforme a camada de rede ofereça ou não
assistência explícita à 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 tráfego 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:
\u2022\u2022 Controle de congestionamento fim-a-fim: Nesse método a camada de rede não fornece nenhum suporte explícito à
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.
\u2022\u2022 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
Multiplexação e demultiplexação 31
rede tem dois modos de operação. São eles:
\u2022 Realimentação Direta: Pacote enviados de um roteador da rede a um remetente (como se fosse um pacote de
congestionamento dizendo: \u201cestou congestionado\u201d)
\u2022\u2022 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 perder, no mínimo, o tempo de ida e volta de
um pacote, para avisar ao remetente sobre o congestionamento.
Servidores Web e o TCP
Este é um cenário bastante interessante para se entender os princípios da multiplexação e demultiplexação no TCP.
Observe uma ilustração [1] de uma situação típica, onde vários clientes se conectam a um servidor WEB através da
porta 80.
Em virtude de o TCP ser identificado por uma tupla de 4 (quatro) elementos, todas as conexões serão corretamente
multiplexadas/demultiplexadas.
Os pacotes que saem dos hospedeiros clientes possuem sempre o IP de destino B e porta de destino 80. Isto é
exatamente o esperado em se tratando de servidores WEB.
Consideremos primeiramente o processo cliente (navegador) rodando no hospedeiro A. Apesar de este processo ter
escolhido a mesma porta de origem do processo rodando em C (porta origem x), os pacotes de A e C serão
corretamente demultiplexados, pois o servidor WEB ainda pode diferenciar os pacotes devido ao campo IP de
origem. Analogamente, também não haverá problema na identificação de pacotes de duas aplicações rodando no
mesmo hospedeiro cliente (como ocorre em C). Os pacotes serão diferenciados através do número da porta de
origem, que deve ser diferente para cada um dos processos(neste exemplo, temos x e y). Uma breve conclusão é que
o servidor identifica os pacotes pelo campo 'IP de origem', e duas aplicações no mesmo cliente se diferenciam pela
campo 'porta de origem'.
O servidor WEB, por sua vez, tem duas abordagens para gerenciar estas conexões. Ele pode, a cada nova requisição,
criar um novo thread (inserido em um único grande processo), ou criar um novo processo. Threads são mais
eficientes, uma vez que exigem/alocam menos recursos de hardware para serem executados. Observe que nas duas
abordagens, o servidor designará um socket único a cada thread/processo, que na prática, designa a porta pela qual os
dados passam da aplicação à camada de transporte.
Algoritimo de Controle de Congestionamento
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:
\u2022 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.
\u2022 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
mesma de 1 MSS a cada tempo de viagem de ida e volta.
Multiplexação e demultiplexação 32
\u2022 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 mesma aumenta exponencialmente, duplicando seu valor de janela de
congestionamento a cada RTT (Round Trip Time). Esse aumento exponencial continua até ocorrer o primeiro
evento de perda.
Referências
[1] http:/ / www. decom. ufop. br/ prof/ tiago/ disciplinas/ 2006/ sistDist/ trabalhos/ httpXtcp_arquivos/ Image1. gif
KUROSE; ROSS. Redes de Computadores e a Internet: Uma abordagem top-down. São Paulo: Pearson Addison
Wesley, 2006
Protocolo UDP
Introdução
O protocolo de transporte UDP foi referenciado pela RFC 768 em 28 de agosto de 1980. O UDP, ao contrário do que
muitos crêem, não é um protocolo anterior ao TCP. Inicialmente, não havia uma separação entre a camada de rede e
de transporte. Os protocolos TCP e IP eram referenciados como um único protocolo. Entretanto, à medida que se
percebia as limitações do protocolo para certas aplicações, as especificações foram mudando. Na versão 3(1978) do
TCP/IP já haviam indícios de separação entre os protocolos, e na versão 4(1980), há a separação