Redes de Computadores



Documentos relacionados
Redes de Computadores

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

Camada de transporte. Camada de transporte

Camada de Transporte. Protocolos TCP e UDP

Redes de Computadores

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Controle de Congestionamento

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Redes de Computadores II

Camada de Transporte, protocolos TCP e UDP

Redes de Computadores. Camada de Transporte

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_Marcelo Furtado Pratica 2- Qualidade de serviços

Curso: Tec. Em Sistemas Para Internet 1 semestre Redes de Computadores Memória de Aula 07. Prof. Moises P. Renjiffo

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

Redes de Computadores

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

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

REDES DE COMPUTADORES

Arquitetura TCP/IP. Parte XI Transporte orientado a conexão (TCP) Fabrízzio Alphonsus A. M. N. Soares

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

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

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

Comunicação de Dados

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

TCP - multiplexação/demultiplexação

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

Camada Transporte Parte 2. Prof. Dr. S. Motoyama

Introdução. Algumas terminologias. Camada de Enlace de Dados. Prof. Leandro Pykosz

Redes de computadores. Redes para Internet

2 Controle de Congestionamento do TCP

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

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

Tecnologia de Redes de Computadores

Redes de Computadores

REDES DE COMPUTADORES

CAMADA DE TRANSPORTE

UNIVERSIDADE. Sistemas Distribuídos

Capítulo 7 CAMADA DE TRANSPORTE

Nível de Enlace. Nível de Enlace. Serviços. Serviços oferecidos os nível de rede

Interconexão de Redes. Aula 03 - Roteamento IP. Prof. Esp. Camilo Brotas Ribeiro cribeiro@catolica-es.edu.br

Redes de Computadores

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:

Camada de Aplicação. Prof. Eduardo

A Camada de Transporte

TCP: Visão geral RFCs: 793, 1122, 1323, 2018, TCP: nos. de seq. e ACKs. TCP: estrutura do segmento. TCP: Tempo de Resposta (RTT) e Temporização

Introdução à Camada de Aplicação. Prof. Eduardo

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

Protocolos com paralelismo (pipelining) Pipelining: aumento da utilização

TCP - estabelecimento de conexão

PROJETO DE REDES

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

Tratamento de erros. Escola Superior de Tecnologia e Gestão Instituto Politécnico de Bragança Abril de 2006

REDES DE COMPUTADORES Camada de Transporte. Alexandre Augusto Giron

Redes de Computadores e a Internet

Teleprocessamento e Redes

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

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO

UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

CCNA 2 Conceitos Básicos de Roteadores e Roteamento

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

Capítulo 1: Redes de computadores e a Internet. Capítulo1. Redes de. computadores. computador. e a Internet. es e a Internet

Camada de rede. Camada de enlace. Meio Físico

Redes e Conectividade

Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Capítulo 7 CAMADA DE TRANSPORTE

Redes de Computadores

Redes de Computadores

LINEAR EQUIPAMENTOS RUA SÃO JORGE, TELEFONE : SÃO CAETANO DO SUL - SP - CEP:

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

REDES DE COMPUTADORES II. Ricardo José Cabeça de Souza

Jones Bunilha Radtke. Tarefas:

REDES DE COMPUTADORES E TELECOMUNICAÇÕES MÓDULO 12

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Distribuídos

1 Redes de Computadores - TCP/IP Luiz Arthur

Camada de Transporte. Prof. Leonardo Barreto Campos

Diagrama lógico da rede da empresa Fácil Credito

Prof. Marcelo de Sá Barbosa REDE DE COMPUTADORES

Redes de Computadores II. Módulo 1 Introdução e a camada de enlace

Redes de Computadores

Nível de Enlace. Nível de Enlace. Serviços. Serviços. Serviços. Serviços. Serviços oferecidos os nível de rede

Fernando Albuquerque - fernando@cic.unb.br ADMINISTRAÇÃO TCP/IP. Fernando Albuquerque fernando@cic.unb.br

Um pouco sobre Pacotes e sobre os protocolos de Transporte

1 - Cite o nome dos principais campos de um quadro Ethernet, explicando qual a funcionalidade de cada campo.

Programação de Sockets em C/C++

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

MINISTÉRIO DA EDUCAÇÃO

Redes de Computadores

MINISTÉRIO DA SAÚDE. Secretária de Gestão Estratégica e Participativa da Saúde SGEP. Coordenação de Desenvolvimento dos Sistemas de Saúde - CDESS

Comunicação entre processos (grupos) COMUNICAÇÃO ENTRE PROCESSOS Comunicação de grupo. Comunicação entre processos (grupos)

Equipamentos de rede. Repetidores. Repetidores. Prof. Leandro Pykosz

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

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

Transcrição:

Protocolos da camada de transporte da Internet edes de Computadores Março, 2012 Parte III: Camada de Transporte Professor: einaldo Gomes reinaldo@dsc.ufcg.edu.br TCP: Confiável garante ordem de entrega Controle de congestionamento Controle de fluxo Orientado à conexão UDP: Não confiável, não garante ordem na entrega Extensão do melhor esforço do IP Serviços não disponíveis: Garantia a atrasos Garantia de banda Por quê? 4 Principais funções 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado à conexão: UDP 3.4 Princípios de transferência confiável de dados 3.5 Transporte orientado à conexão: TCP 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento do TCP Controle de erros Controle de fluxo Multiplexação de aplicações Nem todas as camadas de transporte implementam o mesmo conjunto de serviços TCP - Controle de congestionamento UDP - apenas multiplexação 2 Protocolos e serviços de transporte Fornecem comunicação lógica entre processos de aplicação em diferentes hospedeiros 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação Os protocolos de transporte são executados nos sistemas finais Lado emissor: quebra as mensagens da aplicação em segmentos e envia para a camada de rede Lado receptor: remonta os segmentos em mensagens e passa para a camada de aplicação 3.3 Transporte não orientado à conexão: UDP 3.4 Princípios de transferência confiável de dados 3.5 Transporte orientado à conexão: TCP 3.6 Princípios de controle de congestionamento Há mais de um protocolo de transporte disponível para as aplicações Internet: TCP e UDP 3 3.7 Controle de congestionamento do TCP 6 1

Demultiplexação/Multiplexação Demultiplexação/Multiplexação Demultiplexação no hospedeiro receptor:multiplexação no hospedeiro emissor: entrega os segmentos recebidos ao socket correto coleta dados de múltiplos sockets, envelopa os dados com cabeçalho (usado depois para demultiplexação) P2 P3 P1P1 SP: 6428 DP: 9157 SP: 6428 DP: 5775 cliente IP: A SP: 9157 DP: 6428 servidor IP: C SP: 5775 DP: 6428 cliente IP: B Demultiplexação/Multiplexação Demultiplexação/Multiplexação Computador recebe datagramas IP Cada datagrama possui endereço IP de origem e IP de destino Cada datagrama carrega 1 segmento da camada de transporte Cada segmento possui números de porta de origem e destino (lembrese: números de porta bem conhecidos para aplicações específicas) O hospedeiro usa endereços IP e números de porta para direcionar o segmento ao socket apropriado Socket TCP identificado por 4 valores: Endereço IP de origem End. porta de origem Endereço IP de destino End. porta de destino Hospedeiro receptor usa os quatro valores para direcionar o segmento ao socket apropriado Hospedeiro servidor pode suportar vários sockets TCP simultâneos: Cada socket é identificado pelos seus próprios 4 valores Servidores Web possuem sockets diferentes para cada cliente conectado HTTP não persistente terá um socket diferente para cada requisição 3-11 Demultiplexação/Multiplexação Demultiplexação/Multiplexação Socket UDP identificado por dois valores: (endereço IP de destino, número da porta de destino) Quando o hospedeiro recebe o segmento UDP: Verifica o número da porta de destino no segmento Direciona o segmento UDP para o socket com este número de porta Datagramas com IP de origem diferentes e/ou portas de origem diferentes são direcionados para o mesmo socket P1 cliente IP: A SP: 9157 DP: 80 S-IP: A D-IP: C P4 servidor IP: C P5 P6 P2 P1P3 SP: 5775 DP: 80 S-IP: B D-IP: C SP: 9157 DP: 80 S-IP: B D-IP: C cliente IP: B 3-12 2

Demultiplexação/Multiplexação Pilha de Protocolos, na prática 16 Browser Browser FTP Server SNMP agent FTP client Web Server P1 P4 P2 P1P3 Porta 3245 Porta 4251 Porta 21 Porta 161 Porta 3245 Porta 80 cliente IP: A SP: 9157 DP: 80 S-IP: A D-IP: C servidor IP: C SP: 5775 DP: 80 S-IP: B D-IP: C SP: 9157 DP: 80 S-IP: B D-IP: C cliente IP: B UDP TCP Transporte IP ede Driver da Interface de ede Interface de ede HOST A Windows ede (hub, switch, router,...) UDP TCP Transporte IP ede Driver da Interface de ede Interface de ede HOST B Linux Outro host O TCP/IP sabe para qual aplicação entregar o pacote olhando a TUPLA: 3-13 Endereço IP origem, Endereço IP destino, Porta origem, Porta destino, Protocolo Identificação da aplicação no host Identificação da aplicação no host HTTP server X porta=80 HTTP server Y porta=80 HTTP server X porta=80 HTTP server Y porta=80 Pacote IP Pacote IP Pacote IP TCP As aplicações não confundem os pacotes que chegam? PACOTE IP Endereço IP origem Endereço IP destino Porta origem Porta destino Protocolo Pacote IP POTA=4756 POTA=4943 POTA=5623 TCP Pacote informa a aplicação através da POTA Pilha de Protocolos, na prática 15 Aplicação Aplicação Aplicação 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação Porta 1 UDP Porta 2 Porta N TCP Transporte IP, IPX, ICMP, AP,... ede Driver da Interface de ede Interface de ede ede (hub, switch, router,...) Sistema Operacional 3.3 Transporte não orientado à conexão: UDP 3.4 Princípios de transferência confiável de dados 3.5 Transporte orientado à conexão: TCP 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento do TCP 3

UDP: User Datagram Protocol Exemplo Internet Checksum 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 Por que existe um UDP? Não há estabelecimento de conexão (que possa 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) Note que: Ao se adicionar números, um vai um do bit mais significativo deve ser acrescentado ao resultado Exemplo: adicione dois inteiros de 16 bits wraparound sum checksum 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 UDP: User Datagram Protocol Muito usado por aplicações de multimídia contínua (streaming) Tolerantes à perda Sensíveis à taxa Outros usos do UDP (por quê?): DNS SNMP Transferência confiável sobre UDP: acrescentar confiabilidade na camada de aplicação ecuperação de erro específica de cada aplicação 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado à conexão: UDP 3.4 Princípios de transferência confiável de dados 3.5 Transporte orientado à conexão: TCP 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento do TCP UDP Checksum Princícios de transferência confiável de dados Objetivo: detectar erros (ex.: bits trocados) no segmento transmitido Transmissor: Trata o conteúdo do segmento como seqüência 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 eceptor: 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 disso? Mas depois Importante nas camadas de aplicação, transporte e enlace Top 10 na lista dos tópicos mais importantes de redes! Características dos canais não confiáveis determinarão a complexidade dos protocolos confiáveis de transferência de dados (rdt) 4

Transferência confiável usando um canal com erro de bits Canal subjacente pode trocar valores dos bits num pacote Checksum para detectar erros de bits A questão: como recuperar esses erros: econhecimentos (s): receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente econhecimentos negativos (NAKs): receptor avisa explicitamente ao transmissor que o pacote tem erros Transmissor reenvia o pacote quando da recepção de um NAK Mecanismos necessários: Detecção de erros etorno do receptor: mensagens de controle (, NAK) rcvr->sender AQ: hipóteses Comunicações ponto-a-ponto Uma fonte e um destino Enlaces e nós seguem a ordem FIFO Os nós executam o protocolo AQ corretamente A sessão entre fonte e destino já está inicializada e é permanente Todos os erros são detectados corretamente e o enquadramento é perfeito Transferência confiável usando um canal com erro de bits e perdas O que acontece se o /NAK é corrompido ou perdido? Transmissor não sabe o que aconteceu no receptor! Transmissor deve esperar durante um tempo razoável pelo e se não recebe-lo deve retransmitir a informação Não pode apenas retransmitir: possível duplicata Esquema AQ genérico em canais FIFO Iniciado pela Origem Pacote Origem Destino SEQ. # CC Tratando duplicatas: Transmissor acrescenta número de seqüência em cada pacote Transmissor reenvia o último pacote se /NAK for perdido eceptor descarta (não passa para a aplicação) pacotes duplicados TIMEOUT tempo retransmite se não receber o Pacote de acknowledge se não houverem erros tempo Estratégias de etransmissão Conhecidos como algoritmos ou protocolos Automatic epeat equest (AQ) Questões de projeto: Como o receptor requisita uma retransmissão? Como a fonte sabe quando retransmitir? Desempenho e exatidão Para simplificar as explicações assumiremos comunicações do tipo ponto-a-ponto Esquema AQ genérico em canais FIFO Origem tempo SEQ. # Iniciado pelo Destino Pacote retransmite se não receber o POLL /POLL CC Pacote de acknowledge se não houverem erros; POLL tempo Destino TIMEOUT 5

Exemplo de um AQ simples equisitos em AQ Assuma que o destino rotule todo com o mesmo rótulo (A) independentemente de qual pacote esteja sendo reconhecido. Origem P(1) P(2) tempo A fonte rotula cada pacote enviado utilizando um espaço de numeração sequencial. O destino envia um para cada pacote que ele recebe sem erros e numera cada com o número sequencial do pacote correspondente. Destuno T1 T2 A T 3 T 4 Caso expire o tempo de espera na fonte sem receber a confirmação da recepção pelo destino isto resulta na retransmissão do pacote pela fonte. Erros podem confundir o destino AQ do tipo Stop-and-Wait Assuma que a fonte retransmite um pacote quando não recebe um dentro de um determinado tempo fixo (i.e., timeout). Origem Destino P(1) timeout x A Cópia de P(1) T1 T2 T 4 5 T A Tempo Funciona corretamente Fonte transmite pacotes rotulados 1, 2,.. (ou apenas 1 bit: valores 0 ou 1) Destino envia para todo pacote recebido corretamente sendo que o especifica o próximo pacote esperado. Destino passa cópia do pacote recebido corretamente para o nível de rede descartando pacotes com erro. Fonte retransmite pacote sem confirmação após um tempo fixo de espera (i.e., timeout). Fonte e destino são incializados para enviar e receber pacote com número de sequência 1. Erros podem confundir o destino Stop-and-Wait Protocol (SWP) Origem P(1) timeout Cópia de P(1) P(2) Tempo A x A A fonte conclui erroneamente que P(1) e P(2) foram ecebidos corretamente! Destino T1 T2 T 4 T 5 T 6 Para evitar confusão na fonte, cada deve referenciar qual pacote está sendo reconhecido! 6

Stop-and-Wait Protocol Solução Pipelining: aumento da utilização Aumento da utilização por um fator de 3! U sender = 3 * L / TT + L / = 0,024 30,008 = 0,0008 Stop-and-Wait Protocol Go-Back-N (GBN) AQ SWP funciona, mas o desempenho é sofrível Exemplo: enlace de 1 Gbps, 15 ms de atraso de propagação, pacotes de 1 KB: Transmissão = L (tamanho do pacote em bits) (taxa de transmissão, bps) U sender = L / TT + L / = 0,008 30,008 8 kb/pkt 10**9 b/s = 0,00027 U sender : utilização fração de tempo do transmissor ocupado = 8 microsseg Um pacote de 1 KB cada 30 ms -> 33 kb/s de vazão sobre um canal de 1 Gbps = Com GBN, o destino descarta qualquer pacote fora de ordem; portanto, não necessita de um buffer. Destino confirma (i.e., ) um pacote recebido corretamente com o número de sequência do último pacote recebido em ordem. A fonte inicializa um tempo de espera para cada pacote transmitido. Caso não receba confirmação dentro deste tempo, a fonte retransmite o pacote expirado e todos os pacotes enviados após aquele pacote. A fonte pode ter até W pacotes esperando por confirmação. Protocolos com paralelismo (pipelining) Solução GBN AQ Exemplo 1 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 S Timeout para o pkt 1 (T ) P PKT 1 PKT 2 PKT 3 PKT 4 PKT 5 tempo 1 (a) operação do protocolo pare e espere (a) operação do protocolo com paralelismo Duas formas genéricas de protocolos com paralelismo: go-back-n, retransmissão seletiva τ Packet 1 é recebido corretamente; destino envia Origem pode transmitir 4 pacotes antes que o timeout do pkt 1 expire do pkt 1 chega antes do seu timeout; origem pode enviar o pacote 5. 7

GBN AQ Exemplo 1 GBN AQ Exemplo 2 timeout para o pkt 2 (T ) timeout (T ) packets 1 to W must be retransmitted S PKT 1 PKT 2 PKT 3 PKT 4 PKT 5 PKT 6 time S P PKT 1 PKT 2 PKT 3 PKT 4 PKT 1 PKT 2 PKT 3 PKT 4 time 1 2 X 2 3 4 τ Pacotes 2 a 4 chegam na ordem no receptor; receptor envia os s para eles do pkt 2 chega antes do seu timeout expirar; origem pode enviar o pacote 6. τ Todos os pacotes são entregues para a camada superior mas a origem não sabe! do pacote 2 chega depois do timeout; Origem prepara os pacotes de 1 a 4 para retransmissão! GBN AQ Exemplo 1 GBN AQ Exemplo 2 S PKT 1 timeout para pkt 3 (T ) PKT 2 PKT 3 PKT 4 PKT 5 PKT 6 PKT 7 time S P PKT 1 timeout (T ) PKT 2 PKT 3 PKT 4 Pacotes de 1 a n devem ser retransmitidos PKT 1 PKT 2 PKT 3 PKT 4 Origem pode finalmente enviar os pacotes seguintes PKT 5 time 1 2 3 X 4 4 4 4 τ do pkt 3 chega antes do seu timeout expirar; origem pode enviar o pacote 7. τ Todos os pacotes são entregues para a camada superior mas a origem não sabe! Todos os pacotes são descartados (fora da ordem) Note que o destino continua enviando o 4 como o último pacote recebido em sequência GBN AQ Exemplo 1 GBN AQ Exemplo 3 timeout for pkt 4 (T ) timeout (T ) Pacotes 1 a W devem ser retransmitidos S PKT 1 PKT 2 PKT 3 PKT 4 PKT 5 PKT 6 PKT 7 PKT 8 time S P PKT 1 PKT 2 PKT 3 PKT 4 PKT 1 PKT 2 PKT 3 PKT 4 time 1 2 3 4 X 0 0 0 τ do pkt 4 chega antes do seu timeout expirar; origem pode enviar o pacote 8, etc. τ Nenhum pacote pode ser passado para a camada superior! O destino continua pedindo o pacote 1 para o pacote 2 chega depois do timeout; Origem já preparou os pacotes de 1 a 4 para retransmissão! 8

GBN AQ Exemplo 3 epetição Seletiva S P PKT 1 timeout (T ) PKT 2 PKT 3 PKT 4 X τ 0 0 0 Pacotes 1 a W devem ser retransmitidos PKT 1 PKT 2 PKT 3 PKT 4 Origem pode enviar o pacote 5 PKT 5 1 2 3 4 time Diversas variantes possíveis, assumiremos a seguinte: como descrito anteriormente (confirmação de um determinado pacote com número de seq. n) também especifica qual o próximo pacote NP esperado pelo destino (i.e., qual o próximo pacote na sequência esperado pelo destino) Todos os pacotes no intervalo [NP W, NP 1] estão automaticamente confirmados. Por exemplo, com W=4 e números de sequência de 0 a 7, quando NP=2 significa que as mensagens com números de sequência 6, 7, 0 e 1 foram recebidas pelo destino. Nenhum pacote pode ser passado para a camada superior! O destino continua pedindo o pacote 1 Todos os pacotes são recebidos em ordem e passados para a camada superior. Destino informa o último pacote recebido em sequência epetição Seletiva epetição Seletiva Motivação: SWP deixa a fonte ociosa por períodos longos esperando por s e o GBN descarta pacotes que poderiam ser aproveitados. Solução: Permitir que o destino receba múltiplos pacotes e os armazene enquanto para preencher buracos nas transmissões. epetição Seletiva epetição Seletiva equisitos: Fonte e destino podem armazenar W pacotes A fonte rotula os pacotes utilizando números consecutivos 1, 2,. O destino armazena os pacotes recebidos sem erros, confirma os mesmos com s, e os entrega ordenados ao nível superior. (e.g., se o pacote P1 tem erros e P2 e P3 estão corretos, o destino os segura até receber P1 corretamente) A fonte mantém cópias dos pacotes transmitidos até que ela receba confirmação da recepção dos mesmos. A fonte retransmite um pacote quando o timeout do mesmo expira sem ter recebido referencia o número de sequência do pacote sendo confirmado TANSMISSO Dados da camada superior: Se o próximo número de seqüência disponível está na janela, envia o pacote Tempo de confirmação(n): eenvia pacote n, restart timer (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 ECEPTO Pacote n em [rcvbase, rcvbase + N -1] Envia (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] (n) Caso contrário: Ignora 9

epetição Seletiva Números de sequência no SP W>(#s de sequência)/2 pode confundir o receptor Exemplo: considere W=3 e #Seq=4 (i.e., 0..3) Fonte envia pacotes com #seq 0, 1 e 2 Assuma que o receptor recebe todos os pacotes e envia confirmacao mas todas as confirmacoes são perdidas Neste ponto, o receptor avancou sua janela de recepcao para os #seq 3, 0 e 1 A fonte não recebendo confirmacao vai retransmitir os pacotes #seq 0, 1 e 2 O receptor vai aceitar os pacotes com #seq 0 e 1 porque está dentro da janela de recepção! Erroneamente aceita pacotes repetidos como pacotes novos! Confirma a recepção de 0 e 1. A fonte recebendo para #seq 0 e 1 avança a sua janela para #seq 2, 3 e 0... Correção de epetição Seletiva O que provar: Espaço finito de números de sequência: Qual é dimensão mínima do espaço de números de sequência de forma que a fonte e o destino nunca se confundam (i.e., número de sequência no e pacotes). Deve-se assegurar que após o receptor ter ajustado a sua janela não haja nenhuma sobreposição com a janela original!!! Safety: O destino passa os pacotes em sequência para o nível superior, sem intervalos ou réplicas. Serviços da camada de transporte Multiplexação e demultiplexação Transporte não-orientado à conexão: UDP Princípios de transferência confiável de dados Transporte orientado à conexão: TCP Controle de congestionamento do TCP Liveness: Deadlocks nunca acontecem. Números de sequência em SP O Protocolo TCP Assuma W=4 e 5 números de sequência (i.e., 0 a 4) S# 0 1 2 3 4 0 1 2 S PKT 1 PKT 2 PKT 3 PKT 4 PKT 5 PKT 6 PKT 7 PKT 8 0 1 2 3 Todos os pacotes são enviados para a camada superior Origem espera pelo do pacote 1 0 1 2 3 4 0 1 2 4 0 1 2 Destino associa 0 com o pacote 6 time Ponto-a-ponto: Um transmissor, um receptor Confiável, seqüencial byte stream: Não há contornos de mensagens Pipelined: (transmissão de vários pacotes sem confirmação) Controle de congestionamento e de fluxo definem tamanho da janela Buffers de transmissão e de recepção Dados full-duplex: Transmissão bidirecional na mesma conexão MSS: maximum segment size Orientado à conexão: Apresentação (troca de mensagens de controle) inicia o estado do transmissor e do receptor antes da troca de dados : Transmissor não esgota a capacidade do receptor 10

Estrutura do segmento TCP Estrutura do Segmento TCP Exemplos de estimativa do TT UG: dados urgentes (pouco usados) : campo de é válido PSH: produz envio de dados (pouco usado) ST, SYN, FIN: estabelec. de conexão (comandos de criação e término) Internet checksum (como no UDP) contagem por bytes de dados (não segmentos!) número de bytes receptor está pronto para aceitar de seqüência e s do TCP Número de Sequência e s no TCP Números de seqüência: Número do primeiro byte nos segmentos de dados s: Número do próximo byte esperado do outro lado cumulativo P.: Como o receptor trata segmentos fora de ordem? A especificação do TCP não define, fica a critério do implementador Serviços da camada de transporte Multiplexação e demultiplexação Transporte não-orientado à conexão: UDP Princípios de transferência confiável de dados Transporte orientado à conexão: TCP Controle de congestionamento do TCP TCP ound Trip Time e temporização TCP: transferência de dados confiável P.: como escolher o valor da temporização do TCP? Maior que o TT Nota: TT varia Muito curto: temporização prematura etransmissões desnecessárias Muito longo: a reação à perda de segmento fica lenta P.: Como estimar o TT? SampleTT: tempo medido da transmissão de um segmento até a respectiva confirmação Ignora retransmissões e segmentos reconhecidos de forma cumulativa SampleTT varia de forma rápida, é desejável um amortecedor para a estimativa do TT Usar várias medidas recentes, não apenas o último SampleTT obtido TCP cria serviços de trasferência confiável de dados em cima do serviço não-confiável do IP Transmissão de vários segmentos em paralelo (Pipelined segments) s cumulativos TCP usa tempo de retransmissão simples etransmissões são disparadas por: Eventos de tempo de confirmação s duplicados Inicialmente, considere um transmissor TCP simplificado: Ignore s duplicados Ignore controle de fluxo, controle de congestionamento 11

Eventos do transmissor TCP Geração de [FC 1122, FC 2581] Dado recebido da app: Crie um segmento com número de seqüência # seq é o número do byte-stream do 1 o byte de dados no segmento Inicie o temporizador se ele ainda não estiver em execução (pense no temporizador para o mais antigo segmento não-confirmado) Tempo de expiração:timeoutinterval Tempo de confirmação: etransmite o segmento que provocou o tempo de confirmação einicia o temporizador recebido: Quando houver o de segmentos anteriormente não confirmados Atualizar o que foi confirmado Iniciar o temporizador se houver segmentos pendentes Evento no receptor Segmento chega em ordem, não há lacunas, segmentos anteriores já aceitos Segmento chega em ordem, não há lacunas, um 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 receptor TCP retardado. Espera até 500 ms pelo próximo segmento. Se não chegar, envia Imediatamente envia um cumulativo Envia duplicado, indicando número de seqüência do próximo byte esperado econhece imediatamente se o segmento começa na borda inferior do gap TCP: cenários de retransmissão etransmissão rápida Com freqüência, o tempo de expiração é relativamente longo: Longo atraso antes de reenviar um pacote perdido Detecta segmentos perdidos por meio de s duplicados Transmissor freqüentemente envia muitos segmentos Se o segmento é perdido, haverá muitos s duplicados Se o transmissor recebe 3 s para o mesmo dado, ele supõe que o segmento após o dado confirmado foi perdido: etransmissão rápida: reenvia o segmento antes de o temporizador expirar Cenário com perda do Temporização prematura, s cumulativos TCP: cenários de retransmissão Serviços da camada de transporte Multiplexação e demultiplexação Transporte não orientado à conexão: UDP Princípios de transferência confiável de dados Transporte orientado à conexão: TCP Controle de congestionamento do TCP Cenário de cumulativo 12

TCP: controle de fluxo O Protocolo TCP Lado receptor da conexão TCP possui um buffer de recepção: Processos de aplicação podem ser lentos para ler o buffer Controle de fluxo Transmissor não deve esgotar os buffers de recepção enviando dados rápido demais Serviço de speed-matching: encontra a taxa de envio adequada à taxa de vazão da aplicação receptora Estabelecimento de Conexão Protocolo Passo 1: o cliente envia um segmento SYN especificando a porta do servidor ao qual deseja se conectar e seu número de sequência inicial Passo 2: o servidor responde enviando outro segmento SYN com o do segmento recebido e o seu próprio número de sequência Passo 3: o cliente retorna um e a conexão se estabelece O tamanho máximo de segmento (MSS) que cada lado se propõe a aceitar também é definido no momento do estabelecimento da conexão Pode acontecer um half open Controle de fluxo TCP: como funciona TCP Como Funciona eceptor informa a área disponível incluindo valor cvwindow nos segmentos Client Server Status: LISTENING Transmissor limita os dados não confinados aocvwindow Garantia contra overflow no buffer do receptor TEMPO TCP Como Funciona Serviços da camada de transporte Multiplexação e demultiplexação Client Server Status: SYN_ECV Transporte não orientado à conexão: UDP Princípios de transferência confiável de dados SYN Conexão solicitada pelo cliente Transporte orientado à conexão: TCP TEMPO Controle de congestionamento do TCP 13

TCP Como Funciona O Protocolo TCP Client Server Status: SYN_ECV Término de Conexão TEMPO SYN SYN- Servidor aloca recursos (memória) Para a potencial conexão e liga relógio de TIMEOUT Cada direção da conexão é encerrada independentemente Protocolo Passo 1: o cliente envia um segmento FIN Passo 2: o servidor retorna um FIN e um para o cliente Passo 3: o cliente envia um e a conexão se encerra É possível efetuar um half close, mantendo-se apenas uma conexão simplex Cliente FIN FIN Servidor Tempo TCP Como Funciona TCP Como Funciona Client Server Status: ESTABILISHED Client Server Status: CLOSED STABLISHED SYN SYN SYN- SYN- TEMPO (DATA) Cliente confirma o pedido de conexão E inicia envio de dados. TEMPO (DATA) (DATA) (DATA) FIN FIN- Após troca de informação, um dos lados solicita fim da conexão e o outro lado confirma. TCP Como Funciona Serviços da camada de transporte Client Server Status: ESTABILISHED Multiplexação e demultiplexação SYN Transporte não orientado à conexão: UDP SYN- Princípios de transferência confiável de dados TEMPO THEE WAY HANDSHAKE Transporte orientado à conexão: TCP Controle de congestionamento do TCP 14

Janela de Congestionamento Controle de Congestionamento TCP Uma conexão TCP controla sua taxa de transmissão limitando o seu número de segmentos que podem ser transmitidos sem que uma confirmação seja recebida Esse número é chamado o tamanho da janela do TCP (w) Uma conexão TCP começa com um pequeno valor de w e então o incrementa arriscando que exista mais largura de banda disponível Isso continua a ocorrer até que algum segmento seja perdido Nesse momento, a conexão TCP reduz w para um valor seguro, e então continua a arriscar o crescimento 0,6 K 5,7 K 5,0 K 5,2 K 5,1 K 5,5 K Controle de Congestionamento O controle é feito através de duas variáveis adicionadas em cada lado da conexão: Janela de Congestionamento Janela do TCP explicada anteriormente Limiar Serve para controlar o crescimento da janela de congestionamento Janela do eceptor O número máximo de segmentos não confirmados é dado pelo mínimo entre os tamanhos das janelas de congestionamento e do receptor. Ou seja, mesmo que haja mais largura de banda, o receptor também pode ser um gargalo. Graficamente... Evolução de uma Conexão TCP No início, a janela de congestionamento tem o tamanho de um segmento. Tal segmento tem o tamanho do maior segmento suportado. O primeiro segmento é enviado e então é esperado seu reconhecimento. Se o mesmo chegar antes que ocorra o timeout, o transmissor duplica o tamanho da janela de congestionamento e envia dois segmentos. Se esses dois segmentos também forem reconhecidos antes de seus timeouts, o transmissor duplica novamente sua janela, enviando agora quatro segmentos. 15

Evolução de uma Conexão TCP Duas Fases dessa Evolução Esse processo continua até que: O tamanho da janela de congestionamento seja maior que o limiar, ou maior que o tamanho da janela do receptor; Ocorra algum timeouts antes da confirmação. TT Hospedeiro A Hospedeiro B Uma vez ultrapassado o limiar, e a janela do receptor ainda não seja um limitante, o crescimento da janela passa a ser linear. Essa segunda fase é chamada de prevenção de congestionamento (congestion avoidance). Sua duração também depende da não ocorrência timeouts, e da aceitação do fluxo por parte do receptor. tempo Duas Fases dessa Evolução Graficamente... A primeira fase, em que a janela de congestionamento cresce exponencialmente é chamada de inicialização lenta (slow start), pelo fato de começar com um segmento A taxa de transmissão começa pequena porém cresce muito rapidamente CONGESTION AVOIDANCE Graficamente... E quando ocorrer um problema? SLOW STAT 16

Evolução de uma Conexão TCP Na ocorrência de um timeout o TCP irá configurar: O valor do limiar passa a ser a metade do tamanho atual da janela de congestionamento O tamanho da janela de congestionamento volta ser do tamanho de um segmento O tamanho da janela de congestionamento volta a crescer exponencialmente Caso ocorram 3 s duplicados: O valor do limiar é ajustado para metade tamanho atual da janela de congestionamento O tamanho da janela de congestionamento passa igual ao valor do limiar (metade da janela de congestionamento atual) O tamanho da janela de congestionamento cresce linearmente esumo Quando o tamanho da janela de congestionamento está abaixo do limiar, seu crescimento é exponencial Quando este tamanho está acima do limiar, o crescimento é linear Todas as vezes que ocorrer um timeout, o limiar é modificado para a metade do tamanho da janela e o tamanho da janela passa a ser 1 A rede não consegue entregar nenhum dos pacotes ( congestionamento pesado ) Quando ocorrem s repetidos a janela cai pela metade A rede ainda é capaz de entregar alguns pacotes ( congestionamento leve ) Graficamente... 17