Capítulo 3: Camada de Transporte

Documentos relacionados
Capítulo 3: Camada de Transporte

TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581

Capítulo 3: Camada de Transporte

Camada de Transporte Transferindo Mensagem entre Processos

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

Redes de Computadores Camada de Transporte Protocolo TCP

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

Camada de Transporte. Processo: Instância de uma aplicação que está. 3: Camada de Transporte 3a-1

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

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

Capítulo 3. Camada de transporte

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

SSC0641 Redes de Computadores

Capítulo 3: Camada de Transporte. Multiplexação/desmultiplexação. Multiplexação/desmultiplexação. Multiplexação/desmultiplexação: exemplos

SSC0641 Redes de Computadores

TCP Round Trip Time e temporização

Camada de Transporte

TCP - controle de fluxo

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

TCP - controle de fluxo

PTC Aula Princípios da transferência de dados confiável 3.5 Transporte orientado para conexão: TCP

PTC Aula Princípios do controle de congestionamento 3.7 Controle de congestionamento no TCP

SSC0641 Redes de Computadores

Redes de Computadores

TCP - formato do segmento. Formato do segmento TCP (fonte: Kurose)

Capítulo 3 Camada de transporte

3Camada de transporte

Fragmentos das máquinas de estados finitos do RDT 2.2 (fonte: Kurose)

Planejamento. Revisão. Desempenho em Protocolos de Transporte

Redes de Computadores

Redes de Computadores

Camada de Transporte. Protocolos TCP e UDP

Redes de Computadores e a Internet

Causas/custos do congestionamento: cenário 1

PTC Aula Princípios da transferência de dados confiável. (Kurose, Seções 3.4 e 3.5) 28/04/2017

Arquitetura de Redes de Computadores

Redes de Computadores e a Internet

Redes de computadores e a Internet

Capítulo 3 Camada de transporte

Capítulo 3 Camada de transporte

Nível de Transporte Portas, Protocolos UDP e TCP

Redes de Computadores

Infra-Estrutura de Comunicação (IF678)

Camada de Transporte. Redes Industriais Rone Ilídio UFSJ CAP

Redes de Computadores

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

SSC0641 Redes de Computadores

Camada de transporte. Serviços

Camada de Transporte

Redes de Computadores

Redes de Computadores

PTC Aula A camada de transporte. (Kurose, p ) 15/03/2017

AULA 3 - REDES. Prof. Pedro Braconnot Velloso

Redes de Computadores RES 12502

Capítulo 3: Camada de Transporte

SSC0641 Redes de Computadores

EEL878 - Redes de Computadores I

Protocolo de transporte em tempo-real (Real- Time Transport Protocol) Definido na RFC 3350 Normalmente usado sobre o UDP Serviços

EEL878 - Redes de Computadores I. Prof. Luís Henrique Maciel Kosmalski Costa.

PTC Aula Transporte orientado para conexão: TCP. (Kurose, p ) (Peterson, p e ) 23/05/2017

Capítulo 3: Camada de Transporte

Serviços da camada de transporte

Redes de Computadores

Redes de Computadores e Aplicações. Aula 43 - Camada de Transporte TCP (Transmission Control Protocol)

Curso de Redes de Computadores 2010

: TMS M

Protocolos TCP e UDP. Protocolo TCP. Protocolo TCP. A necessidade de uma comunicação segura: Transmission Control Protocol

Roteiro Resumido. Camada de Transporte. Parte III. Camada de Transporte. Camada de Transporte. Redes de Computadores 25/4/2017

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

Capítulo 3 Camada de Transporte

Capítulo 3 Camada de transporte

TCP / IP. Marcos Monteiro, MBA, ITIL V3, Perito computacional Forense. contato@marcosmonteiro.com.

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

TCP - multiplexação/demultiplexação

Redes de Computadores Aula 5

Desempenho de Redes de Computadores. Ricardo Couto A. da Rocha 2015

Redes de Computadores I

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

Capítulo 3 Camada de transporte

Camada de transporte. 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

Capítulo 3: Camada de Transporte

Roteiro Resumido. Camada de Transporte. Parte III. Camada de Transporte. Camada de Transporte. Redes de Computadores 14/08/2015

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

Redes de computadores. Protocolo TCP

PROTOCOLOS DE COMUNICAÇÃO

Protocolo de transporte em tempo-real (Real- Time Transport Protocol) Definido na RFC 3350 Normalmente usado sobre o UDP Serviços

Redes de Computadores

Capítulo 6. A camada de transporte

GA-027 Redes de Computadores

Capítulo 3 Camada de transporte

Capítulo 3. Camada de transporte. Pearson. Todos os direitos reservados.1

Redes de Computadores

Cap. 03 Camada de Transporte

Curso de Redes de Computadores

Curso de Redes de Computadores

TCP - estabelecimento de conexão

Camada Transporte. 2 Camada de Transporte

Camada de Transporte Protocolos TCP e UDP

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

Transcrição:

Capítulo 3: Camada de Transporte Metas do capítulo: compreender os princípios que guiam os serviços da camada de transporte: multiplexação/ demultiplexação transferência confiável de dados controle de fluxo controle de congestionamento instanciação e implementação na Internet dos protocolos de transporte UDP TCP Resumo do Capítulo: serviços da camada de transporte multiplexação/demultiplexação transporte sem conexão: UDP princípios da transferência confiável de dados transporte orientado a conexão: TCP transferência confiável controle de fluxo gerenciamento de conexões princípios do controle de congestionamento controle de congestionamento usados no TCP 3: Camada de Transporte 3a-1

Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando em hosts diferentes protocolos de transporte executam em sistemas terminais emissor: fragmenta a mensagem da aplicação em segmentos e os envia para a camada de rede; receptor: rearranja os segmentos em mensagens e os transmite para a camada de aplicação; Mais de um protocolo de transporte disponível para as aplicações aplicação transporte rede enlace física rede enlace física transporte lógico fim a fim rede enlace física rede enlace física rede enlace física rede enlace física aplicação transporte rede enlace física Internet: TCP e UDP 3: Camada de Transporte 3a-2

Camada de Rede e Camada de Transporte camada de rede : comunicação lógica entre hosts ou sistemas; camada de transporte: comunicação lógica entre processos os serviços da camada de transporte e suas dimensões: Segurança, Integridade, Vazão, e tempo; depende dos serviços da camada de rede; extende os serviços da camada de rede 3: Camada de Transporte 3a-3

Multiplexação/demultiplexação Multiplexação no transmissor: juntar dados de múltiplos processos de apl, envelopando dados com cabeçalho (usado depois para demultiplexação) Demultiplexação no receptor: entrega de segmentos recebidos para os devidos processos da camada de aplicação. = socket = processo aplicação P3 P1 P1 aplicação P2 P4 aplicação transporte transporte transporte rede rede rede enlace enlace enlace física física host 1 host 2 host 3 física 3: Camada de Transporte 3a-4

Os elementos da demultiplexação host recebe os datagramas IP Cada datagrama tem um endereço IP de origem e de destino; Cada datagrama carrega 1 segmento da camada de transporte; Cada segmento tem um número de porta de origem e um de destino lembrete: número de porta bem conhecido para aplicações específicas host usa o endereço IP e o número de porta para direcionar o segmento para o socket apropriado; porta remetente 32 bits outros campos do cabeçalho dados da aplicação (mensagem) porta receptor formato de segmento TCP/UDP 3: Camada de Transporte 3a-5

Demultiplexação não orientada a conexão Cria sockets com os números de porta DatagramSocket mysocket1 = new DatagramSocket(); DatagramSocket mysocket2 = new DatagramSocket(9157); Socket UDP identificado pela 2-tupla: (endereço IP destino, no porta destino) Quando o host recebe o segmento UDP: Verifica o número da porta de destino no segmento Direciona o segmento UDP para o socket correspondente ao número da porta; Datagramas IP com diferentes endereços IP de origem e/ou números de porta de origem são direcionados para o mesmo socket desde que... 3: Camada de Transporte 3a-6

Demultiplexação não orientada a conexão (cont) DatagramSocket serversocket = new DatagramSocket(6428); P2 P3 P1P1 SP: 6428 DP: 9157 SP: 6428 DP: 5775 SP: 9157 SP: 5775 client IP: A DP: 6428 server IP: C DP: 6428 Client IP:B SP provê endereço de retorno 3: Camada de Transporte 3a-7

Demultiplexação orientada a conexão Identificação do socket, 4-tupla: endereço IP de origem número da porta de origem endereço IP de destino número da porta de destino Hosts receptor usa estes valores da tupla para direcionar os segmentos para o socket apropriado host servidor deve suportar múltiplos sockets TCP simultaneamente: Cada socket é identificado por sua 4-tupla servidores Web tem diferentes sockets para cada cliente HTTP não persistente tem diferentes sockets para cada requisição 3: Camada de Transporte 3a-8

Demultiplexação orientada a conexão (cont) P3 P3 P4 P1P1 SP: 80 DP: 9157 SP: 80 DP: 5775 SP: 9157 SP: 5775 cliente IP: A DP: 80 servidor IP: C DP: 80 cliente IP:B 3: Camada de Transporte 3a-9

Atividade: Protocolo para a camada de transporte Tarefa: Projetar um protocolo para a camada de transporte que ofereça um serviço de transferência Não-confiável, sem-controle de fluxo, nem-controle de congestionamento. Espera-se: Dinâmica de troca de mensagens pelas entidades que usam o protocolo; Formato das mensagens enviadas(msg requisição; msg resposta). 3: Camada de Transporte 3a-10

UDP: User Datagram Protocol [RFC 768] Protocolo de transporte da Internet mínimo Serviço melhor esforço, segmentos UDP podem ser: perdidos entregues à aplicação fora de ordem do envio sem conexão: não há setup UDP entre remetente, destinatário tratamento independente para cada segmento UDP Por quê existe o 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 3a-11

Mais sobre UDP 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.! Comprimento em bytes do segmento UDP, incluindo cabeçalho porta origem comprimento 32 bits Dados de aplicação (mensagem) porta dest. checksum UDP segment format 3: Camada de Transporte 3a-12

Checksum UDP Remetente: Meta: detecta erro (e.g., bits invertidos) no segmento transmitido trata conteúdo do segmento como seqüê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 Receptor: calcula checksum do segmento recebido verifica se checksum computado possui algum zero: SIM - erro detectado NÃO - nenhum erro detectado. 3: Camada de Transporte 3a-13

Checksum UDP: Cálculo Palavra 1 Palavra 2 0110011001100000 0101010101010101 1000111100001100 Palavra 3 3: Camada de Transporte 3a-14

Checksum UDP: Cálculo palavra1 + palavra2 Palavra 1 Palavra 2 0110011001100000 0101010101010101 1011101110110101 3: Camada de Transporte 3a-15

Checksum UDP: Cálculo resultado anterior + palavra3 Resultado anterior Palavra 3 CheckSum Compleme nto de 1 1011101110110101 1000111100001100 0100101011000010 1011010100111101 3: Camada de Transporte 3a-16

Checksum, pra quê? Já que existe serviço similar na camada de Enlace, então pra quê um serviço redundante? 3: Camada de Transporte 3a-17

Princípios de Transferência confiável de dados (rdt) importante pois outras camadas implementam o conceito; características do canal não confiável determinam a complexidade de um protocolo de transferência confiável de dados (rdt) 3: Camada de Transporte 3a-18

Transferência confiável de dados (rdt): Interfaces do protocolo rdt_send(): chamada de cima, (p.ex.,pela apl.). Dados recebidos p/ entregar à camada sup. do receptor deliver_data(): chamada por rdt p/ entregar dados p/ camada superior send side receive side udt_send(): chamada por rdt, p/ transferir pacote pelo canal ñ confiável ao receptor rdt_rcv(): chamada quando pacote chega no lado receptor do canal 3: Camada de Transporte 3a-19

Transferência confiável de dados (rdt): A abordagem Desenvolver incrementalmente os lados remetente, receptor do protocolo RDT; Considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos! Usar máquinas de estados finitos (FSM) p/ especificar remetente, e receptor. 3: Camada de Transporte 3a-20

Transferência confiável de dados (rdt): Uma máquina de estado Estado: caracteriza uma certa configuração da máquina; Evento: eventualmente causam mudanças no estado da máquina; Ações: executadas quando da transição de um estado para outro; Transição é determinada unicamente pelo próximo evento evento causando transição de estados ações tomadas na transição de estado estado 1 evento ações estado 2 3: Camada de Transporte 3a-21

Rdt1.0: transferência confiável usando um canal confiável canal subjacente é confiável não tem erros de bits; não tem perda de pacotes. FSMs separadas para remetente e receptor: remetente envia dados pelo canal subjacente receptor recebe dados do canal subjacente 3: Camada de Transporte 3a-22

Rdt2.0: canal com erros de bits canal subjacente pode inverter bits no pacote lembre-se: checksum UDP pode detectar erros de bits a questão: como recuperar dos erros? reconhecimentos (ACKs): receptor avisa explicitamente ao remetente que pacote chegou bem reconhecimentos negativos (NAKs): receptor avisa explicitamente ao remetente que pacote tinha erros remetente retransmite pacote ao receber um NAK ARQ(Automatic Repeat request). novos mecanismos em rdt2.0 (em relação ao rdt1.0): deteção de erros realimentação pelo receptor: msgs de controle (ACK,NAK) receptor->remetente 3: Camada de Transporte 3a-23

rdt2.0: especificação da FSM FSM do remetente FSM do receptor 3: Camada de Transporte 3a-24

rdt2.0: em ação (sem erros) FSM do remetente FSM do receptor 3: Camada de Transporte 3a-25

rdt2.0: em ação (com erro) FSM do remetente FSM do receptor 3: Camada de Transporte 3a-26

rdt2.0 tem uma falha fatal! O que acontece se ACK/NAK com erro? Remetente não sabe o que passou no receptor! não se pode apenas retransmitir: possibilidade de pacotes duplicados O que fazer? remetente usa ACKs/NAKs p/ ACK/NAK do receptor? E se perder ACK/NAK do remetente? Melhorar o procedimento de Checksum permitindo a correção do erro, mas o pacote pode se perde; retransmitir, mas pode causar retransmissão de pacote recebido certamente! 3: Camada de Transporte 3a-27

rdt2.1, lidando com a duplicação! remetente inclui número de sequência para cada pacote; remetente retransmite pacote atual se ACK/NAK foi recebido com erro; receptor descarta (não entrega) pacote duplicado. receptor transmite ACK para pacotes duplicados; 3: Camada de Transporte 3a-28

rdt2.1: remetente, trata ACK/NAKs c/ erro 3: Camada de Transporte 3a-29

rdt2.1: receptor, trata ACK/NAKs com erro 3: Camada de Transporte 3a-30

rdt2.1: discussão Remetente: no. de seq no pacote bastam dois nros. de seq. (0,1). Por quê? deve checar se ACK/NAK recebido tinha erro duplicou o no. de estados estado deve lembrar se pacote corrente tem no. de seq. 0 ou 1. Receptor: deve checar se pacote recebido é duplicado estado indica se no. de seq. esperado é 0 ou 1 note: receptor não tem como saber se último ACK/NAK foi recebido bem pelo remetente 3: Camada de Transporte 3a-31

rdt2.2: um protocolo sem NAKs mesma funcionalidade que rdt2.1, só com ACKs ao invés de NAK, receptor envia ACK p/ último pacote recebido corretamente receptor deve incluir explicitamente no. de seq do pacote reconhecido ACK duplicado no remetente resulta na mesma ação que o NAK: retransmite pacote atual 3: Camada de Transporte 3a-32

rdt2.2: Protocolo sem NAKs remetente 3: Camada de Transporte 3a-33

rdt2.2: Protocolo sem NAK - Receptor 3: Camada de Transporte 3a-34

rdt3.0: canais com erros e perdas Nova suposição: canal subjacente também pode perder pacotes (dados ou ACKs) checksum, no. de seq., ACKs, retransmissões podem ajudar, mas não serão suficientes P: como lidar com perdas? remetente espera até ter certeza que se perdeu pacote ou ACK, e então retransmite 3: Camada de Transporte 3a-35

rdt3.0: canais com erros e perdas Abordagem: remetente aguarda um tempo razoável pelo ACK retransmite se nenhum ACK for recebido neste intervalo se pacote (ou ACK) apenas estiver atrasado (e não perdido): retransmissão será duplicada, mas o uso de no. de seq. já cuida disto receptor deve especificar no. de seq do pacote sendo reconhecido requer temporizador 3: Camada de Transporte 3a-36

rdt3.0: remetente 3: Camada de Transporte 3a-37

rdt3.0 em ação 3: Camada de Transporte 3a-38

rdt3.0 em ação 3: Camada de Transporte 3a-39

Exercício Construa a FSM para o receptor do RDT 3.0 3: Camada de Transporte 3a-40

Resposta A diferença entre o remetente dos protocolos rdt3.0 e rdt2.2 é a adição do temporizador. A introdução da data de validade (timeouts) do temporizador introduz a possibilidade da ocorrência de pacotes duplicados no fluxo estabelecido entre remetente-e-receptor. Entretanto, o receptor do protocolo rdt2.2 é capaz de lidar com pacotes duplicados. (Duplicações no lado do receptor do rdt 2.2 podem ocorrer caso o receptor envie um ACK e este sofra perda, induzindo o remetente então a retransmitir dados antigos). Assim, o receptor do protocolo rdt2.2 servirá aos propósitos do protocolo rdt 3.0. 3: Camada de Transporte 3a-41

Desempenho de rdt3.0 rdt3.0 funciona, porém seu desempenho é muito ruim exemplo: enlace de 1 Gbps, retardo fim a fim de 15 ms, pacote de 1KB: T transmitir = L (tamanho do pacote - bits) R (taxa de transmissão, bps) = 8kb 10**9 b/sec = 8 microsec U emissor = L / R RTT + L / R =.008 30.008 = 0.00027 Utilização: porcentagem/fração de tempo remetente está ocupado pac. de 1KB a cada 30 mseg -> vazão de 33kB/seg num enlace de 1 Gbps protocolo limita uso dos recursos físicos! 3: Camada de Transporte 3a-42

rdt3.0: operação para-e-espera bit primeiro pacote transmitido, t = 0 último bit transmitido, t = L / R emissor receptor RTT bit do primeiro pacote recebido último bit do pacote recebido, envia ACK ACK recebido, envia próximo pacote, t = RTT + L / R U emissor = L / R RTT + L / R =.008 30.008 = 0.00027 microsegundos 3: Camada de Transporte 3a-43

Protocolos dutados (pipelined) Dutagem (pipelining): remetente admite múltiplos pacotes em trânsito, ainda não reconhecidos faixa de números de seqüência deve ser aumentada buffers no remetente e/ou no receptor Duas formas genéricas de protocolos de dutagem: Volta-N e Retransmissão seletiva. 3: Camada de Transporte 3a-44

Pipelining: aumenta utilização emissor receptor bit primeiro pacote transmitido, t = 0 último bit transmitido, t = L / R RTT primeiro bit do pacote recebido último bit recebido, envia ACK último bit do 2 o pacote recebido, envia ACK último bit do 3 o pacote recebido, envia ACK ACK recebido, envia próximo pacote, t = RTT + L / R Aumenta a utilização de um fator de 3 U emissor = 3*L / R RTT + L / R =.024 30.008 = 0.0008 microsegundos 3: Camada de Transporte 3a-45

Protocolos para dutagem Volta-N: visão geral Remetente pode ter até N pacotes Não-acks no pipeline Receptor envia somente acks acumulativos Não reconhece pacotes se existir espaço. Remetente tem timer para o pacote mais antigo enviado Se o timer expirar, retransmite todos os pacotes não acks. Retransmissão Seletiva: Visão geral Remetente pode ter até N pacotes Não-acks no pipeline; Receptor reconhece pacotes individualmente; Transmissor mantém timer para cada pacote não-ack Quando o timer expirar retransmite somente pacotes Não-acks. 3: Camada de Transporte 3a-46

Volta N Remetente pode ter até N pacotes Não-acks no pipeline Receptor envia somente acks acumulativos Não reconhece pacotes se existir espaço. Remetente tem timer para o pacote mais antigo enviado Se o timer expirar, retransmite todos os pacotes não acks. 3: Camada de Transporte 3a-47

Volta-N Remetente: no. de seq. de k-bits no cabeçalho do pacote admite janela de até N pacotes consecutivos não reconhecidos ACK(n): reconhece todos pacotes, até e inclusive no. de seq n - ACK cumulativo pode receber ACKs duplicados (veja receptor) temporizador para cada pacote em trânsito timeout(n): retransmite pacote n e todos os pacotes com no. de seq maiores na janela 3: Camada de Transporte 3a-48

Volta-N: FSM estendida do remetente rdt_send(data) Λ base=1 nextseqnum=1 rdt_rcv(rcvpkt) && corrupt(rcvpkt) if (nextseqnum < base+n) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else refuse_data(data) Wait timeout start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) udt_send(sndpkt[nextseqnum-1]) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer 3: Camada de Transporte 3a-49

Volta-N: FSM estendida do receptor default udt_send(sndpkt) Λ expectedseqnum=1 Wait sndpkt = make_pkt(expectedseqnum,ack,chksum) rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(expectedseqnum,ack,chksum) udt_send(sndpkt) expectedseqnum++ receptor simples: usa apenas ACK: sempre envia ACK para pacote recebido bem com o maior no. de seq. em-ordem pode gerar ACKs duplicados só precisa se lembrar do expectedseqnum pacote fora de ordem: descarta (não armazena) -> receptor não usa buffers! manda ACK de pacote com maior no. de seq em-ordem 3: Camada de Transporte 3a-50

Volta-N em ação 3: Camada de Transporte 3a-51

Retransmissão seletiva receptor reconhece individualmente todos os pacotes recebidos corretamente armazena pacotes no buffer, conforme precisa, para posterior entrega em-ordem à camada superior remetente apenas re-envia pacotes para os quais ACK não recebido temporizador de remetente para cada pacote sem ACK janela do remetente N nos. de seq consecutivos outra vez limita nos. de seq de pacotes enviados, mas ainda não reconhecidos 3: Camada de Transporte 3a-52

Retransmissão seletiva: janelas de remetente, receptor 3: Camada de Transporte 3a-53

Retransmissão seletiva remetente dados de cima: se próx. no. de seq na janela, envia pacote timeout(n): reenvia pacote n, reiniciar temporizador ACK(n) em [sendbase,sendbase+n]: marca pacote n recebido se n for menor pacote não reconhecido, avança base da janela ao próx. no. de seq não reconhecido. pacote n em [rcvbase, rcvbase+n-1] envia ACK(n) fora de ordem: buffer em ordem: entrega (tb. entrega pacotes em ordem no buffer), avança janela p/ próxima pacote ainda não recebido pacote n em [rcvbase-n,rcvbase-1] senão: receptor ACK(n) ignora 3: Camada de Transporte 3a-54

Retransmissão seletiva em ação 3: Camada de Transporte 3a-55

Retransmissão seletiva: dilema Exemplo: nos. de seq : 0, 1, 2, 3 tam. de janela =3 receptor não vê diferença entre os dois cenários! incorretamente passa dados duplicados como novos em (a) Q: qual a relação entre tamanho de no. de seq e tamanho de janela? 3: Camada de Transporte 3a-56

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 s o c k e t d o o r a p p l i c a t i o n w r i t e s d a t a T C P s e n d b u f f e r s e g m e n t a p p l i c a t i o n r e a d s d a t a T C P r e c e i v e b u f f e r s o c k e t d o o r transmissão full duplex: fluxo de dados bidirecional 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 3a-57

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

TCP: n o s. de seq. e ACKs N o s. de seq.: ACKs: número dentro do fluxo de bytes do primeiro byte de dados do segmento n o 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 Usuário tecla C A reconhece chegada do C ecoado Estação A Estação B Seq=42, ACK=79, data = C Seq=79, ACK=43, data = C Seq=43, ACK=80 cenário simples de telnet B reconhece chegada de C, ecoa C de volta tempo 3: Camada de Transporte 3a-59

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 3a-60

TCP: Tempo de Resposta (RTT) RTT_estimado = (1-α)* RTT_estimado + α*rtt_amostra média corrente exponencialmente ponderada influência de cada amostra diminui exponencialmente com o tempo valor típico de α : 0.125 3: Camada de Transporte 3a-61

TCP: Temporização 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- β)* Desvio + β * RTT_amostra - RTT_estimado valor típico de β : 0.25 3: Camada de Transporte 3a-62

Exemplo estimativa RTT RTT: gaia.cs.umass.edu to fantasia.eurecom.fr 350 300 RTT (milliseconds) 250 200 150 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) SampleRTT Estimated RTT 3: Camada de Transporte 3a-63

TCP: transferência confiável de dados TCP cria serviço rdt sobre o serviço não confiável IP Utiliza pipeline para enviar segmentos ACKS cumulativos TCP usa temporizador para retransmissão Retransmissões são disparadas por: timeout Acks duplicados Inicialmente considere um TCP emissor simplificado: ignore acks duplicados ignore controle de fluxo e controle de congestionamento; 3: Camada de Transporte 3a-64

Eventos dotcp emissor: Dados recebidos da aplic: Cria o segmento com n o de seq X seq X é o número do primeiro byte do segmento Inicia o temporizador se ele não foi iniciado anteriormente Intervalo de expiração: TimeOutInterval timeout: Retransmite o segmento que causou o timeout Reinicializa o temporizador Ack recebido: Se reconhece segmentos não reconhecidos anteriormente Atualiza a informação sobre pacotes reconhedidos Inicia o temporizador se existem ainda segmentos não reconhecidos 3: Camada de Transporte 3a-65

TCP: transferência confiável de dados Remetente TCP simplificado 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 calcula 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 */ 3: Camada de Transporte 3a-66

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

TCP: cenários de retransmissão (cont) Host A Host B Seq=92, 8 bytes data timeout Seq=100, 20 bytes data X loss ACK=100 ACK=120 time Cenário de ACK cumulativo 3: Camada de Transporte 3a-68

TCP geração de ACKs [RFCs 1122, 2581] Evento chegada de segmento em ordem sem lacunas, anteriores já reconhecidos chegada de segmento em ordem sem lacunas, um ACK retardado pendente 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 chegada de segmento fora de ordem, com no. de seq. maior que esperado -> lacuna chegada de segmento que preenche a lacuna parcial ou completamente 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 3a-69

Fast Retransmit Período de timeout é geralmente longo: Longo atraso até a retransmissão do segmento perdido Detectar segmentos perdidos via ACKs duplicados Emissores geralmente enviam vários segmentos Se um segmento é perdido, provavelmente vão ser recebidos ACKs duplicados Se o emissor recebe 3 ACKs para o mesmo segmento, supõe que o segemtno subseqüente foi perdido: fast retransmit: retransmite o segmetno antes que o temporizador expire 3: Camada de Transporte 3a-70

Algoritmo Fast retransmit: evento: ACK recebido, com valor de ACK igual a y if(y > SendBase) { SendBase = y if (existem segemtnos ainda não reconhecidos) inicializa o temporizador } else { incrementa o contador de ACKs duplicados para y if (contador de ACKs duplicados para y = 3) { retransmite o segmento com n o seq y } Um ACK duplicado para um segmento já reconhecido previamente fast retransmit 3: Camada de Transporte 3a-71

TCP: Controle de Fluxo Lado receptor de uma conexão TCP tem um buffer de recepção: controle de fluxo remetente não esgotaria buffers do receptor por transmitir muito, ou muito rápidamente Processo da aplicação pode ser lento para retirar os dados do buffer Serviço de compatibilização de velocidades: compatibilizar a taxa de envio do emissor com a taxa de recebimento dos dados da aplicação do receptor 3: Camada de Transporte 3a-72

Controle de Fluxo TCP: como funciona? (Suponha que o TCP receptor discarte pacotes fora de ordem) = RcvWindow = RcvBuffer-[LastByteRcvd - LastByteRead] 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 Garante que não tenha overflow no buffer do 3: Camada de Transporte 3a-73

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 sem dados Passo 2: sistema servidor recebe SYN, responde com segmento de controle SYNACK aloca buffers especifica no. inicial de seq. Passo 3: sistema cliente recebe SYNACK, responde com um 3: Camada de Transporte 3a-74 segmento de ACK, que pode conter

TCP: Gerenciamento de Conexões (cont.) Encerrando uma conexão: cliente servidor cliente fecha soquete: clientsocket.close(); fechar FIN Passo 1: sistema cliente envia segmento de controle FIN ao servidor ACK FIN fechar Passo 2: servidor recebe FIN, responde com ACK. Encerra a conexão, enviando FIN. espera temporizada ACK fechada 3: Camada de Transporte 3a-75

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

TCP: Gerenciamento de Conexões (cont.) Ciclo de vida de servidor TCP Ciclo de vida de cliente TCP 3: Camada de Transporte 3a-77

Princípios de Controle de Congestionamento Congestionamento: informalmente: muitas fontes enviando muitos dados muito rapidamente para a rede poder tratar diferente de controle de fluxo! manifestações: perda de pacotes (esgotamento de buffers em roteadores) longos atrasos (enfileiramento nos buffers dos roteadores) um dos 10 problemas mais importantes em redes! 3: Camada de Transporte 3a-78

Causas/custos de congestionamento: cenário 1 dois remetentes, dois receptores um roteador, buffers infinitos sem retransmissão grandes retardos qdo. congestionada vazão máxima alcançável 3: Camada de Transporte 3a-79

Causas/custos de congestionamento: cenário 2 Um roteador, buffers finitos retransmissão pelo remetente de pacote perdido Host A λ in : dados originais λ out λ' in : dados originais, mais dados retransmitidos Host B Buffer finito compatilhado 3: Camada de Transporte 3a-80

Causas/custos de congestionamento: cenário 2 sempre: λ = in λ out ( goodput ) retransmissão perfeito apenas quando perda: λ > in λ out λ retransmissão de pacote atrasado (não perdido) faz in maior λ (que o caso perfeito) para o mesmo out custos de congestionamento: mais trabalho (retransmissão) para dado goodput retransmissões desnecessárias: enviadas múltiplas cópias do pacote 3: Camada de Transporte 3a-81

Causas/custos de congestionamento: cenário 3 quatro remetentes caminhos com múltiplos enlaces temporização/retransmissão Host A P: o que acontece à medida que λ in e crescem? λ in : dados originais λ' in : dados originais, mais dados retransmitidos Buffer finito compartilhado λ out λ in Host B 3: Camada de Transporte 3a-82

Causas/custos de congestionamento: cenário 3 H o s t A λ o u t H o s t B Outro custo de congestionamento: quando pacote é descartado, qq. capacidade de transmissão já usada (antes do descarte) para esse pacote foi desperdiçado! 3: Camada de Transporte 3a-83

Abordagens de controle de congestionamento Duas abordagens amplas para controle de congestionamento: Controle de congestionamento fim a fim : não tem realimentação explícita pela rede congestionamento inferido das perdas, retardo observados pelo sistema terminal abordagem usada pelo TCP Controle de congestionamento com apoio da rede: roteadores realimentam os sistemas terminais bit único indicando congestionamento (SNA, DECbit, TCP/IP ECN, ATM) taxa explícita p/ envio pelo remetente 3: Camada de Transporte 3a-84

Estudo de caso: controle de congestionamento no ABR da ATM ABR: available bit rate: serviço elástico se caminho do remetente sub-carregado : remetente deveria usar banda disponível se caminho do remetente congestionado: remetente reduzido à taxa mínima garantida células RM (resource management): enviadas pelo remetente, intercaladas com células de dados bits na célula RM iniciados por comutadores ( apoio da rede ) bit NI: não aumente a taxa (congestionamento moderado) bit CI: indicação de congestionamento células RM devolvidos ao remetente pelo receptor, sem alteração dos bits 3: Camada de Transporte 3a-85

Estudo de caso: controle de congestionamento em ABR da ATM Campo ER (explicit rate) de 2 bytes na célula RM comutador congestionado pode diminuir valor ER na célula taxa do remetente assim ajustada p/ menor valor possível entre os comutadores do caminho bit EFCI em células de dados ligado por comutador congestionado se EFCI ligado na célula de dados antes da célula RM, receptor liga bit CI na célula RM devolvida 3: Camada de Transporte 3a-86

TCP: Controle de Congestionamento controle fim a fim (sem apoio da rede) taxa de transmissão limitada pela tamanho da janela de congestionamento: LastByteSent-LastByteAcked CongWin CongWin é dinâmica, e é função do congestionamento na rede; Como TCP detecta congestionamento? Evento de perda = timeout ou 3 acks duplicados TCP emissor reduz taxa de transmissão (CongWin) depois de um evento de perda Três mecanismos: AIMD slow start conservative after timeout events 3: Camada de Transporte 3a-87

TCP: Controle de Congestionamento Congwin w segmentos, cada um c/ MSS bytes, enviados por RTT: throughput = w * MSS RTT Bytes/sec 3: Camada de Transporte 3a-88

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) 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 3a-89

TCP AIMD multiplicative decrease (decréscimo multiplicativo: reduz CongWin pela metade depois de um evento de perda 2 4 K b y t e s c o n g e s t i o n w i n d o w additive increase (crescimento aditivo): aumenta CongWin de 1 MSS a cada RTT na ausência de um evento de perda: probing 1 6 K b y t e s 8 K b y t e s t i m e Conexão TCP de longa duração 3: Camada de Transporte 3a-90

TCP: Partida lenta (Slow Start) Quando a conexão começa, CongWin = 1 MSS Exemplo: MSS = 500 bytes & RTT = 200 msec Taxa inicial = 20 kbps A banda disponível deve ser >> MSS/RTT Quando a conexão começa, aumenta a taxa exponencialmente até o primeiro evento de perda Resumo: taxa inicial baixa, mais cresce rapidamente (crescimento exponencial) 3: Camada de Transporte 3a-91

TCP: Partida lenta (slow start) Algoritmo Partida Lenta inicializa: Congwin = 1 for (cada segmento c/ ACK) Congwin++ until (evento de perda OR CongWin > threshold) RTT Estação A Estação B um segmento dois segmentos Quando a conexão começa, aumenta a taxa exponencialmente até que ococra uma perda Dobra CongWin a cada RTT, através do incremento de CongWin, a cada ACK quqtro segmentos tempo 3: Camada de Transporte 3a-92

Refinamento Depois de 3 DupACKs: CongWin é reduzida a metade Janela cresce linearmente Mas depois de um evento de timeout: CongWin é reduzida a 1 Filosofia: o recebimento de 3 ACKs duplicados indica que a rede tem condição de transmitir alguns segmentos Ocorrência de timeout antes de 3 ACKs duplicados é mais alarmante MSS; Janela cresce exponencialmente até o valor do threshold, e depois cresce linearmente 3: Camada de Transporte 3a-93

Refinamento (mais) Q: Quando o crescimento deve mudar de exponencial para linear? A: Quando CongWin atinge 1/2 do seu valor antes do timeout. Implementação: Threshold variável Quando ocorre uma perda, faz-se Threshold = CongWin/2 congestion window size (segments) 14 12 10 8 6 4 2 0 threshold TCP Tahoe TCP Reno 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Transmission round Series1 Series2 3: Camada de Transporte 3a-94

TCP: Prevenção do Congestionamento (congestion Avoidance prevenção 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 3a-95

Resumo: Controle de Congestionamento Quando CongWin está abaixo do Threshold, o emissor está na fase de slow-start, e a janela cresce exponencialmente Quando CongWin está acima do Threshold, o emissor está na fase de congestion-avoidance, e a janela cresce linearmente Quando são recebidos três ACK duplicados, faz-se Threshold = CongWin/2 e CongWin = Threshold. Quando ocorre um timeout, faz-se Threshold = 3: Camada de Transporte 3a-96

Eqüidade TCP Meta de eqüidade: 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 TCP conexão 2 Roteador gargalo capacidade R 3: Camada de Transporte 3a-97

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 Vazão da conexão 2 perda: diminui janela por fator de 2 evitar congestionamento: aumento aditivo perda: diminui janela por fator de 2 evitar congestionamento: aumento aditivo Vazão da conexão 1 R 3: Camada de Transporte 3a-98

Eqüidade (mais) Eqüidade e UDP Aplic. Multimídia geralmente não usam TCP Não desejam que a taxa seja reduzida pelo controle de congestionamento Geralmente usam UDP: audio/video a taxa constante, toleram perdas de pacotes Área de pesquisa: TCP Eqüidade e conexões TCP paralelas Nada previne que aplic. abram várias conexões simultânceas entre os 2 hosts; Wrowsers fazem isto Exemplo: enlace com taxa igual a R, com 9 conexões; Nova aplic. requer uma conexão TCP, recebe R/10 da taxa 3: Camada de Transporte 3a-99 Nova aplic. requer 11

TCP: modelagem de latência P: Quanto tempo custa para receber um objeto de um servidor WWW depois de enviar o pedido? Ignorando o congestionamento, a latência é influenciada por: Estabelecimento de conexão TCP retardo de transferência de dados Slow start Notação, suposições: Supomos um enlace entre cliente e servidor de taxa R Supomos: janela de congestionamento fixo, W segmentos S: MSS (bits) O: tamanho do objeto (bits) sem retransmissões (sem perdas, sem erros) Tamanho da janela: Assume-se: janela de transmissão fixa, igual a w segmentos; Depois janelas dinâmicas, modelando slow start 3: Camada de Transporte 3a- 100

3: Camada de Transporte 3a- 101 Janela de congestionamento de tamanho fixo (1) Primeiro caso: WS/R > RTT + S/R: ACK do primeiro segmento na janela chega antes de enviar todos dados na janela latência = 2RTT + O/R

3: Camada de Transporte 3a- 102 Janela de congestionamento de tamanho fixo (2) Segundo caso: WS/R < RTT + S/R: aguarda ACK depois de enviar todos os dados na janela latência = 2RTT + O/R + (K-1)[S/R + RTT - WS/R]

3: Camada de Transporte 3a- 103 TCP: modelagem de latência: Slow Start(1) Agora supomos que a janela cresce de acordo com o algoritmo de Slow Start. Mostramos que a latência de um objeto de tamanho O é: Latência=2RTT O R P [ RTT S R ] 2P 1 S R Onde: - P é o número de vezes TCP para no servidor: P=min{Q, K 1} - onde Q é o número de vezes que o servidor pararia 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(2) Exemplo: O/S = 15 segmentos K = 4 janelas Q = 2 P = min{k-1,q} = 2 Servidor para P=2 vezes Componentes da Latência: i n i t i a t e T C P c o n n e c t i o n r e q u e s t o b j e c t 2 RTT for connection estab and request O/R to transmit object o b j e c t d e l i v e r e d R T T time server idles due to slow start f i r s t w i n d o w = S / R s e c o n d w i n d o w = 2 S / R t h i r d w i n d o w = 4 S / R f o u r t h w i n d o w = 8 S / R c o m p l e t e t r a n s m i s s i o n Servidor para: t i m e a t c l i e n t t i m e a t s e r v e r 3: Camada de Transporte 3a- 104

S R TCP: modelagem de latência: (3) + RTT =tempo quando o servidor inicia o envio do segmento até quando o servidor recebe reconhecimento k 2 1 S = tempo para enviar a k-ésima janela R S R + RTT + k 2 1 S R tempo de bloqueio após a = k-ésima janela inicia conexão TCP pede objeto RTT primeira janela = S/R segunda janela = 2S/R terceira janela = 4S/R latencia = O R + 2RTT + P p = 1 TempoBloqueio p quarta janela = 8S/R = = O R O R + 2RTT + 2RTT + P k = 1 [ S R + P[ RTT + RTT + S R 2 ] (2 k 1 P S R ] 1) S R objeto entregue tempo no cliente tempo no servidor transmissão completa 3: Camada de Transporte 3a- 105

Modelagem HTTP Assuma que páginas Web consistem de: 1 página HTML base (com tamanho igual a O bits) M imagens (cada uma com O bits) HTTP não-persistente : M+1 conexões TCP em série Tempo de resposta = (M+1)O/R + (M+1)2RTT + soma dos períodos de inatividade HTTP persistente : 2 RTT para requisitar e receber o arquivo base HTML 1 RTT para requisitar e receber M imagens Tempo de resposta = (M+1)O/R + 3RTT + soma dos períodos de inatividade HTTP não-persistente com X conexões paralelas 1 TCP conexão para o arquivo base M/X conjuntos de conexões paralelas para as imagens 3: Camada de Transporte 3a- 106

HTTP: tempo de resposta (em segundos) RTT = 100 msec, O = 5 Kbytes, M=10 e X=5 20 18 16 14 12 10 8 6 4 2 0 não-persistente persistente paralela nãopersistente 28 Kbps 100 Kbps 1 Mbps 10 Mbps Para redes com valores de banda baixos, o tempo de conexão e resposta e domindado pelo tempo de transmissão Conexões persistentes não apresentam melhora significativa em relação a conexões paralelas 3: Camada de Transporte 3a- 107

HTTP: tempo de resposta (em segundos) RTT =1 seg, O = 5 Kbytes, M=10 e X=5 70 60 50 40 30 20 10 não-persistente persistente paralela nãopersistente 0 28 100 1 10 Kbps Kbps Mbps Mbps Para valores grandes de RTT, o tempo de resposta é dominado pelo atraso do estabelecimento da conexão e slow start. Conexões persistentes possibilita uma melhora importante para a redução do atraso: particularmente em redes com grandes valores de atrasoxbanda (delay bandwidth) 3: Camada de Transporte 3a- 108

3: Camada de Transporte 3a- 109 Capítulo 3: Resumo Princípios atrás dos serviços da camada de transporte: multiplexação/ demultiplexaçã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