Capítulo 3: Camada de Transporte

Slides:



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

Transmissão de pacotes
TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 ponto a ponto:
Missão da camada de enlace Serviços oferecidos TCP UDP
Capítulo 3: Camada de Transporte
Família tcp/ip Prof: Diovani Milhorim
Bruno Rafael de Oliveira Rodrigues
Redes I Os Protocolos Prof. Dr. Amine BERQIA
TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 Ponto-a-ponto:
FEUPDEECRedes de Computadores, 4º Ano de EEC, ramo de ACI TCP (Transmission Control Protocol) Abril, 98Isidro Vila Verde 1 Aspectos Gerais.
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
Interação Cliente Servidor
TCP Serviço de Transporte Confiável
TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 ponto-a-ponto:
Camada de Transporte Teleprocessamento e Redes
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/
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)
CCNA 1 – Camadas de Transporte e de Aplicação do TCP/IP
Escola Secundária Filipa de Vilhena Ano Lectivo 2010/ Turma IGR1
Modelo de referência OSI
Interconexão e Transporte em Redes
URI - Santo Ângelo - DECC
Comparação entre as camadas
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.
Aula 2 Arquitetura & Protocolos
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.
TCP Conexão Fiabilidade Full Duplex Entrega ordenada Controlo de fluxo
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
Arquitectura tcp. Camada tcp Ao contrário do protocolo UDP, o TCP representa um grande incremento de qualidade relativamente ao protocolo IP que lhe serve.
1) A camada de transporte provê comunicação lógica entre hosts.
TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 ponto-a-ponto:
Redes de computadores: Camada de Transporte Prof. Dr. Amine BERQIA
Arquitetura TCP/IP Aplicação Transporte Rede Enlace Física.
Escola Politécnica da USP abril de 2013 PTC 2550 – Redes de Comunicação De Dados e P1 Transporte Multimídia PTC 2550 – Redes de Comunicação De Dados e.
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
Arquitetura em Camadas
© 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.
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.
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:

Capítulo 3: Camada de Transporte Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: multiplexação/ desmultiplexação transferência confiável de dados controle de fluxo controle de congestionamento instanciação e implementação na Internet Sumário do Capítulo: serviços da camada de transporte multiplexação/desmultiplexação transporte sem conexão: UDP transporte orientado a conexão: TCP transferência confiável controle de fluxo gerenciamento de conexões controle de congestionamento em TCP 3: Camada de Transporte

Serviços e protocolos de transporte aplicação transporte rede enlace física transporte lógico fim a fim 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 3: Camada de Transporte

Protocolos da camada de transporte aplicação transporte rede enlace física transporte lógico fim a fim 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 serviços não disponíveis: tempo-real garantias de banda multiponto confiável 3: Camada de Transporte

Multiplexação/desmultiplexação Lembrança: segmento - unidade de dados trocada entre entidades da camada de transporte = TPDU: transport protocol data unit Desmultiplexação: entrega de segmentos recebidos para os processos da camada de apl corretos receptor P3 P4 dados da camada de aplicação M M aplicação transporte rede cabeçalho de segmento P1 P2 M M aplicação transporte rede aplicação transporte rede segmento H t M H n segmento 3: Camada de Transporte

Multiplexação/desmultiplexação juntar dados de múltiplos processos de apl, envelopando dados com cabeçalho (usado depois para desmultiplexação) porta remetente porta receptor 32 bits dados da aplicação (mensagem) outros campos do cabeçalho multiplexação/desmultiplexação: baseadas em números de porta e endereços IP de remetente e receptor números de porta de remetente/receptor em cada segmento lembrete: número de porta bem conhecido para aplicações específicas formato de segmento TCP/UDP 3: Camada de Transporte

Multiplexação/desmultiplexação: exemplos estação A porta orig.: x porta dest: 23 servidor B Web client host C porta orig:23 porta dest: x IP orig : C IP dest: B porta orig: y porta dest: 80 IP orig: C IP dest: B porta orig: x porta dest: 80 uso de portas: apl. simples de telnet IP orig: A IP dest: B porta orig: x porta dest: 80 servidor WWW B cliente WWW estação A uso de portas : servidor WWW 3: Camada de Transporte

UDP: User Datagram Protocol [RFC 768] 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 remesso sem conexão: não há “setup” UDP entre remetente, receptor tratamento independente de cada segmento UDP Por quê 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 3: Camada de Transporte

Mais sobre UDP outros usos de UDP (por quê?): Comprimento em bytes do segmento UDP, incluindo cabeçalho muito utilizado para apls. de meios contínuos (voz, vídeo) tolerantes de perdas sensíveis à taxa de transmissão outros usos de UDP (por quê?): DNS (nomes) SNMP (gerenciamento) transferência confiável com UDP: incluir confiabilidade na camada de aplicação recuperação de erro específica à apl.! 32 bits porta origem porta dest. comprimento checksum Dados de aplicação (mensagem) UDP segment format 3: Camada de Transporte

Checksum UDP Meta: detecta “erro” (e.g., bits invertidos) no segmento transmitido Remetente: trata conteúdo do segmento como sequência de inteiros de 16-bits campo checksum zerado checksum: soma (adição usando complemento de 1) do conteúdo do segmento remetente coloca complemento do valor da soma no campo checksum de UDP Receiver: computa checksum do segmento recebido verifica se checksum computado é zero: NÃO - erro detectado SIM - nenhum erro detectado. Mas ainda pode ter erros? Veja depois …. 3: Camada de Transporte

TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 ponto a ponto: 1 remetente, 1 receptor fluxo de bytes, ordenados, confiável: não estruturado em msgs dutado: tam. da janela ajustado por controle de fluxo e congestionamento do TCP buffers de envio e recepção transmissão full duplex: fluxo de dados bi-direcional na mesma conexão MSS: tamanho máximo de segmento orientado a conexão: handshaking (troca de msgs de controle) inicia estado de remetente, receptor antes de trocar dados fluxo controlado: receptor não será afogado 3: Camada de Transporte

TCP: estrutura do segmento no. porta origem no. porta dest 32 bits dados da aplicação (tam. variável) número de seqüência número de reconhecimento janela receptor ptr dados urg. checksum F S R P A U tam. cab. sem uso Opções (tam. variável) URG: dados urgentes (pouco usados) contagem de dados por bytes (não segmentos!) ACK: no. ACK válido PSH: envia dados já (pouco usado) no. bytes rcpt quer aceitar RST, SYN, FIN: gestão de conexão (comandos de estabelecimento, liberação) checksum Internet (como UDP) 3: Camada de Transporte

cenário simples de telnet TCP: nos. de seq. e ACKs Nos. de seq.: “número”dentro do fluxo de bytes do primeiro byte de dados do segmento ACKs: no. de seq do próx. byte esperado do outro lado ACK cumulativo P: como receptor trata segmentos fora da ordem? R: espec do TCP omissa - deixado ao implementador Estação A Estação B Usuário tecla ‘C’ Seq=42, ACK=79, data = ‘C’ B reconhece chegada de ‘C’, ecoa ‘C’ de volta Seq=79, ACK=43, data = ‘C’ A reconhece chegada do ‘C’ ecoado Seq=43, ACK=80 tempo cenário simples de telnet 3: Camada de Transporte

TCP: transferência confiável de dados event: data received from application above remetente simplificado, supondo: create, send segment fluxo de dados uni-direcional sem controle de fluxo, congestionamento wait for event wait for event event: timer timeout for segment with seq # y retransmit segment event: ACK received, with ACK # y ACK processing 3: Camada de Transporte

TCP: transfer-ência confiável de dados 00 sendbase = número de seqüência inicial 01 nextseqnum = número de seqüência inicial 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 para IP 09 nextseqnum = nextseqnum + comprimento(dados) 10 event: expirado temporizador de segmento c/ no. de seqüência y 11 retransmite segmento com número de seqüência y 12 computa novo intervalo de temporização para segmento y 13 reinicia temporizador para número de seqüência y 14 event: ACK recebido, com valor de campo ACK de y 15 se (y > sendbase) { /* ACK cumulativo de todos dados até y */ 16 cancela temporizadores p/ segmentos c/ nos. de seqüência < y 17 sendbase = y 18 } 19 senão { /* é ACK duplicado para segmento já reconhecido */ 20 incrementa número de ACKs duplicados recebidos para y 21 if (número de ACKs duplicados recebidos para y == 3) { 22 /* TCP: retransmissão rápida */ 23 reenvia segmento com número de seqüência y 24 reinicia temporizador para número de seqüência y 25 } 26 } /* fim de loop forever */ TCP: transfer-ência confiável de dados Remetente TCP simplificado 3: Camada de Transporte

TCP geração de ACKs [RFCs 1122, 2581] Evento chegada de segmento em ordem sem lacunas, anteriores já reconhecidos um ACK retardado pendente chegada de segmento fora de ordem, com no. de seq. maior que esperado -> lacuna chegada de segmento que preenche a lacuna parcial ou completamente Ação do receptor TCP ACK retardado. Espera até 500ms p/ próx. segmento. Se não chegar segmento, envia ACK envia imediatamente um único ACK cumulativo envia ACK duplicado, indicando no. de seq.do próximo byte esperado ACK imediato se segmento no início da lacuna 3: Camada de Transporte

TCP: cenários de retransmissão Host A Estação A Estação B Host B Seq=92, 8 bytes de dados Seq=92, 8 bytes de dados Seq=100, 20 bytes de dados ACK=100 Temp.p/ Seq=92 temporização X ACK=100 Temp. p/ Seq=100 ACK=120 perda Seq=92, 8 bytes de dados Seq=92, 8 bytes de dados ACK=120 ACK=100 tempo tempo cenário do ACK perdido temporização prematura, ACKs cumulativos 3: Camada de Transporte

TCP: Controle de Fluxo controle de fluxo receptor: explicitamente avisa o remetente da quantidade de espaço livre disponível (muda dinamicamente) campo RcvWindow 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 remetente não esgotaria buffers do receptor por transmitir muito, ou muito rápidamente RcvBuffer = tamanho do Buffer de recepção RcvWindow = espaço vazio no Buffer buffering pelo receptor 3: Camada de Transporte

TCP: Tempo de Resposta (RTT) e Temporização P: como escolher valor do temporizador TCP? maior que o RTT note: RTT pode variar muito curto: temporização prematura retransmissões são desnecessárias muito longo: reação demorada à perda de segmentos P: como estimar RTT? RTTamostra: tempo medido entre a transmissão do segmento e o recebimento do ACK correspondente ignora retransmissões, segmentos com ACKs cumulativos RTTamostra vai variar, queremos “amaciador” de RTT estimado usa várias medições recentes, não apenas o valor corrente (RTTamostra) 3: Camada de Transporte

TCP: Tempo de Resposta (RTT) e Temporização RTT_estimado = (1-x)* RTT_estimado + x*RTT_amostra média corrente exponencialmente ponderada influência de cada amostra diminui exponencialmente com o tempo valor típico de x: 0.1 Escolhendo o intervalo de temporização RTT_estimado mais uma “margem de segurança” variação grande em RTT_estimado -> margem de segurança maior Temporização = RTT_estimado + 4*Desvio Desvio = (1-x)* Desvio + x*|RTT_amostra - RTT_estimado| 3: Camada de Transporte

TCP: Gerenciamento de Conexões Lembrete: Remetente, receptor TCP estabelecem “conexão” antes de trocar segmentos de dados inicializam variáveis TCP: nos. de seq. buffers, info s/ controle de fluxo (p.ex. RcvWindow) cliente: iniciador de conexão Socket clientSocket = new Socket("hostname","port number"); servidor: contactado por cliente Socket connectionSocket = welcomeSocket.accept(); Inicialização em 3 tempos: Passo 1: sistema cliente envia segmento de controle SYN do TCP ao servidor especifica no. inicial de seq Passo 2: sistema servidor recebe SYN, responde com segmento de controle SYNACK reconhece SYN recebido aloca buffers especifica no. inicial de seq. servidor-> receptor 3: Camada de Transporte

TCP: Gerenciamento de Conexões (cont.) Encerrando uma conexão: cliente fecha soquete: 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. cliente servidor fechar FIN ACK fechar FIN ACK espera temporizada fechada 3: Camada de Transporte

TCP: Gerenciamento de Conexões (cont.) Passo 3: cliente recebe FIN, responde com ACK. Entre em “espera temporizada” - responderá com ACK a FINs recebidos Step 4: servidor, recebe ACK. Conexão encerrada. Note: com pequena modificação, consegue tratar de FINs simultâneos. cliente servidor fechando FIN ACK fechando FIN ACK espera temporizada fechada fechada 3: Camada de Transporte

TCP Connection Management (cont) Ciclo de vida de servidor TCP Ciclo de vida de cliente TCP 3: Camada de Transporte

TCP: Controle de Congestionamento controle fim a fim (sem apoio da rede) taxa de transmissão limitada pela tamanho da janela de congestionamento, Congwin: Congwin w segmentos, cada um c/ MSS bytes, enviados por RTT: vazão = w * MSS RTT Bytes/seg 3: Camada de Transporte

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 3: Camada de Transporte

TCP: Partida lenta Algoritmo Partida Lenta initializa: Congwin = 1 Estação A Estação B Algoritmo Partida Lenta um segmento initializa: Congwin = 1 for (cada segmento c/ ACK) Congwin++ until (evento de perda OR CongWin > threshold) RTT dois segmentos quqtro segmentos aumento exponencial (por RTT) no tamanho da janela (não muito lenta!) evento de perda: temporizador (Tahoe TCP) e/ou três ACKs duplicados (Reno TCP) tempo 3: Camada de Transporte

TCP: Evitar Congestionamento /* partida lenta acabou */ /* Congwin > threshold */ Until (event de perda) { cada w segmentos reconhecidos: Congwin++ } threshold = Congwin/2 Congwin = 1 faça partida lenta 1 1: TCP Reno pula partida lenta (recuperação rápida) depois de três ACKs duplicados 3: Camada de Transporte

AADM Justeza do TCP TCP congestion avoidance: AADM: aumento aditivo, decremento multiplicativo aumenta janela em 1 por cada RTT diminui janela por fator de 2 num evento de perda Meta de justeza: se N sessões TCP compartilham o mesmo enlace de gargalo, cada uma deve ganhar 1/N da capacidade do enlace TCP conexão 1 Roteador gargalo capacidade R TCP conexão 2 3: Camada de Transporte

Por quê TCP é justo? Duas sessões concorrentes: Aumento aditivo dá gradiente de 1, enquanto vazão aumenta decrementa multiplicativa diminui vazão proporcionalmente R compartilhamento igual da banda perda: diminui janela por fator de 2 evitar congestionamento: aumento aditivo Vazão da conexão 2 perda: diminui janela por fator de 2 evitar congestionamento: aumento aditivo Vazão da conexão 1 R 3: Camada de Transporte

Capítulo 3: Sumário Princípios atrás dos serviços da camada de transporte: multiplexação/ desmultiplexação transferência confiável de dados controle de fluxo controle de congestionamento instanciação e implementação na Internet UDP TCP Próximo capítulo: saímos da “borda” da rede (camadas de aplicação e transporte) entramos no “núcleo”da rede 3: Camada de Transporte