Você está na página 1de 46

Instituto Federal de Educação, Ciência e Tecnologia de Pernambuco

Redes Industriais
Campus Garanhuns

Camada de Transporte Professor: Diego Lopes

Aula 05 GARANHUNS, 2021 1/46


Introdução
•Camada de Transporte:
• Serviços da camada de transporte;
• Multiplexação/demultiplexação;
• Transporte sem conexão: UDP
• Princípios de transferência confiável de dados;
• Transporte orientado a conexão:
• TCPotransferência confiável;
• controle de fluxo;
• gerenciamento de conexões.
• princípios de controle de congestionamento;
• controle de congestionamento em TCP.

Aula 05 CAMADA DE TRANSPORTE 2/46


Camada de Transporte
•Serviços e protocolos de transporte:
• Provê comunicação lógica entre processos de
aplicação executando em hospedeiros
diferentes;
• protocolos de transporte executam em sistemas
terminais;
• serviços das camadas de transporte X rede:
• camada de rede: dados transferidos entre sistemas;
• camada de transporte:dados transferidos entre processos;
• depende de, estende serviços da camada de rede.

Aula 05 CAMADA DE TRANSPORTE 3/46


Camada de Transporte
•Protocolos da camada de transporte - Serviços de transporte na Internet:
• Entrega confiável, ordenada, ponto a ponto (TCP):
• congestionamento;
• controle de fluxo;
• estabelecimento de conexão (“setup”).
• Entrega não confiável, (“melhor esforço”), não ordenada, ponto a ponto ou multiponto: UDP.

Aula 05 CAMADA DE TRANSPORTE 4/46


Multiplexação/Demultiplexação
•Segmento: unidade de dados trocada entre entidades da camada de transporte;
•TPDU: transport protocol data unit;
•Demultiplexação: entrega de segmentos recebidos para os processos da camada de aplicação
corretos.

Aula 05 CAMADA DE TRANSPORTE 5/46


Multiplexação/Demultiplexação
•Multiplexação: juntar dados de múltiplos
processos de aplicação, envelopando os dados
com cabeçalho (usado depois para
demultiplexação);
•Multiplexação/demultiplexação:
• baseadas em números de porta e endereços IP
do remetente e do receptor:
• números de porta do remetente/receptor em cada
segmento;
• número de porta bem conhecido para aplicações específicas.

Aula 05 CAMADA DE TRANSPORTE 6/46


Multiplexação/Demultiplexação
•Exemplos:

Aula 05 CAMADA DE TRANSPORTE 7/46


UDP – User Datagram Protocol
•Protocolo de transporte da Internet mínimo, “sem frescura”;
•Serviço “melhor esforço”, segmentos UDP podem ser:
• perdidos;
• entregues à aplicação fora de ordem do envio.

•Sem conexão:
• não há “setup” UDP entre remetente, receptor;
• tratamento independente de cada segmento UDP.

•Por que existe um UDP?


• elimina estabelecimento de conexão (o que pode causar retardo);
• simples: não se mantém “estado”da conexão no remetente/receptor;
• pequeno cabeçalho de segmento;
• sem controle de congestionamento: UDP pode transmitir o mais rápido possível.

Aula 05 CAMADA DE TRANSPORTE 8/46


UDP – User Datagram Protocol
•Muito utilizado para apls. de meios contínuos
(voz, vídeo)Serviço “melhor esforço”, Opicionais
segmentos UDP podem ser:
• tolerantes de perdas;
• sensíveis à taxa de transmissão.

•Outros usos de UDP (por quê?):


• DNS (nomes);
• SNMP – Simple Network Management Protocol
(gerenciamento).

•Transferência confiável com UDP: incluir


confiabilidade na camada de aplicação:
• recuperação de erro específica à aplicação.

Aula 05 CAMADA DE TRANSPORTE 9/46


Checksum UDP
•Detectar “erro”(e.g., bits invertidos) no segmento transmitido;
•Remetente:
• trata conteúdo do segmento como seqüência de inteiros de 16-bits;
• campo checksum zerado;
• checksum: soma (adição usando complemento a 1) do conteúdo do segmento;
• remetente coloca complemento do valor da soma no campo checksum de UDP.

•Receptor:
• calcula checksum do segmento recebido;
• verifica se checksum computado é um:
• NÃO -erro detectado
• SIM -nenhum erro detectado. Mas ainda pode ter erros?Veja depois ….

Aula 05 CAMADA DE TRANSPORTE 10/46


Checksum UDP
•Pode ser redundante pois muitos protocolos de enlace já o fazem(ex. Ethernet);
•Contudo, Camada de Transporte deve funcionar independente da tecnologia de enlace;
•Apesar de detectar erro, UDP nada faz para corrigir (algumas implementações simplesmente
descartam o segmento).

Suponha as três seguintes


Palavras de 16 bits. Fazer o
Checksum:

Aula 05 CAMADA DE TRANSPORTE 11/46


Transferência Confiável dos Dados
•características do canal não confiável determinam a complexidade de um protocolo de
transferência confiável de dados;
•Um dos tópicos mais importantes em redes.

Aula 05 CAMADA DE TRANSPORTE 12/46


Transferência Confiável dos Dados
•Canal pode conter erros de bits e perder pacotes:
• Como lidar com erros de bits?
• Com checksum nas mensagens, mensagens de reconhecimento e retransmissões de pacotes.
• Como lidar com pacotes duplicados?
• Com número de sequência em cada pacote.
• Como lidar com perdas de pacotes?
• Com relógios temporizadores e retransmissões de pacotes.

Aula 05 CAMADA DE TRANSPORTE 13/46


Protocolos simples – Stop n’ Wait
•Canal subjacente com erros e perda de pacotes (dados ou ACKs):
• Checksum, no. de seq., ACKs, retransmissões podem ajudar, mas não serão suficientes.

•Como lidar com as perdas?


• Remetente espera até ter certeza que se perdeu pacote ou ACK, e então retransmite.

•Desvantagens:
• Remetente aguarda um tempo “razoável”pelo ACK:
• retransmite e nenhum ACK recebido neste intervalo;
• Se pacote (ou ACK) apenas atrasado (e não perdido):
• retransmissão será duplicada, mas uso de número de sequência já cuida disto;
• receptor deve especificar número de sequência do pacote sendo reconhecido.
• Requer temporizador;
• Desmpenho muito ruim;
• Protocolo limita o uso de recursos físicos.

Aula 05 CAMADA DE TRANSPORTE 14/46


Protocolos Pipelined
•Pipelining: Remetente admite múltiplos pacotes “em trânsito”, ainda não reconhecidos:
• Faixa de números de seqüência deve ser aumentada;
• Buffers no remetente e/ou no receptor.

•Formas genéricas de protocolos que usam pipelining:


• Go-Back-n (volta-n);
• Retransmissão seletiva.

Aula 05 CAMADA DE TRANSPORTE 15/46


Volta-n
•Remetente:
• número de sequência de k-bits no cabeçalho do pacote;
• admite “janela” de até N pacotes consecutivos não reconhecidos.

• ACK(n): reconhece todos pacotes, atée inclusive no. de seq n -“ACK cumulativo”;
• pode receber ACKs duplicados.
• Temporizador para todos pacotes em trânsito;
• Timeout(n): retransmite pacote n e todos os pacotes com numero de sequência maiores na janela.
Aula 05 CAMADA DE TRANSPORTE 16/46
Volta-n
•Remetente:

Aula 05 CAMADA DE TRANSPORTE 17/46


Volta-n
•Receptor:
• Usa apenas ACK: sempre envia ACK para pacote recebido bem com o maior número de sequência em
ordem:
• Pode gerar ACKs duplicados;
• Só precisa se lembrar do expectedseqnum: número de sequência do próximo pacote esperado conforme ordem.
• Pacotes fora de ordem:
• Descarta (não armazena) -> receptor não usa buffers;
• Entrega dados reconhecidos um-a-um para aplicação;
• Manda ACK de pacote com maior número de sequência em ordem.

Aula 05 CAMADA DE TRANSPORTE 18/46


Volta-n

Aula 05 CAMADA DE TRANSPORTE 19/46


Volta-n
•Problemas com o protocolo Volta-n:
• Quando tamanho da janela e atrasos são grandes, pode haver muitos pacotes pendentes na rede;
• Um único erro pode fazer com que o Volta-n retransmita um grande número de pacotes (muitos
desnecessariamente).

•Analogia:
• Em uma conversa toda vez que uma palavra fosse pronunciada truncada as outra mil que circundam
(tamanho da janela) tivessem que ser repetidas.

Aula 05 CAMADA DE TRANSPORTE 20/46


Retransmissão Seletiva
•Receptor reconhece individualmente todos os pacotes recebidos corretamente:
• Armazena pacotes no buffer, conforme precisa, para posterior entrega em-ordem à camada superior;

•Remetente apenas re-envia pacotes para os quais ACK não recebido:


• Temporizador de remetente para cada pacote sem ACK.

•Janela do remetente:
• N nos. de sequenciaconsecutivos;
• Outra vez limita nos. de seq de pacotes enviados, mas ainda não reconhecidos.

Aula 05 CAMADA DE TRANSPORTE 21/46


Retransmissão Seletiva
•Janelas de remetente, receptor:

Aula 05 CAMADA DE TRANSPORTE 22/46


Retransmissão Seletiva
•Remetente: •Receptor:
• Dados de cima: • Pacote n em [rcvbase, rcvbase+N-1]:
• Se o próximo número de sequência na janela, • Envia ACK (n);
envia o pacote. • Fora de ordem: bufferiza;
• Timeout(n): • Em ordem: entrega (também entrega pacotes em ordem no
buffer), avança janela para próximo pacote ainda não
• Reenvia pacote n, reiniciar temporizador. recebido;
• ACK(n): • Caso já tenha recebido o pacote ignora.
• marca pacote n “recebido”;
• se n for menor pacote não reconhecido, avança base da
janela ao próximo número de sequência não reconhecido.

Aula 05 CAMADA DE TRANSPORTE 23/46


Retransmissão Seletiva

Aula 05 CAMADA DE TRANSPORTE 24/46


TCP: Visão Geral
•RFC 793; •Transmissão Full-duplex:
• Fluxo de dados bi-direcional na mesma conexão;
•Ponto-a-ponto:
• MSS: tamanho máximo de segmento.
• 1 remetente, 1 receptor;
•Orientado a conexão:
•Fluxo de bytes, ordenados, confiável;
• handshaking (troca de mensagens de controle)
•Pipelined (dutado): inicia estado de remetente, receptor antes de
• Tamanho da janela ajustado por controle de trocar dados.
fluxo e congestionamento do TCP;
•Fluxo controlado:
•Buffers de Envio e Recepção. • Receptor não será afogado.

Aula 05 CAMADA DE TRANSPORTE 25/46


TCP: Estrutura do Segmento

Aula 05 CAMADA DE TRANSPORTE 26/46


TCP: Transferência Confiável de Dados
•Remetente simplificado, supondo:
• fluxo de dados uni-direcional;
• sem controle de fluxo, congestionamento.

Aula 05 CAMADA DE TRANSPORTE 27/46


TCP: Número de Sequência de ACK’s
•Números de sequência:
• “número” dentro do fluxo de bytes do primeiro
byte de dados do segmento;
• 42 e 79 número de sequência iniciais de A e B.

•ACK’s
• Número de sequência do próximo byte esperado
do outro lado;
• ACK Acumulativo.

•Como o receptor trata segmentos fora de


ordem?
• Especificação do TCP omissa. Deixado ao
implementador.

Aula 05 CAMADA DE TRANSPORTE 28/46


Remetente TCP Simplificado

Aula 05 CAMADA DE TRANSPORTE 29/46


TCP: Cenários de Retransmissão

Aula 05 CAMADA DE TRANSPORTE 30/46


TCP: Controle de Fluxo
•Controle de Fluxo:
• Remetente não esgotaria buffers do receptor
por transmitir muito, ou muito rápidamente;

•Receptor:
• Explicitamente avisa o remetente da quantidade
de espaço livre disponível (muda
dinamicamente);
• campoRcvWindow no segmento TCP.

•Remetente:
• Mantém a quantidade de dados transmitidos,
porém ainda não reconhecidos, menor que o
valor mais recente de RcvWindow.

Aula 05 CAMADA DE TRANSPORTE 31/46


TCP: Controle de Fluxo

Aula 05 CAMADA DE TRANSPORTE 32/46


TCP: Tempo de Resposta (RTT) e
Temporização
•Como escolher o valor do temporizador TCP? •Como estimar o RTT?
• Maior que o RTT; • RTTamostra:tempo medido entre a transmissão
• Note: RTT pode variar. do segmento e o recebimento do ACK
• Muito curto: temporização prematura; correspondente;
• Ignora retransmissões, segmentos com ACKs cumulativos.
• retransmissões são desnecessárias.
• Muito longo: reação demorada à perda de • RTTamostra vai variar, queremos suavizar o valor
segmentos. do RTT estimado:
• Ousa várias medições recentes, não apenas o valor corrente
(RTTamostra).

Aula 05 CAMADA DE TRANSPORTE 33/46


TCP: Tempo de Resposta (RTT) e
Temporização
•Média corrente exponencialmente ponderada;
•Influência de cada amostra diminui exponencialmente com o tempo;
•Valor típico de x: 0.1;

X = 1/8

Aula 05 CAMADA DE TRANSPORTE 34/46


TCP: Gerenciamento de Conexões
•Remetente, receptor TCP estabelecem •Inicialização em 3 tempos:
“conexão” antes de trocar segmentos de • Passo 1: sistema cliente envia segmento de
dados: controle SYN do TCP ao servidor;
• Inicializam variáveis TCP: • Especifica número incial de sequência;
• Números de sequência; • Passo 2: sistema servidor recebe SYN, responde
• Buffers, infos sem controle de fluxo. com segmento de controle SYNACK;
• Cliente: iniciador da conexão: • Reconhece SYN recebido;
• Aloca buffers;
• Especifica número inicial de sequência servidor -> receptor.
• Passo 3: sistema cliente recebe SYNACK, e envia
ACK para o servidor (controle SYN desligado pois
• Servidor: Contactado por cliente conexão já foi estabelecida).

Aula 05 CAMADA DE TRANSPORTE 35/46


TCP: Gerenciamento de Conexões
•Encerrando uma conexão: clientSocket.close();
• Passo 1:sistema cliente envia segmento de
controle FIN ao servidor;
• Passo 2: servidor recebe FIN, responde com ACK.
Encerra a conexão, enviando FIN;
• Passo 3: cliente recebe FIN, responde com ACK:
• Entre em “espera temporizada” - responderá com ACK a
FINs recebidos.
• Passo 4: servidor, recebe ACK. Conexão
encerrada.

Aula 05 CAMADA DE TRANSPORTE 36/46


Princípios de Controle de
Congestionamento
•Congestionamento:
• Informalmente: “muitas fontes enviando muitos dados muito rapidamente para a redepoder tratar”
• Diferente de controle de fluxo que trata do espaço do buffer e não do meio;
• Manifestações:
• perda de pacotes (esgotamento de buffers em roteadores);
• longos atrasos (enfileiramento nos buffers dos roteadores).
• Considerado um dos problemas mais importantes em redes.

Aula 05 CAMADA DE TRANSPORTE 37/46


Princípios de Controle de
Congestionamento
•Congestionamento:

Aula 05 CAMADA DE TRANSPORTE 38/46


Causas/Custos do Congestionamento
•Mesmo se roteadores pudessem ter fila infinita:
• Grandes retardos quando congestionada;
• Vazão máxima do enlace alcançável.

•Um roteador, buffers finitos:


• Retransmissão pelo remetente de pacote perdido.

•Um “custo” do congestionamento:


• quando pacote é descartado, qualquer capacidade de
transmissão já usada (antes do descarte) para esse
pacote foi desperdiçada.

Aula 05 CAMADA DE TRANSPORTE 39/46


Abordagens de Controle de
Congestionamento
•Duas abordagens amplas para controle de congestionamento:

•Controles de congestionamento fim-a-fim: •Controle de congestionamento com apoio da


• não tem realimentação explícita pela rede; rede:
• congestionamento inferido das perdas, retardo • roteadores realimentam os sistemas terminais:
observados pelo sistema terminal; • bit único indicando congestionamento (SNA,
• abordagem usada pelo TCP. DECbit, ATM);
• taxa explícita p/ envio pelo remetente.

Aula 05 CAMADA DE TRANSPORTE 40/46


TCP: Controle de Congestionamento
•Controle fim-a-fim (sem apoio da rede);
•Taxa de transmissão limitada pelo tamanho da janela de congestionamento, Congwin:

•w segmentos, cada um com MSS bytes, enviados por RTT:

Aula 05 CAMADA DE TRANSPORTE 41/46


TCP: Controle de Congestionamento
•“Sondagem” para banda utilizável:
• Idealmente:transmitir o mais rápido possível (Congwin o máximo possível) sem perder pacotes;
• Aumentar Congwin até perder pacotes (congestionamento);
• Perdas: diminui Congwin, depois volta a à sondagem (aumento) novamente.

•Duas “fases”:
• Partida lenta;
• Evitar congestionamento.

•Variáveis importantes:
• Congwin;
• Threshold: define limiar entre fases de partida lenta, controle de congestionamento.

Aula 05 CAMADA DE TRANSPORTE 42/46


TCP: Partida Lenta

• Aumento exponencial (por RTT) no tamanho da


janela (não muito lenta!);
• Evento de perda: temporizador.

Aula 05 CAMADA DE TRANSPORTE 43/46


TCP: Evitar Congestionamento

Aula 05 CAMADA DE TRANSPORTE 44/46


AADM (AIDM)
•TCP evitando congestionamento: •Justiça do TCP:
• AADM: Aumento aditivo, decremento • Meta: se N sessões TCP compartilham o mesmo
multiplicativo; enlace de gargalo, cada uma deve ganhar 1/N
• Aumenta a janela em 1 por cada RTT; da capacidade do enlace.
• Diminui janela por fator de 2 num evento de perda.

Aula 05 CAMADA DE TRANSPORTE 45/46


Dúvidas?

Aula 05 CAMADA DE TRANSPORTE 46/46

Você também pode gostar