TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 ponto-a-ponto:

Slides:



Advertisements
Apresentações semelhantes
REDES DE COMPUTADORES Prof. Evandro Cantú.
Advertisements

Capítulo 3: Camada de Transporte
TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 ponto a ponto:
Missão da camada de enlace Serviços oferecidos TCP UDP
Administração e Projeto de Redes
Capítulo 3: Camada de Transporte
Redes I Os Protocolos Prof. Dr. Amine BERQIA
TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 Ponto-a-ponto:
URL: Redes Prof. Edgard Jamhour URL:
Transporte Referência:
Capítulo 3: Camada de Transporte
Capítulo 3: Camada de Transporte
TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 ponto a ponto:
Capítulo 3: Camada de Transporte
Conteúdo do Capítulo Serviços da camada de transporte
Conteúdo do Capítulo Serviços da camada de transporte
Capítulo 3: Camada de Transporte
Capítulo 3: Questões de Revisão
TCP Serviço de Transporte Confiável
Protocolos e Divisão em Camadas
TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 ponto-a-ponto:
Desempenho do Controle de Congestionamento
3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência.
Prof. Marcelo Diniz Fonte:
Paulo Roberto Freire Cunha
3: Camada de Transporte3a-1 Capítulo 3: Camada de Transporte Objetivos: compreender os princípios atrás dos serviços da camada de transporte: multiplexação/
Comutação Comutação ou chaveamento em uma rede de comunicação refere-se a alocação de recursos da rede (meios de transmissão e equipamentos) para a envio.
Obtenção de IP TCP UDP.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
REVISÃO MÓDULO 3(Camada de Transporte)
TCP (Transmission Control Protocol)
Modelo de referência OSI
Interconexão e Transporte em Redes
URI - Santo Ângelo - DECC
URI - Santo Ângelo - DECC
Direita ou esquerda ??? ? 3: Nível de Transporte.
Camada de Transporte OSI
Aula 64 – TEC 11ºF Redes de computadores Prof. António dos Anjos.
Capítulo 3: Camada de Transporte
Camada de Transporte prof. Eduardo.
Transmission Control Protocol TCP
ESPECIFICAÇÃO de PROTOCOLOS de TRANSPORTE
Transmission Control Protocol TCP
Comunicação de dados Protocolos básicos de enlace de dados.
Protocolos de Janela Deslizante
© 2010 Pearson Prentice Hall. Todos os direitos reservados.slide 1 Capítulo 3 Camada de transporte Nota sobre o uso destes slides ppt: Estamos disponibilizando.
IMPLEMENTAÇÃO de um PROTOCOLO SIMPLES
Escola Secundaria Sebastião da Gama Trabalho realizado por: André Santos 12ºL nº:2 Prof: Carlos Pereira.
REDES DE COMPUTADORES Camada de Transporte Professor: M.Sc. Carlos Oberdan Rolim.
Camada de Transporte: protocolo TCP Parte 1
MODELO DE REFERÊNCIA TCP/IP
Transmissão de Dados O Modelo de Referência TCP/IP
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
1) A camada de transporte provê comunicação lógica entre hosts.
Introdução à camada de rede
Redes de computadores: Camada de Transporte Prof. Dr. Amine BERQIA
Arquitetura TCP/IP Aplicação Transporte Rede Enlace Física.
Modelo de Referência TCP/IP Camada de Enlace de Dados
© 2010 Pearson Prentice Hall. Todos os direitos reservados.slide 1 Capítulo 3 Camada de transporte Nota sobre o uso destes slides ppt: Estamos disponibilizando.
Rede de Computadores MAT164 – Redes de Computadores I Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação.
Administração e Projeto de Redes Material de apoio Camada de Transporte Cap.4 10/02/2010.
Redes de computadores e a Internet
© 2010 Pearson Prentice Hall. Todos os direitos reservados.slide 1 Capítulo 3 Camada de transporte Nota sobre o uso destes slides ppt: Estamos disponibilizando.
3: Camada de Transporte 3b-1 Conteúdo do Capítulo 3 r 3.1 Serviços da camada de transporte r 3.2 Multiplexação e demultiplexação r 3.3 Transporte não orientado.
Capítulo 3 Redes de computadores e a Internet Camada de transporte.
Prof. Ivair Teixeira Redes de Computadores.
3: Camada de Transporte 3a-1 Capítulo 3: Camada de Transporte Metas do capítulo: r entender os princípios atrás dos serviços da camada de transporte: m.
Curso Superior em Redes de Computadores Camada de Transporte Prof. Sales Filho.
Camada 4 A Camada de Transporte
Escola de Ciência e Tecnologia Arquitetura TCP/IP Arquitetura TCP/IP Protocolos TCP, UDP e ICMP Etienne César R. de Oliveira
Transcrição da apresentação:

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 ponto-a-ponto: um transmissor, um receptor confiável, seqüêncial byte stream: não há contornos de mensagens pipelined: (transmissão de vários pacotes em confirmação) Controle de congestão e de fluxo definem tamanho da janela buffers de transmissão e de recepção dados full-duplex: transmissão bi-direcional na mesma conexão MSS: maximum segment size orientado à conexão: handshaking (troca de mensagens de controle) inicia o estado do transmissor e do receptor antes da troca de dados controle de fluxo: transmissor não esgota a capacidade do receptor aplicação aplicação envia dados socket lê dados socket port port TCP TCP buffe de txr buffer de rx segment

Estrutura do Segmento TCP 32 bits URG: dados urgentes (pouco usado) contagem por bytes de dados (não segmentos!) porta origem porta destino número de seqüência ACK: campo de ACK é válido número de reconhecimento tam. cabec. não usado PSH: produz envio de dados (pouco usado) U A P R S F janela de recep. checksum dados urgentes número de bytes receptor está pronto para aceitar RST, SYN, FIN: estabelec. de conexão (comandos de criação e término) Opções (tamanho variável) dados de aplicação (tamanho variável) Internet checksum (como no UDP)

Números de Seqüência e ACKs do TCP número do primeiro byte no segmento de dados ACKs: número do próximo byte esperado do outro lado ACK cumulativo Q: como o receptor trata segmentos foram de ordem A especificação do TCP não define, fica a critério do implementador Host A Host B Usuário digita ‘C’ Seq=42, ACK=79, data = ‘C’ host confirma recepção de ‘C’, e ecoa o ’C’ de volta Seq=79, ACK=43, data = ‘C’ host confirma recepção do ‘C’ ecoado Seq=43, ACK=80 tempo cenário telnet simples

TCP: transferência de dados confiável evento: dados recebidos da aplicação acima transmissor simplificado, assumindo que não há controle de fluxo nem de congestionamento cria, envia segmento espera por evento wait for event evento: temporização esgotada para segmento com seq = y retransmite segmento evento: ACK recebido, com número de ACK = y processamento do ACK

TCP: transferência confiável 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02 03 loop (forever) { 04 switch(event) 05 event: dados recebidos da aplicação acima 06 cria segmento TCP com número de seqüência nextseqnum 07 inicia temporizador para segmento nextseqnum 08 passa segmento ao IP 09 nextseqnum = nextseqnum + length(data) 10 event: esgotamento de temp. para segmento com seq = y 11 retransmite segmento com seq = y 12 calcule nova temporização para o segmento y 13 reinicia temporizador para número de seqüência y 14 event: ACK recebido, com valor y no campo de ACK 15 if (y > sendbase) { /* ACK cumulativo de todos os dados até y */ 16 cancela todas as temporizações para segmentos com seq < y 17 sendbase = y 18 } 19 else { /* um ACK duplicata para um segmento já reconhecido */ 20 incrementa numero de duplicatas de ACKs recebidas para y 21 if (numero de duplicatas de ACKS recebidas para y == 3) { 22 /* TCP fast retransmit */ 23 reenvia segmento com número de seqüência y 24 reinicia temporização para segmento y 25 } 26 } /* end of loop forever */ TCP: transferência confiável Transmissor TCP simplificado

Geração de ACK [RFC 1122, RFC 2581] Event0 segmento chega em ordem, não há lacunas, segmentos anteriores já aceitos um ACK atrasado pendente segmento chega fora de ordem número de seqüência chegou maior: gap detectado chegada de segmento que parcial ou completamente preenche o gap Ação do TCP Receptor ACK retardado. Espera até 500ms pelo próximo segmento. Se não chegar, envia ACK imediatamente envia um ACK cumulativo envia ACK duplicado, indicando número de seqüência do próximo byte esperado reconhece imediatamente se o segmento começa na borda inferior do gap

TCP: cenários de retransmissão Host A Host A Host B Host B Seq=92, 8 bytes data Seq=92, 8 bytes data Seq=100, 20 bytes data ACK=100 Seq=92 temp. temporização X ACK=100 Seq=100 temp. ACK=120 loss Seq=92, 8 bytes data Seq=92, 8 bytes data ACK=120 ACK=100 tempo tempo cenário com perda do ACK temporização prematura, ACKs cumulativos

armazenamento de recepção TCP: Controle de Fluxo controle de fluxo receptor: explicitamente informa o transmissor da área livre no buffer (dinamicamente mudando) campo RcvWindow no segmento TCP transmissor: mantém a quantidade de dados transmitidos mas não reconhecidos menor que o último RcvWindow recebido transmissor não deve esgotar os buffers de receção enviando dados rápido demais RcvBuffer = tamanho do Buffer de recepção do TCP RcvWindow = total de espaço livre no buffer armazenamento de recepção

TCP Round Trip Time e Temporização Q: como escolher o valor da temporização do TCP? maior que o RTT nota: RTT varia muito curto: temporização prematura retransmissões desnecessárias muito longo: a reação à perda de segmento fica lenta Q: Como estimar o RTT? SampleRTT: tempo medido da transmissão de um segmento até a respectiva confirmação ignora retransmissões e segmentos reconhecidos de forma cumulativa SampleRTT varia de forma rápida, é desejável um amortecedor para a estimativa do RTT usar várias medidas recentes, não apenas o último SampleRTT obtido

TCP Round Trip Time e Temporização EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT Média móvel com peso exponential influência de uma dada amostra decresce de forma exponencial valor típico de x: 0.1 Definindo a temporização EstimtedRTT mais “margem de segurança” grandes variações no EstimatedRTT -> maior margem de segurança Temporização = EstimatedRTT + 4*Desvios Desvios = (1-x)*Desvio + x*|SampleRTT-EstimatedRTT|

TCP Estabelecimento de Conexão TCP transmissor estabelece conexão com o receptor antes de trocar segmentos de dados initializar variáveis: números de seqüência buffers, controle de fluxo (ex. RcvWindow) cliente: iniciador da conexão Socket clientSocket = new Socket("hostname","port number"); servidor: chamado pelo cliente Socket connectionSocket = welcomeSocket.accept(); Three way handshake: Passo 1: sistema final cliente envia TCP SYN ao servidor especifica número de seqüência inicial Passo 2: sistema final servidor que recebe o SYN, responde com segmento SYNACK reconhece o SYN recebido aloca buffers especifica o número de seqüência inicial do servidor Passo 3: o sistema final cliente reconhece o SYNACK

TCP Término de Conexão Fechando uma conexão: cliente servidor Fechando uma conexão: cliente fecha o socket: clientSocket.close(); Passo 1: o cliente envia o segmento TCP FIN ao servidor Passo 2: servidor recebe FIN, responde com ACK. Fecha a conexão, envia FIN. close FIN ACK close FIN ACK espera temp. closed

TCP Término de Conexão Passo 3: cliente recebe FIN, responde com ACK. servidor Passo 3: cliente recebe FIN, responde com ACK. Entra “espera temporizada” - vai responder com ACK a FINs recebidos Passo 4: servidor, recebe ACK. Conexão fechada. closing FIN ACK closing FIN ACK espera temp. closed closed

TCP Controle de Conexão Estados do Servidor Estados do Cliente

Princípios de Controle de Congestionamento informalmente: “muitas fontes enviando dados acima da capacidade da rede de tratá-los” diferente de controle de fluxo! sintomas: perda de pacotes (saturação de buffer nos roteadores) atrasos grandes (filas nos buffers dos roteadores) um dos 10 problemas mais importantes na Internet!

Causas/custos do congestionamento: cenário 1 dois transmissores, dois receptores um roteador, buffers infinitos não há retransmissão grandes atrasos quando congestionado máxima vazão que pode ser obtida

Causas/custos do congestionamento: cenário 2 um roteador, buffers finitos transmissor reenvia pacotes perdidos

Causas/custos do congestionamento: cenário 2 l in out = sempre vale : (tráfego bom) “perfeita” retransmissão somente quando há perdas: retransmissão de pacotes atrasados (não perdidos) torna maior (que o caso perfeito ) para o mesmo l in out > l in l out “custos” do congestionamento: mais trabalho (retransmissões) para um dado “tráfego bom” retransmissões desnecessárias: enlace transporta várias cópias do mesmo pacote

Causas/custos do congestionamento: cenário 3 quatro transmissores caminhos com múltiplos saltos temporizações/retransmissões l in Q: o que acontece quando e aumentam ? l in

Causas/custos do congestionamento: cenário 3 Outro “custo” do congestionamento: quando pacote é descartado, qualquer capacidade de transmissão que tenha sido anteriormente usada para aquele pacote é desperdiçada!

Abordagens do problema de controle de congestionamento Existem duas abordagens gerais para o problema de controle de congestionamento: Controle de congestionamento fim-a-fim: não usa realimentação explícita da rede congestionamento é inferido a partir das perdas e dos atrasos observados nos sistemas finais abordagem usada pelo TCP Controle de congestionamento assistido pela rede: roteadores enviam informações para os sistemas finais bit único indicando o congestionamento (SNA, DECbit, TCP/IP ECN, ATM) taxa explícita do transmissor poderia ser enviada

Estudo de caso: controle de congestionamento do serviço ATM ABR ABR: available bit rate: “serviço elástico” se o caminho do transmissor está pouco usado: transmissor pode usar a banda disponível se o caminho do transmissor está congestionado: transmissor é limitado a uma taxa mínima garantida células RM (resource management) : enviadas pelo transmissor, entremeadas com as células de dados bits nas células RM são usados pelos comutadores (“assistida pela rede”) NI bit: não aumentar a taxa (congestionamento leve) CI bit: indicação de congestionamento as células RM são devolvidos ao transmissor pelo receptor, com os bits de indicaçaõ intactos

Estudo de caso: controle de congestionamento do serviço ATM ABR campo ER (explicit rate) de dois bytes nas células RM comutador congestionado pode reduzir o valor de ER nas células o transmissor envia dados de acordo com esta vazão mínima suportada no caminho bit EFCI nas células de dados: marcado como 1 pelos comutadores congestionados se a célula de dados que precede a célula RM tem o bit EFCI com valor 1, o receptor marca o bit CI na célula RM devolvida

TCP: Controle Congestionamento controle fim-a-fim (não há assistência da rede) taxa de transmissão é limitada pelo tamanho da janela, Congwin, sobre os segmentos: Congwin w segmentos, cada um com MSS bytes enviados em um RTT: vazão = w * MSS RTT Bytes/seg

TCP: Controle Congestionamento “teste” para reconhecer a taxa possível: idealmente: transmitir tão rápido quanto possível (Congwin tão grande quanto possível) sem perdas aumentar Congwin até que ocorra perda (congestionamento) perda: diminuir Congwin, então ir testando (aumentando) outra vez duas “fases”” slow start congestion avoidance variáveis importantes: Congwin threshold: define o limite entre a fase slow start e a fase congestion avoidance

TCP Slowstart algoritmo Slowstart Congwin++ Host A Host B algoritmo Slowstart one segment initializar: Congwin = 1 para (cada segmento reconhecido Congwin++ até (evento perda OU CongWin > threshold) RTT two segments four segments aumento exponencial (por RTT) no tamanho da janela (não tão lento!) evento de perda : temporização (Tahoe TCP) e/ou 3 ACKs duplicados (Reno TCP) tempo

TCP: Congestion Avoidance /* acabou slowstart */ /* Congwin > threshold */ Até (evento perda) { cada w segmentos reconhecidos: Congwin++ } threshold = Congwin/2 Congwin = 1 realiza slowstart 1 1: TCP Reno pula a fase slowstart (recuperaçaõ rápida) após três ACKs duplicados

gargalo de capacidade R AIMD TCP Eqüidade TCP congestion avoidance: AIMD: aumento aditivo, redução multiplicativa aumenta a janela de 1 a cada RTT diminui a janela por um fator de 2 em caso de evento perda Objetivo: se N sessões TCP devem passar pelo mesmo gargalo, cada uma deve obter 1/N da capacidade do enlace conexão TCP 1 roteador com gargalo de capacidade R conexão TCP 2

Porque o TCP é justo? Duas sessões competindo pela banda: O aumento aditivo fornece uma inclinação de 1, quando a vazão aumenta redução multiplicativa diminui a vazão proporcionalmente R divisão igual da banda perda: reduz janela por um fato de 2 congestion avoidance: aumento aditivo Vazão da Conexão 1 perda: reduz janela por um fator de 2 congestion avoidance: aumento aditivo Vazão da Conexão 2 R

TCP: modelagem da latência Q: Quanto tempo demora para receber um objeto de um servidor Web após enviar um pedido? estabelecimento de conexão TCP atraso de transferência de dados Notação, hipóteses: Assuma um enlace entre o cliente e o servidor com taxa de dados R Assuma: janela de congestionamento fixa, W segmentos S: MSS (bits) O: tamanho do objeto (bits) não há retransmissões (sem perdas e corrupção de dados) Dois casos a considerar: WS/R > RTT + S/R: ACK para o primeiro segmento retorna antes de se esgotar a janela de transmissão de dados WS/R < RTT + S/R: espera pelo depois de esgotar a janela de transmissão de dados

TCP: modelagem da latência K:= O/WS Caso 1: latência = 2RTT + O/R Caso 2: latência = 2RTT + O/R + (K-1)[S/R + RTT - WS/R]

TCP Modelagem de Latência: Slow Start Agora suponha que a janela cresce de acordo com os procedimentos da fase slow start. Vamos mostrar que a latência de um objeto de tamanho O é: onde P é o número de vezes que o TCP fica bloqueado no servidor: - onde Q é o número de vezes que o servidor ficaria bloqueado se o objeto fosse de tamanho infinito. - e K é o número de janelas que cobrem o objeto.

TCP Modelagem de Latência: Slow Start (cont.) RTT inicia conexão TCP pede objeto primeira janela = S/R segunda janela = 2S/R terceira janela = 4S/R quarta janela = 8S/R transmissão completa entregue tempo no cliente servidor Exemplo: O/S = 15 segmentos K = 4 janelas Q = 2 P = min{K-1,Q} = 2 Servidor bloqueado P=2 times.

TCP Modelagem de Latência: Slow Start (cont.) + RTT = tempo quando o servidor inicia o envio do segmento R até quando o servidor recebe reconhecimento RTT inicia conexão TCP pede objeto primeira janela = S/R segunda janela = 2S/R terceira janela = 4S/R quarta janela = 8S/R transmissão completa entregue tempo no cliente servidor S 2 k - 1 = tempo para enviar a k-ésima janela R é + S S ù tempo de bloqueio após a k-ésima janela + RTT - 2 k - 1 = ê ú ë R R û O P latencia = + å 2 RTT + TempoBloqueio R p p = 1 O P å S S = + 2 RTT + [ + RTT - 2 k - 1 ] R R R k = 1 O S S = + 2 RTT + P [ RTT + ] - ( 2 P - 1 ) R R R

Capítulo 3: Resumo princípios por trás dos serviços da camada de transporte: multiplexação/demultiplexação transferência de dados confiável controle de fluxo controle de congestionamento instanciação e implementação na UDP TCP A seguir: saímos da “borda” da rede (camadas de aplicação e de transporte) vamos para o “núcleo” da rede