Universidade Federal de Minas Gerais Departamento de Ciência da Computação

Documentos relacionados
Capítulo 3: Camada de Transporte. Multiplexação/desmultiplexação. Serviços e protocolos de transporte. Antônio Abelém abelem@ufpa.

Redes de computadores e a Internet. Capítulo 3. Camada de transporte

Camada de transporte. Camada de transporte

Redes de Computadores

Redes de Computadores

Serviços e Protocolos de Transporte

Camada de Transporte. Protocolos TCP e UDP

Sistemas Distribuídos

Fundamentos de Redes e Sistemas Distribuídos Aula 03 Camadas

Redes de Computadores

Redes de Computadores

Redes de Computadores

Redes de computadores e a Internet. Capítulo3. Camada de transporte

Curso de Redes de Computadores 2010

Camada de Transporte. Serviços de Transporte. Desempenho em Protocolos de Transporte. Aprender sobre protocolos de transporte na Internet

Slides e Notas de Aula. Adriano Mauro Cansian. adriano@ieee.org

PROJETO DE REDES

Redes de Computadores. Camada de Transporte de Dados: protocolos TCP e UDP Prof. MSc Hugo Vieira L. Souza

Experiência 04: Comandos para testes e identificação do computador na rede.

Capítulo 7 CAMADA DE TRANSPORTE

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Redes de Computadores

Redes de Computadores. Camada de Transporte

Redes de Computadores

Camada de Transporte, protocolos TCP e UDP

REDES DE COMPUTADORES Camada de Transporte. Alexandre Augusto Giron

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Redes de Computadores. Trabalho de Laboratório Nº7

Camada de Transporte. Prof. Leonardo Barreto Campos

CAMADA DE TRANSPORTE

1. PRINCIPAIS PROTOCOLOS TCP/IP

Capítulo 11 - Camada de Transporte TCP/IP e de Aplicação. Associação dos Instrutores NetAcademy - Julho de Página

A Camada de Transporte

Redes de Computadores Aula 6

6 de Julho de Exercício 23 Para que servem portas na camada de transporte?

REDES DE COMPUTADORES

Programação TCP/IP. Protocolos TCP e UDP

Um pouco sobre Pacotes e sobre os protocolos de Transporte

Capítulo 3 Camada de transporte

Introdução. Modelo de um Sistema de Comunicação

Capítulo 3: Camada de Transporte

CCNA 2 Conceitos Básicos de Roteadores e Roteamento

A camada de Enlace. Serviços e Protocolos

Redes de Computadores

TCP - multiplexação/demultiplexação

Jones Bunilha Radtke. Tarefas:

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores

Introdução à Redes de Computadores

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

UDESC SISTEMAS MULTIMÍDIA. Capítulo 4 Redes IP e o Transporte de Dados Multimídia. Prof. Claudinei Dias. Sistemas Multimídia 2011/2

Fundamentos de Redes. Protocolos de Transporte. Djamel Sadok Dênio Mariz.

Exercícios de Revisão Redes de Computadores Edgard Jamhour. Segundo Bimestre

Teleprocessamento e Redes

Gerenciamento de Redes: Protocolo SNMP

Redes de Computadores II

Curso: Sistemas de Informação Disciplina: Redes de Computadores Prof. Sergio Estrela Martins

Fornecer serviços independentes da tecnologia da subrede; Esconder do nível de transporte o número, tipo e a topologia das subredes existentes;

Transporte. Sua função é: Promover uma transferência de dados confiável e econômica entre máquina de origem e máquina de destino.

Redes de Computadores. Protocolos de comunicação: TCP, UDP

4. Protocolos Teóricos e Protocolos de Controlo de Ligação Protocolos ARQ; Especificação de Protocolos; Eficiência ARQ.

Qualidade em Servicos de Rede Prof. Eduardo Maronas Monks Roteiro de Laboratorio Camada de Transporte Parte II

Tecnologia de Redes de Computadores

Camada de Transporte TCP/IP e Aplicação

Camada de Transporte. BCC361 Redes de Computadores Universidade Federal de Ouro Preto Departamento de Ciência da Computação

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Camada de Transporte. Agenda. Tópicos. Serviços oferecidos... O serviço de transporte

Camada de transporte. Serviços

Tópicos em Sistemas Distribuídos. Modelos de Comunicação

Protocolo TCP/IP. Protocolo TCP/IP. Protocolo TCP/IP. Protocolo TCP/IP. Conexão de Redes. Protocolo TCP/IP. Arquitetura Internet.

Servidores de impressão HP Jetdirect

Implementação de um serviço de correio eletrônico na Intranet do Pólo de Touros utilizando o ambiente SQUIRELMAIL e POSTFIX em um Servidor Linux

Tecnologias de Redes Informáticas (6620)

Exercícios de Revisão Redes de Computadores Edgard Jamhour. SSL, VPN PPTP e IPsec

Redes de Computadores

Protocolos de Redes Revisão para AV I

UFSM-CTISM. Comunicação de Dados Aula-02

Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

MÓDULO 2 Topologias de Redes

Banco de Dados I. Prof. Edson Thizon

CONTROLE DE FLUXO. Redes de Computadores

Cap. 3 O nível de transporte

Trabalho Prático 1 P2P-SDIS

REDES DE COMPUTADORES

1. Capturando uma transferência TCP em massa de seu computador para um computador servidor remoto

Controle de Congestionamento em TCP Parte 2. Prof. Dr. S. Motoyama

Universidade Federal de Pernambuco Mestrado em Ciência da Computação

Capítulo 7 CAMADA DE TRANSPORTE

Informática I. Aula Aula 22-03/07/06 1

Camada de Transporte

PEL/FEN Redes de Computadores 2015/1 Primeira Lista de Exercícios Prof. Marcelo Gonçalves Rubinstein

Fundamentos de Programação. Diagrama de blocos

UNIVERSIDADE. Sistemas Distribuídos

Transcrição:

Redes de Computadores Camada de Transporte Capítulo 3 Kurose & Ross Prof: José Marcos Silva Nogueira Universidade Federal de Minas Gerais Departamento de Ciência da Computação Belo Horizonte - 2006 Capítulo 3: Camada de Transporte Objetivos do Capítulo: entender os 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 Internet

Camada de Transporte Resumo do Capítulo: 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 à conexão: TCP transferência confiável controle de fluxo gerenciamento de conexão princípios de controle de congestionamento controle de congestionamento do TCP Protocolos e Serviços de Transporte Fornecem comunicação lógica entre processos de aplicação em diferentes hosts Os protocolos de transporte são executados nos sistemas finais da serviço de transporte vs serviços de : camada de : transferência de dados entre computadores (end systems) camada de transporte: transferência de dados entre processos utiliza e aprimora os serviços oferecidos pela camada de aplicação transporte ee transporte lógico fim-a-fim aplicação transporte

Protocolos da Camada de Transporte Serviços de Transporte da Internet: confiável, seqüencial e unicast (TCP) congestionamento controle de fluxo orientado à conexão não confiável ( best-effort ), não seqüencial, entrega unicast or multicast : UDP serviços não disponíveis: tempo-real garantia de banda multicast confiável application transporte transporte lógico fim-a-fim application transporte Multiplexação de Aplicações Segmento - unidade de dados trocada entre entidades da camada de transporte TPDU: transport protocol data unit (unidade de dados do protocolo de transporte) dados da camada de aplicação cabeçalho do segmento segmento Ht M Hn segmento P1 M aplicação transporte P3 Demultiplexação: entrega de segmentos recebidos aos processos de aplicação corretos receptor M M aplicação transporte P4 M P2 aplicação transporte

Multiplexação: Multiplexação de Aplicações reunir dados de múltiplos processos de aplicação, juntar cabeçalhos com informações para demultiplexação multiplexação/demultiplexação: baseada no número de porta do transmissor, número de porta do receptor e endereços IP números de porta origem e destino em cada segmento lembre: portas com números bem-conhecidos são usadas para aplicações específicas Multiplexação de Aplicações 32 bits Formato do segmento TCP/UDP porta origem porta destino outros campos de cabeçalho dados de aplicação (mensagem)

Multiplexação: exemplos Aplicação Telnet host A porta origem: x porta dest.: 23 servidor B porta origem:23 port dest.: x Multiplexação: exemplos Aplicação: servidor Web cliente Web host C IP Origem: C IP Dest: B porta origem: y porta dest.: 80 IP Origem: C IP Dest: B porta origem: x porta dest.: 80 cliente Web host A IP Origem: A IP Dest: B porta origem : x porta dest.: 80 Servidor Web B

UDP: User Datagram Protocol [RFC 768] protocolo de transporte da Internet sem gorduras sem frescuras serviço best effort, segmentos UDP podem ser: perdidos entregues fora de ordem para a aplicação sem conexão: não há apresentação entre o UDP transmissor e o receptor cada segmento UDP é tratado de forma independente dos outros UDP: User Datagram Protocol [RFC 768] Porque existe um UDP? não há estabelecimento de conexão (que pode redundar em atrasos) simples: não há estado de conexão nem no transmissor, nem no receptor cabeçalho de segmento reduzido não há controle de congestionamento: UDP pode enviar segmentos tão rápido quanto desejado (e possível)

Mais sobre UDP Muito usado por aplicações de multimídia contínua (streaming) tolerantes à perda sensíveis à taxa Outros usos do UDP (porque?): DNS SNMP transferência confiável sobre UDP: acrescentar confiabilidade na camada de aplicação recuperação de erro específica de cada aplicação Mais sobre UDP 32 bits Tamanho, em bytes do segmento UDP, incluindo cabeçalho porta origem tamanho porta destino checksum Dados de Aplicação (mensagem) formatodosegmentoudp

UDP checksum Objetivo: detectar erros (ex.,bits trocados) no segmento transmitido Transmissor: trata o conteúdo do segmento como seqüencia de inteiros de 16 bits checksum: soma (complemento de 1 da soma) do conteúdo do segmento transmissor coloca o valor do checksum no campo de checksum do UDP Receptor: computa o checksum do segmento recebido verifica se o checksum calculado é igual ao valor do campo checksum: NÃO - erro detectado SIM - não há erros. Mas, talvez haja erros apesar disto? Mais depois. Princípios de Transferência Confiável de Dados Importante nas camadas de aplicação, transporte e Top-10 na lista dos tópicos mais importants de s! Características dos canais não confiáveis determinarão a complexidade dos protocolos confiáveis de transferência de dados (rdt)

Princípios de Transferência Confiável Modelo de serviço e implementação de serviço características dos canais não confiáveis determinarão a complexidade dos protocolos confiáveis de transferência de dados (rdt)

Transferência confiável: o ponto de partida rdt_send(): chamada da camada superior, (ex., pela aplicação). Passa dados para entregar à camada superior receptora deliver_data(): chamada pela entidade de transporte para entregar dados para cima lado transmissor lado receptor udt_send(): chamada pela entidade de transporte, para transferir pacotes para o receptor sobre o canal não confiável rdt_rcv(): chamada quando o pacote chega ao lado receptor do canal Transferência confiável: o ponto de partida Etapas: desenvolver incrementalmente o transmissor e o receptor de um protocolo confiável de transferência de dados (rdt) considerar apenas transferências de dados unidirecionais mas informação de controle deve fluir em ambas as direções! usar máquinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

Transferência confiável: o ponto de partida Máquinas de estados finitos (FSM) evento causando transição de estados ações tomadas na transição de estado estado 1 evento ações estado 2 estado: quando neste estado o próximo estado fica unicamente determinado pelo próximo evento Rdt1.0: transferência confiável sobre canais confiáveis canal de transmissão perfeitamente confiável não há erros de bits não há perdas de pacotes FSMs separadas para transmissor e receptor: transmissor envia dados para o canal subjacente receptor lê os dados do canal subjacente

Rdt2.0: canal com erros de bit canal subjacente pode trocar valores dos bits num pacote lembrete: checksum do UDP pode detectar erros de bits a questão: como recuperar esses erros: reconhecimentos (ACKs): receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs): receptor avisa explicitamente ao transmissor que o pacote tem erros transmissor reenvia o pacote quando da recepção de um NAK cenários humanos usando ACKs, NAKs? novos mecanismos no rdt2.0 (além do rdt1.0): deteção de erros retorno do receptor: mensagens de controle (ACK,NAK) rcvr->sender rdt2.0: especificação da FSM FSM do transmissor FSM do receptor

rdt2.0: em ação (ausência de erros) FSM do transmissor FSM do receptor rdt2.0: em ação (cenário com erros) FSM do transmissor FSM do receptor

rdt2.0 tem um problema fatal! O que acontece se o ACK/NAK é corrompido? O transmissor não sabe o que aconteceu no receptor! Ele não pode apenas retransmitir: possível duplicata O que fazer? O transmissor envia ACKs/NAKs para reconhecer os ACK/NAK do receptor? O que acontece se estes ACK/NAK se perdem? Retransmitir os ACK/NAK, mas isto poderia causar a retransmissão de um pacote recebido corretamente! rdt2.0 tem um problema fatal! Tratando duplicatas: O transmissor acrescenta número de seqüência em cada pacote O transmissor reenvia o último pacote se ACK/NAK for perdido O receptor descarta (não passa para a aplicação) pacotes duplicados stop and wait Transmissor envia um pacote e então espera pela resposta do receptor

rdt2.1: Lado transmissor Trata ACK/NAKs perdidos rdt2.1: Lado receptor Trata ACK/NAKs perdidos

rdt2.1: Discussão Transmissor: adiciona número de seqüência ao pacote Dois números (0 e 1) bastam. Porque? deve verificar se os ACK/NAK recebidos estão corrompidos duas vezes o número de estados o estado deve lembrar se o pacote corrente tem número de seqüência 0 ou 1 Receptor: deve verificar se o pacote recebido é duplicado estado indica se o pacote 0 ou 1 é esperado nota: receptor pode não saber se seu últino ACK/NAK foi recebido pelo transmissor rdt2.2: Um protocolo sem NAK A mesma funcionalidade do rdt2.1, usando somente ACKs Ao invés de enviar NAK, o receptor envia ACK para o último pacote recebido sem erro receptor deve incluir explicitamente o número de seqüência do pacote sendo reconhecido ACKs duplicados no transmissor resultam na mesma ação do NAK: retransmissão do pacote corrente

rdt2.2: Um protocolo sem NAK FSM do transmissor! rdt3.0: Canais com erros e perdas Nova Hipótese: canal de transmissão pode também perder pacotes (dados ou ACKs) checksum, números de seqüência, ACKs, retransmissões serão de ajuda, mas não o bastante Q: como tratar as perdas? transmissor espera até que certos dados ou ACKs sejam perdidos, então retransmite problemas? Abordagem: transmissor espera um tempo razoável pelo ACK retransmite se nenhum ACK for recebido neste tempo se o pacote (ou ACK) estiver apenas atrasado (não perdido): retransmissão será duplicata, mas os números de seqüência já tratam com isso receptor deve especificar o número de seqüência do pacote sendo reconhecido exige um temporizador decrescente

rdt3.0: Canais com erros e perdas rdt3.0 sender rdt3.0 em ação (a) operação sem perda (b) pacote perdido

rdt3.0 em ação (c) ACK perdido (d) timeout prematuro Desempenho do rdt3.0 O rdt3.0 funciona, mas apresenta problema de desempenho Exemplo: de 1 Gbps, 15 ms de atraso de propagação, pacotes de 1KB: transmissão = 8kb/pct 10**9 b/seg fração do tempo Utilização = U = = transmissor ocupado = 8 µs 8 µs 30,016 ms = 0.00015 Um pacote de 1KB cada 30 ms -> 33kB/seg de vazão sobre um canal de 1 Gbps O protocolo limita o uso dos recursos físicos! Há solução para isso?

Protocolos com Paralelismo (pipelining) Paralelismo: transmissor envia vários pacotes ao mesmo tempo, todos esperando para serem reconhecidos faixa de números de seqüência deve ser aumentada armazenamento no transmissor e/ou no receptor (a) operação do protocolo stop-and-wait (a) operação do protocolo com paralelismo Duas formas genéricas de protocolos com paralelismo: go- Back-N, retransmissão seletiva Go-Back-N ou Volta N Transmissor: Número de seqüência com k bits no cabeçalho do pacote janela de até N, pacotes não reconhecidos, consecutivos, são permitidos

Go-Back-N ou Volta N Transmissor: ACK(n): reconhece todos os pacotes até o número de seqüência N (incluindo este limite). ACK cumulativo pode receber ACKS duplicados (veja receptor) Um temporizador para cada pacote enviado e não confirmado timeout(n): retransmite pacote n e todos os pacotes com número de seqüência maior que estejam dentro da janela Go Back N: FSM estendida para o transmissor

GBN: FSM estendida para o receptor receptor simples: Somente ACK: sempre envia ACK para pacotes corretamente recebidos com o mais alto número de seqüência em ordem pode gerar ACKs duplicados precisa lembrar apenas do número de seqüência esperado (expectedseqnum) Pacotes fora de ordem: descarte (não armazena) -> não há buffer de recepção! reconhece pacote com o mais alto número de seqüência em ordem Go Back N em ação

Retransmissão Seletiva O receptor reconhece individualmente todos os pacotes recebidos corretamente armazena pacotes, quando necessário, para eventual entrega em ordem para a camada superior O transmissor somente reenvia os pacotes para os quais um ACK não foi recebido transmissor temporiza cada pacote não reconhecido Janela de transmissão N números de seqüência consecutivos novamente limita a quantidade de pacotes enviados, mas não reconhecidos Retransmissão seletiva: janelas do transmissor e do receptor (a) visão dos números de seqüência pelo transmissor (b) visão dos números de seqüência pelo receptor

Retransmissão seletiva transmissor dados da camada superior : se o próximo número de seqüência disponível está na janela, envia o pacote timeout(n): reenvia pacote n, restart timer ACK(n) em [sendbase,sendbase+n]: marca pacote n como recebido se n é o menor pacote não reconhecido, avança a base da janela para o próximo número de seqüência não reconhecido receptor pacote n em [rcvbase, rcvbase+n-1] envia ACK(n) fora de ordem: armazena em ordem: entrega (também entrega pacotes armazenados em ordem), avança janela para o próximo pacote ainda não recebido pkt n em [rcvbase-n,rcvbase-1] ACK(n) caso contrário: ignora Retransmissão seletiva em ação

Retransmissão seletiva: dilema Exemplo: seqüências: 0, 1, 2, 3 tamanho da janela=3 receptor não vê diferença nos dois cenários! incorretamente passa dados duplicados como novos (figura a) Q: qual a relação entre o espaço de numeração seqüencial e o tamanho da janela?