camada de transporte transferindo mensagem entre processos · 2015. 6. 19. · 5 serviços e...

125
1 Camada de Transporte Transferindo Mensagem entre Processos

Upload: others

Post on 02-Mar-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

1

Camada de TransporteTransferindo Mensagem entre Processos

Page 2: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

2

Serviços e protocolos de transporte

● provê comunicação lógica entre processos de aplicação executando em hosts diferentes

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

transporte lógico fim a fim

Page 3: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

3

Serviços? Como?

Page 4: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

4

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

Page 5: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

5

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 finais – 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– Internet: TCP e UDP

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

transporte lógico fim a fim

Page 6: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

6

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: Confiabilidade, Integridade, Vazão, e tempo;

➼ depende dos serviços da camada de rede;➼ estende os serviços da camada de rede

Page 7: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

7

Multiplexação/demultiplexação

aplicação

transporte

rede

enlace

física

P1 aplicação

transporte

rede

enlace

física

aplicação

transporte

rede

enlace

física

P2P3 P4P1

host 1 host 2 host 3

= processo= socket

entrega de segmentos recebidos para os devidos processos da camada de aplicação.

Demultiplexação no receptor:obter dados dos diversosprocessos, envelopando-os com cabeçalho (usado depois para demultiplexação)

Multiplexação no transmissor:

Page 8: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

8

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 porta receptor

32 bits

dados daaplicação

(mensagem)

outros campos do cabeçalho

formato de segmento TCP/UDP

Page 9: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

9

Demultiplexação não orientada a conexão➘ Cria sockets com os

números de portaDatagramSocket 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...

Page 10: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

10

Demultiplexação não orientada a conexão (cont)

DatagramSocket serverSocket = new DatagramSocket(6428);

serverIP: C

ClientIP:B

P2

client IP: A

P1P1P3

SP: 6428DP: 9157

SP: 9157DP: 6428

SP: 6428DP: 5775

SP: 5775DP: 6428

SP provê “endereço de retorno”

Page 11: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

11

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

Page 12: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

12

Demultiplexação orientada a conexão

clienteIP:B

P3

cliente IP: A

P1P1P3

servidorIP: C

SP: 80DP: 9157

SP: 9157DP: 80

SP: 80DP: 5775

SP: 5775DP: 80

P4

Page 13: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

13

QUESTÕES

● Considere uma conexão de dados confiável. Suponha que um segmento que viaja do Sistema A para o Sistema B tem número de porta fonte x e número de porta destino y. Quais são as portas de origem e destino em um segmento que viaja de B para A?

● É possível para uma aplicação obter transferência confiável de dados se ela estiver usando o serviço de transferência não confiável da camada de transporte?

Page 14: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

14

QUESTÕES(II)

● Supondo um processo em um sistema C esteja usando um socket com número de porta 6789 criado para uma comunicação não-orientada a conexão. Suponha que o sistema A e B envie segmentos para C destinada a porta 6789. Serão esses segmentos destinados ao mesmo socket? Se sim como o processo irá identificar a origem dos segmentos?

Page 15: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

15

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.

● Espera-se:

– Dinâmica de troca de mensagens pelas entidades que usam o protocolo;

– Formato das mensagens enviadas(msg requisição; msg resposta).

Page 16: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

16

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

Page 17: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

17

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

à aplicação

porta origem porta dest.

32 bits

Dados de aplicação

(mensagem)

UDP segment format

comprimento checksum

Comprimento embytes do

segmento UDP,incluindo cabeçalho

Page 18: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

18

Checksum UDP

Remetente:● 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.

Meta: detecta “erro” (e.g., bits invertidos) no segmento transmitido

Page 19: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

19

Checksum UDP: Cálculo

0110011001100000010101010101010100000000000000001000111100001100

Palavra 1

Palavra 2

CheckSum

Palavra 3

Page 20: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

20

Checksum UDP: Cálculo palavra1 + palavra2

011001100110000001010101010101011011101110110101

Palavra 1

Palavra 2

Page 21: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

21

Checksum UDP: Cálculo resultado anterior + palavra3

101110111011010100000000000000001011101110110101

Resultado anterior

Checksum

Page 22: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

22

Checksum UDP: Cálculo resultado anterior + palavra3

101110111011010110001111000011000100101011000010

Resultado anterior

Palavra 3

CheckSumComplemento de 1

1011010100111101

Lembra do campo checksum zerado????

Page 23: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

23

Checksum UDP: Cálculo

011001100110000001010101010101011000111100001100

Palavra 1

Palavra 2

Palavra 3

CheckSumComplemento de 1

1011010100111101

Lembra do campo checksum zerado????

Page 24: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

24

Checksum UDP: Após o Cálculo

0110011001100000010101010101010110110101001111011000111100001100

Palavra 1

Palavra 2

CheckSum

Palavra 3

Page 25: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

25

Checksum UDP: No destinatário

101110111011010110001111000011000100101011000010

Resultado Palavra 1+Palavra 2

Palavra 3

CheckSum 1011010100111101

Page 26: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

26

Checksum, pra quê?

● Já que existe serviço similar na camada de Enlace, então pra quê um serviço redundante?

Page 27: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

27

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

Page 28: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

28

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

estado1

estado2

evento causando transição de estadosações tomadas na transição de estado

eventoações

Page 29: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

29

Vamos modelar a dinâmica do Trabalho

Page 30: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

30

Qual a suposição????

Serviço: Transfer. Conf. Dados

Page 31: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

31

Princípios de Transferência confiável de dados

Serviço Prestado: MELHOR Esforço

Page 32: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

32

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)

Page 33: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

33

Transferência confiável de dados (rdt): Interfaces do protocolo

LadoTrans.

LadoRecep.

rdt_send(): chamada de cima, (p.ex.,pela apl.). Dados recebidos p/entregar à camada sup. do receptor

udt_send(): chamada por rdt, p/ transferir pacote pelocanal ñ confiável ao receptor

rdt_rcv(): chamada quando pacote chega no lado receptor do

canal

deliver_data(): chamada por rdt p/ entregar dados

p/ camada superior

Page 34: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

34

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.

Page 35: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

35

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

estado1

estado2

evento causando transição de estadosações tomadas na transição de estado

eventoações

Page 36: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

36

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

Page 37: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

37

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– Retransmissão

Page 38: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

38

rdt2.0: especificação da FSM

FSM do remetente FSM do receptor

Page 39: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

39

rdt2.0: especificação da FSM

FSM do remetente FSM do receptor

Page 40: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

40

rdt2.0: em ação (sem erros)

FSM do remetente FSM do receptor

Page 41: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

41

rdt2.0: em ação (com erro)

FSM do remetente FSM do receptor

Page 42: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

42

rdt2.0 tem uma falha fatal!

O que acontece se ACK/NAK com erro?

➘ 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 corretamente!

O que fazer?

➘ Remetente não sabe o que passou no receptor!● não se pode apenas retransmitir: possibilidade de pacotes

duplicados

Page 43: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

43

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;

Page 44: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

44

rdt2.1: remetente, trata ACK/NAKs c/ erro

Page 45: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

45

rdt2.1: remetente, trata ACK/NAKs c/ erro

Page 46: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

46

rdt2.1: receptor, trata ACK/NAKs com erro

Page 47: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

47

rdt2.1: receptor, trata ACK/NAKs com erro

Page 48: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

48

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

Page 49: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

49

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

Page 50: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

50

rdt2.2: Protocolo sem NAKs remetente

Page 51: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

51

rdt2.2: Protocolo sem NAK - Receptor

Page 52: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

52

Para-e-Espera: canais com erros e perdas

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

– remetente espera até ter certeza que se perdeu pacote ou ACK, e então retransmite

P: como lidar com perdas?

Page 53: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

53

Para-e-Espera: 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

Page 54: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

54

Para-e-espera: Remetente

Page 55: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

55

Para-e-Espera: em ação

Page 56: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

56

Desempenho de Para-e-Espera● Algoritmo Funciona, porém seu desempenho é muito ruim● exemplo: enlace de 1 Gbps, retardo fim a fim(a ida) de 15 ms,

pacote de 1KB:

➼ 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!

Ttransmitir=8Kb

10**9 b/sec = 8 microsecL (tamanho do pacote - bits)R (taxa de transmissão, bps)=

U transmissor =

.008

30.008 = 0.00027 (0.027%)L / R

RTT + L / R =

100030

∗1KB

Page 57: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

57

A operação do para-e-espera

bit primeiro pacote transmitido, t = 0

emissor receptor

RTT

último bit transmitido, t = L / R

bit do primeiro pacote recebidoúltimo bit do pacote recebido, envia ACK

ACK recebido, envia próximo pacote, t = RTT +

L / R

U emissor =

.008

30.008 = 0.00027L / R

RTT + L / R =

Page 58: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

58

Protocolos “dutados” (pipelined)

Dutagem (pipelining): remetente admite múltiplos pacotes “em trânsito”, ainda não reconhecidos

Page 59: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

59

Pipelining: aumenta utilizaçãobit primeiro pacote transmitido, t = 0

emissor receptor

RTT

último bit transmitido, t = L / R

primeiro bit do pacote recebido

último bit recebido, envia ACK

ACK recebido, envia próximo pacote, t = RTT + L / R

último bit do 2o pacote recebido, envia ACKúltimo bit do 3o pacote recebido, envia ACK

Aumenta a utilização de um fator de 3

U emissor =

.024

30.008 = 0.0008 microsegundos 3*L / R

RTT + L / R =

Page 60: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

60

Protocolos “dutados” (pipelined)

Volta-N e Retransmissão seletiva.

Page 61: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

61

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;

● Remetente mantém timer para cada pacote não-Ack– Quando o timer expirar

retransmite somente pacotes Não-acks.

Page 62: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

62

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.

Page 63: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

63

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 que serve para cada pacote em trânsito➘ timeout(n): retransmite pacote n e todos os pacotes com no. de seq maiores na janela

Page 64: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

64

Volta-N: FSM do remetente

Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])…udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

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)

base = getacknum(rcvpkt)+1If (base == nextseqnum) stop_timer else start_timer

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

base=1nextseqnum=1

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Λ

Page 65: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

65

Volta-N: FSM do receptor

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

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum)

extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(expectedseqnum,ACK,chksum)udt_send(sndpkt)expectedseqnum++

expectedseqnum=1sndpkt = make_pkt(expectedseqnum,ACK,chksum)

Λ

Page 66: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

66

Volta-Nem ação

Page 67: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

67

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

Page 68: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

68

Retransmissão seletiva: janelas de remetente, receptor

Page 69: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

69

Retransmissão seletiva

dados de cima:● se próx. no. de seq na janela,

envia pacote

timeout(n):● reenvia pacote n, reiniciar

temporizadorACK(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]

➘ ACK(n)senão: ➘ ignora

receptorremetente

Page 70: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

70

Retransmissão seletiva em ação

Page 71: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

71

Para-e-Espera: em ação

Page 72: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

72

Questões de Implementação

● Perdas e atrasos são tratados pelas mesmas idéias

– ACK– Número de Sequência– Timer– Retransmissão

● Como tratar o tamanho da dutagem?

● Como determinar que pacote foi perdido?

● Que pacote deve ser retransmitido?

● O duto tem tamanho fixo ?

Page 73: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

73

Exercício

● Capture, identifique e explique a troca de mensagens entre dois hospedeiros que se comunicam utilizando o TCP.

Considere:

– O Uso do wireshark para capturar as mensagens

– Aponte as mensagens de sincronização da conexão

– Houve restabelecimento da conexão?– A conexão foi aceita na primeira tentativa?– Qual o tamanho do duto?

Page 74: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

74

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)

Page 75: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

75

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

● transmissão full duplex:– fluxo de dados bi-

direcional na mesma conexão

– MSS: tamanho máximo de segmento

● orientado a conexão: – handshaking (troca de

msgs de controle) inicia estado de remetente, receptor antes de trocar dados

● fluxo controlado:– receptor não será

sobrecarregado

● 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 td o o r

T C Ps e n d b u f f e r

T C Pr e c e i v e b u f f e r

s o c k e td o o r

s e g m e n t

a p p l i c a t i o nw r i t e s d a t a

a p p l i c a t i o nr e a d s d a t a

Page 76: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

76

TCP: estrutura do segmento

no. porta origem no. porta dest

32 bits

dados daaplicação

(tam. variável)

número de seqüêncianúmero de reconhecimento

janela receptorptr dados urg.checksum

FSRPAUtam.cab.

semuso

Opções (tam. variável)

URG: aviso de dados Urgentes (pouco usado)

ACK: no. ACKválido

PSH: Transf. ImediataCam. aplic(pouco usado)

RST, SYN, FIN:gestão de conexão

(comandos deestabelecimento,

liberação)

no. bytes rcpt queraceitar

contagem de dadospor bytes (não segmentos!)

checksum Internet

(como UDP)

Page 77: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

77

TCP: nos. de seq. e ACKs

Nos. de seq.:– “número” do byte,

relativo ao fluxo, no segmento

ACKs:– no de seq do próx.

byte esperado do outro lado

– Que tipo de ACK? P: como receptor trata

segmentos fora da ordem?– R: espec do TCP

omissa - deixado ao implementador

Estação A Estação B

Seq=42, ACK=79, data = ‘C’

Seq=79, ACK=43, data = ‘C’

Seq=43, ACK=80

Usuáriotecla

‘C’

A reconhecechegada

do ‘C’ecoado

B reconhecechegada de

‘C’, ecoa‘C’ de volta

tempocenário simples de telnet

Page 78: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

78

TCP: Tempo de Resposta (RTT)

RTT_estimado = (1-α)* RTT_estimado + α*RTT_amostra

➘ média móvel exponencialmente ponderada➘ influência de cada amostra diminui exponencialmente com o

tempo➘ valor típico de α : 0.125

Page 79: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

79

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

Page 80: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

80

Estimativa RTT e Cálculo do Timeout

60

62

64

66

68

70

72

74

76

ICOMP - Google

RTT medio (alpha=0.875) Timeout (Beta = 0.25)

Medido

Estimado

timeout

medidas

RT

T

Page 81: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

81

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

Page 82: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

82

Eventos doTCP emissor:Dados recebidos da aplic:➘ Cria o segmento com no

de seq X➘ seq X é o número do

byte do fluxo no 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

Page 83: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

83

TCP: Tempo de Resposta (RTT) e TemporizaçãoP: como escolher valor

do temporizador TCP?

➘ maior que o RTT➼ note: RTT pode

variar➘ muito curto:

temporização prematura➼ retransmissões

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)

Page 84: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

84

Transfe-rência confiável de dados

00 sendbase = número de seqüência inicial01 nextseqnum = número de seqüência inicial0203 loop (forever) { 04 switch(event) 05 event: dados recebidos da aplicação acima06 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 */

RemetenteTCPsimplificado

Page 85: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

85

TCP: cenários de retransmissão

Estação A

Seq=92, 8 bytes de dados

ACK=100

perdatem

pori

zaçã

o

tempo cenário doACK perdido

Estação B

X

Seq=92, 8 bytes de dados

ACK=100

Host A

Seq=100, 20 bytes de dados

ACK=100

Tem

p.p/

Seq

=92

temporização prematura,ACKs cumulativos

Host B

Seq=92, 8 bytes de dados

ACK=120

Seq=92, 8 bytes de dados

Tem

p. p

/ Se

q=10

0

ACK=120

tempo

Page 86: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

86

TCP: cenários de retransmissão (cont)Host A

Seq=92, 8 bytes data

ACK=100

loss

tim

eout

Cenário de ACK cumulativo

Host B

X

Seq=100, 20 bytes data

ACK=120

time

Page 87: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

87

TCP geração de ACKs [RFCs 1122, 2581]

Evento

chegada de segmento em ordemsem lacunas,anteriores já reconhecidos

chegada de segmento em ordemsem lacunas,um ACK retardado pendente

chegada de segmento fora de ordem, com no. de seq. maiorque esperado -> lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Ação do receptor TCP

ACK retardado. Espera até 500msp/ próx. segmento. Se não chegarsegmento, envia ACK

envia imediatamente um únicoACK cumulativo

envia ACK duplicado, indicando no. de seq.do próximo byte esperado

ACK imediato se segmento noinício da lacuna

Page 88: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

88

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 segmento subseqüente foi perdido:

➼ fast retransmit: retransmite o segmento antes que o temporizador expire

Page 89: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

Transport Layer 3-89

X

fast retransmit após remetente receber triplo ACK Duplicado

Host BHost A

Seq=92, 8 bytes de dado

ACK=100ti

me

ou

t

ACK=100

ACK=100

ACK=100

TCP fast retransmit

Seq=100, 20 bytes de dado

Seq=100, 20 bytes de dado

Page 90: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

90

evento: ACK recebido, com valor de ACK igual a y if(y > SendBase) { SendBase = y if (existem segmentos 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 no seq y }

Algoritmo Fast retransmit:

Um ACK duplicado para um segmento já reconhecido previamente

fast retransmit

Page 91: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

91

remetente não esgotaria buffers do receptor por

transmitir muito, ou muito rapidamente

controle de fluxo

TCP: Controle de Fluxo

➘ Lado receptor de uma conexão TCP tem um buffer de recepção:

➘ 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 pela aplicação no receptor

Page 92: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

92

TCP: estrutura do segmento

no. porta origem no. porta dest

32 bits

dados daaplicação

(tam. variável)

número de seqüêncianúmero de reconhecimento

janela receptorptr dados urg.checksum

FSRPAUtam.cab.

semuso

Opções (tam. variável)

no. bytes rcpt queraceitar

Page 93: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

93

Controle de Fluxo TCP: como funciona ?

(Suponha que o TCP receptor descarte 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 receptor

Page 94: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

94

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 segmento de ACK, que pode conter dados

Page 95: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

95

TCP: Gerenciamento de Conexões (cont.)

Encerrando uma conexão:

cliente fecha soquete: clientSocket.close();

Passo 1: sistema cliente envia segmento de controle FIN ao servidor

Passo 2: servidor recebe FIN, responde com ACK. Encerra a conexão, enviando FIN.

cliente

FIN

servidor

ACK

ACK

FIN

fechar

fechar

fechada

espe

ra

tem

pori

zada

Page 96: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

96

TCP: Gerenciamento de Conexões (cont.)

Passo 3: cliente recebe FIN, responde com ACK.

– Entre em “espera temporizada” - responderá com ACK a FINs recebidos

Step 4: servidor, recebe ACK. Conexão encerrada.

Note: com pequena modificação, consegue tratar de FINs simultâneos.

cliente

FIN

servidor

ACK

ACK

FIN

fechando

fechando

fechada

espe

rate

mpo

riza

dafechada

Page 97: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

97

TCP: Gerenciamento de Conexões (cont.)

Ciclo de vidade cliente TCP

Ciclo de vidade servidor TCP

Page 98: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

98

Princípios de Controle de Congestionamento

Page 99: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

99

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)

Page 100: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

100

Controle de Congestionamento

● 20 Questões!!!● Problema de

Otimização (NUM)● TCP Tahoe (1988) e

Reno (fast recover) soluções para NUM específico

● Outras versões:– TCP Vegas(1995),

FAST TCP(2002), CUBIC (2005)

Page 101: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

109

Abordagens de 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 final

● 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

Duas abordagens amplas para controle de congestionamento:

Page 102: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

112

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 ≤ Min{CongWin, RcvWin}

➘ 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➼ Partida lenta➼ Prevenção de

congestionamento

Page 103: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

113

TCP: Controle de Congestionamento

➘ w segmentos, cada um c/ MSS bytes, enviados por RTT:

Vazão = w * MSS

RTT Bytes/sec

Congwin

Page 104: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

114

TCP: Controle de Congestionamento

➘ duas “fases”➼ partida lenta➼ Prevenção de

congestionamento➘ variáveis importantes:

➼ Congwin

➼ threshold: define limiar entre fases de partida lenta, controle de congestionamento

➘ “sondagem” para banda utilizável:

➼ O ideal: transmitir o mais rápido possível (Congwin o máximo possível) sem perder pacotes

➼ aumentar Congwin até perder pacotes (congestionamento)

➼ perdas: diminui Congwin, depois volta a à sondagem (aumento) novamente

Page 105: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

115

Os mecanismos: AIMD

8 K b y t e s

1 6 K b y t e s

2 4 K b y t e s

t i m e

c o n g e s t i o nw i n d o w

Multiplicative Decrease (decréscimo multiplicativo: reduz CongWin pela metade depois de um evento de perda

Additive Increase (crescimento aditivo): aumenta CongWin de 1 MSS a cada RTT na ausência de um evento de perda: probing

Conexão TCP de longa duração

Page 106: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

116

Os mecanismos: Partida lenta

➘ Quando a conexão começa, CongWin = 1 MSS

➼ Exemplo: MSS = 1460 bytes & RTT = 200 msec

➼ Taxa inicial = 7.3 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)

Page 107: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

117

Os mecanismos: Partida lenta

➘ Quando a conexão começa, aumenta a taxa exponencialmente até que ocorra uma perda

➼ Dobra CongWin a cada RTT, através do incremento de CongWin, a cada ACK recebido

inicializa: Congwin = 1for (cada segmento c/ ACK) Congwin++until (evento de perda OR CongWin > threshold)

Estação A

um segmento

RTT

Estação B

tempo

dois segmentos

quatro segmentos

Algoritmo Partida Lenta

Page 108: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

118

Refinamento: TCP Reno➘ Depois de 3 DupACKs:

➼ CongWin é reduzida a metade

➼ Janela cresce linearmente➘ Mas depois de um evento de

timeout:➼ CongWin é reduzida a 1

MSS; ➼ Janela cresce

exponencialmente até o valor do threshold, e depois cresce linearmente

o recebimento de 3 ACKs duplicados indica que a rede tem condição de transmitir alguns segmentosOcorrência de timeout antes de 3 ACKs duplicados é “mais alarmante”

Filosofia:

Page 109: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

119

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

Page 110: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

120

Os mecanismos: Prevenção do Congestionamento

/* partida lenta acabou */ /* Congwin > threshold */Until (event de perda) { cada w segmentos reconhecidos: Congwin++ }threshold = Congwin/2Congwin = 1faça partida lenta

1

1: TCP Reno pula partida lenta (recuperaçãorápida) depois de três ACKs duplicados

prevenção congestionamento

Page 111: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

121

Resumo: Controle de Congestionamento➘ Quando CongWin está abaixo do Threshold, o emissor

está na fase de partida lenta, e a janela cresce exponencialmente

➘ Quando CongWin está acima do Threshold, o emissor está na fase de prevenção de congestionamento, 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 = CongWin/2 e CongWin = 1 MSS.

Page 112: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

122

Resumo: Princípios

● Controle fim-a-fim via retorno negativo

– Inferido por ACK duplicado e temporizadores● Controle baseado em janela deslizante

– Aumento e redução do tamanho da janela controla a taxa de dados

● Aumento aditivo e redução multiplicativa

– Evita congestionamento sendo conservador● Infere congestionamento pela perda ou atraso de pacotes● Estima perda e atraso de pacotes usando temporizadores

Page 113: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

123

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

Eqüidade TCP

TCP conexão 1

Roteadorgargalo

capacidade R

TCP conexão 2

Page 114: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

124

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

R

compartilhamento igual da banda

Vazão da conexão 1

Vazã

o d a

con

e xão

2

evitar congestionamento: aumento aditivoperda: diminui janela por fator de 2

evitar congestionamento: aumento aditivoperda: diminui janela por fator de 2

Page 115: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

125

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 friendly

Eqüidade e conexões TCP paralelas

➘ Nada previne que aplic. abram várias conexões simultânceas entre os 2 hosts;

➘ Browsers 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➼ Nova aplic. requer 11 conexões

TCP, recebe R/2 da taxa

Page 116: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

126

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

Page 117: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

127

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

Page 118: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

128

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]

Page 119: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

129

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 é:

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.

Latência=2RTTOR

P [RTTSR ]−2P−1 S

R

Page 120: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

130

TCP: modelagem de latência: Slow Start(2)

R T T

i n i t i a t e T C Pc o n n e c t i o n

r e q u e s to b j e c t

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 et r a n s m i s s i o no b j e c t

d e l i v e r e d

t i m e a tc l i e n t

t i m e a ts e r v e r

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:

• 2 RTT for connection estab and request

• O/R to transmit object

• time server idles due to slow start

Servidor para: P = min{K-1,Q} vezes

Page 121: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

131

TCP: modelagem de latência: (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

TempoBloqueioRTTR

O

P

kP

k

P

pp

)12(][2

]2[2

2latencia

1

1

1

−−+++=

−+++=

++=

=

=

tempo de bloqueio após ak-ésima janela 2 1

R

SRTT

R

S k =

−+

+−

até quando o servidor recebe reconhecimento

tempo quando o servidor inicia o envio do segmento=+RTTR

S

tempo para enviar a k-ésima janela2 1 =−

R

Sk

RTT

iniciaconexão TCP

pedeobjeto

primeira janela= S/R

segunda janela= 2S/R

terceira janela= 4S/R

quarta janela= 8S/R

transmissãocompletaobjeto

entregue

tempo nocliente

tempo noservidor

Page 122: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

132

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➼ Tempo de resposta = (M+1)O/R + (M/X + 1)2RTT + soma dos períodos de

inatividade

Page 123: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

133

02468

101214161820

28Kbps

100Kbps

1Mbps

10Mbps

HTTP: tempo de resposta (em segundos)RTT = 100 msec, O = 5 Kbytes, M=10 e X=5

Para redes com valores de banda baixos, o tempo de conexão e resposta e domindado pelo tempo de transmissãoConexões persistentes não apresentam melhora significativa em relação a conexões paralelas

não-persistente

persistente

paralela não-persistente

Page 124: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

134

0

10

20

30

40

50

60

70

28Kbps

100Kbps

1Mbps

10Mbps

não-persistente

persistente

paralela não-persistente

HTTP: tempo de resposta (em segundos)RTT =1 seg, O = 5 Kbytes, M=10 e X=5

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)

Page 125: Camada de Transporte Transferindo Mensagem entre Processos · 2015. 6. 19. · 5 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando

135

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