48
3: Camada de Transporte 3a-1 Comparação entre as camadas Camada de Transporte repousa exatamente a camada de rede. Protocolo da camada de transporte fornece comunicação lógica entre processos, rodando em hosts diferentes. Protocolo da camada de rede fornece comunicação lógica entre hosts. Esta distinção é sutil, mas MUITO

Comparação entre as camadas

Embed Size (px)

DESCRIPTION

Comparação entre as camadas. Camada de Transporte repousa exatamente a camada de rede. Protocolo da camada de transporte fornece comunicação lógica entre processos , rodando em hosts diferentes. Protocolo da camada de rede fornece comunicação lógica entre hosts . - PowerPoint PPT Presentation

Citation preview

Page 1: Comparação entre as camadas

3: Camada de Transporte 3a-1

Comparação entre as camadas Camada de Transporte repousa exatamente a camada de rede.

Protocolo da camada de transporte fornece comunicação lógica entre processos, rodando em hosts diferentes.

Protocolo da camada de rede fornece comunicação lógica entre hosts.

Esta distinção é sutil, mas MUITO importante!!!

Page 2: Comparação entre as camadas

3: Camada de Transporte 3a-2

Camada de Transporte X Camada de Rede Considere 12 irmãos numa casa em São Paulo.

E outros 12 irmãos em outra casa em Boa Vista no Acre.

Os de SP São primos daqueles em Boa Vista, e escrevem uns para os outros semanalmente.

Em SP, João recolhe as cartas dos irmãos e as entrega ao correio.

No Acre, Maria recolhe as cartas dos irmãos, e as entrega ao correio.

Ambos também fazem a distribuição local do que chega.

Page 3: Comparação entre as camadas

3: Camada de Transporte 3a-3

Camada de Transporte X Camada de Rede (2)

Hosts (end systems) = Casas.

Processos = os primos que trocam mensagens.

Mensagens da Aplicação = cartas em envelopes.

Protocolo da camada de rede = serviço postal (correio).

Protocolo da camada de transporte = João e Maria.

Page 4: Comparação entre as camadas

3: Camada de Transporte 3a-4

Capítulo 3: Camada de TransporteMetas do capítulo: compreender os

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

Resumo do Capítulo: serviços da camada de transporte multiplexação/demultiplexação transporte sem conexão: UDP princípios de transferência confiável

de dados transporte orientado a conexão: TCP

transferência confiável controle de fluxo gerenciamento de conexões

princípios de controle de congestionamento

controle de congestionamento em TCP

Page 5: Comparação entre as camadas

3: Camada de Transporte 3a-5

Serviços e protocolos de transporte

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

protocolos de transporte executam em sistemas terminais

serviços das camadas de transporte X rede:

camada de rede : dados transferidos entre sistemas

camada de transporte: dados transferidos entre processos

depende de, estende serviços da camada de rede

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: Comparação entre as camadas

3: Camada de Transporte 3a-6

Serviços e protocolos de transporte (2)

Do ponto de vista da APLICAÇÃO a camada de transporte permite enxergar os sistemas como se eles estivessem fisicamente conectados.

Mesmo que existam vários roteadores, links e outros equipamentos no caminho.

A camada de Aplicação não tem que se preocupar com os detalhes físicos da infra-estrutura de interligação, usada para carregar as mensagens.

Page 7: Comparação entre as camadas

3: Camada de Transporte 3a-7

Serviços e protocolos de transporte

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

transporte lógico fim a fim

Como já foi dito: Protocolos de transporte

são implementados nos sistemas de extremidade (end systems) e não nos roteadores intermediários.

TRANSPORTE: Camada 4, superior à camada de rede

Page 8: Comparação entre as camadas

3: Camada de Transporte 3a-8

Protocolos da camada de transporte

Serviços de transporte na Internet:

entrega confiável, ordenada, ponto a ponto (TCP)

congestionamento controle de fluxo estabelecimento de

conexão (setup) entrega não confiável,

(“melhor esforço”), não ordenada, ponto a ponto ou multiponto: UDP

serviços não disponíveis: tempo-real garantias de banda multiponto confiável

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 9: Comparação entre as camadas

3: Camada de Transporte 3a-9

Multiplexação/demultiplexação

Lembrança: segmento unidade de dados trocada

entre entidades da camada de transporte

= TPDU: transport protocol data unit receptor

Demultiplexação: entrega de segmentos recebidos para os processos da camada de aplicaçãocorretos

P3 P4

aplicaçãotransporte

rede

MP2

aplicaçãotransporte

rede

HtHnsegmento

segmento Maplicaçãotransporte

rede

P1M

M M

cabeçalhode segmento

dados da camada de aplicação

Page 10: Comparação entre as camadas

3: Camada de Transporte 3a-10

Multiplexação/demultiplexação

multiplexação/demultiplexação: baseadas em números de porta e

endereços IP de remetente e receptor números de porta de

remetente/receptor em cada segmento

lembrete: número de porta bem conhecido para aplicações específicas

juntar dados de múltiplosprocessos de apl, envelopandodados com cabeçalho (usado depois para demultiplexação)

porta remetente porta receptor

32 bits

dados daaplicação

(mensagem)

outros campos do cabeçalho

formato de segmento TCP/UDP

Multiplexação:

Page 11: Comparação entre as camadas

3: Camada de Transporte 3a-11

Multiplexação/demultiplexação: exemplos

estação A

servidor B

porta orig.: xporta dest: 23

porta orig:23porta dest: x

uso de portas: apl. simples de telnet

cliente WWWestação A

servidor WWW B

Web clienthost C

IP orig: CIP dest: B

porta orig: xporta dest: 80

IP orig : CIP dest: B

porta orig: yporta dest: 80

uso de portas : servidor WWW

IP orig: AIP dest: B

porta orig: xporta dest:

80

Page 12: Comparação entre as camadas

3: Camada de Transporte 3a-12

UDP: User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet mínimo, “sem frescura”,

Serviço “melhor esforço”, segmentos UDP podem ser: perdidos entregues à aplicação fora

de ordem do remesso sem conexão:

não há “setup” UDP entre remetente, receptor

tratamento independente de cada segmento UDP

Por quê existe um UDP? elimina estabelecimento de

conexão (o que pode causar retardo)

simples: não se mantém “estado” da conexão no remetente/receptor

pequeno cabeçalho de segmento

sem controle de congestionamento: UDP pode transmitir o mais rápido possível

Page 13: Comparação entre as camadas

3: Camada de Transporte 3a-13

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

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 14: Comparação entre as camadas

3: Camada de Transporte 3a-14

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 é zero: NÃO - erro detectado SIM - nenhum erro

detectado. Mas ainda pode ter erros? Veja depois ….

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

Page 15: Comparação entre as camadas

3: Camada de Transporte 3a-15

Exemplo de cálculo do checksum (1)Considere 3 palavras de 16 bits sendo transmitidas:

0110011001100110 0101010101010101 0000111100001111A soma das duas primeiras palavras é: 0110011001100110 0101010101010101 10 1110111011 1011Adicionando a terceira palavra, a soma acima fica: 10 111011101 11011 0000111100001111 1100101011001010 Os complementos de 1 são obtidos convertendo todos

os 0’s para 1’s, e todos os 1’s para 0’s.

Page 16: Comparação entre as camadas

3: Camada de Transporte 3a-16

Exemplo de cálculo do Checksum (2)

Assim o complemento de 1’s da soma 1100101011001010 é 0011010100110101

Este valor se torna o checksum No receptor, todas as palavras de 16 bits são somadas,

incluindo o checksum. Se não foram introduzidos erros no pacote, a soma no

receptor certamente deverá resultar em 1111111111111111.

Se um dos bits for zero, então algum erro foi introduzido no pacote.

Pergunta para casa: Por que o UDP usa o checksum, se a maioria dos protocolos data-link(inferiores), incluindo o popular Ethernet, também fornece verificação de erro?

Page 17: Comparação entre as camadas

3: Camada de Transporte 3a-17

Princípios de Transferência confiável de dados (rdt) importante nas camadas de transporte, enlace na lista dos 10 tópicos mais importantes em redes!

características do canal não confiável determinam a complexidade de um protocolo de transferência confiável de dados (rdt)

Page 18: Comparação entre as camadas

3: Camada de Transporte 3a-18

Transferência confiável de dados (rdt): como começar

sendside

receiveside

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 chega no lado

receptor do canal

deliver_data(): chamada por rdt p/

entregar dados p/ camada superior

Page 19: Comparação entre as camadas

3: Camada de Transporte 3a-19

Transferência confiável de dados (rdt): como começarIremos: 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, receptor

state1

state2

event causing state transitionactions taken on state transition

estado: neste “estado” o próximo estado é

determinado unicamente pelo próximo evento

eventactions

Page 20: Comparação entre as camadas

3: Camada de Transporte 3a-20

Rdt1.0: transferência confiável usando um canal confiável

canal subjacente perfeitamente confiável não tem erros de bits não tem perda de pacotes

FSMs separadas para remetente, receptor: remetente envia dados pelo canal subjacente receptor recebe dados do canal subjacente

Page 21: Comparação entre as camadas

3: Camada de Transporte 3a-21

Mensagem de Controle:

Permitem o receptor informar ao emissor o que foi recebido corretamente e o que foi recebido com erro, exigindo repetição.

Em redes de computadores, protocolo RDT baseados em retransmissão são chamados de Protocolos ARQ (Automatic Repeat reQuest).

Page 22: Comparação entre as camadas

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 cenários humanos usando ACKs, NAKs?

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

Page 23: Comparação entre as camadas

3: Camada de Transporte 3a-23

Novas capacidades em RDT 2.03 (três) capacidades adicionais são exigidas em

protocolos ARQ para lidar com a presença de erros de bits:

Detecção de erros: mecanismo para permitir que o receptor identifique quando os erros de bits ocorreram.

Realimentação (feedback) pelo receptor: mensagens de controle (ACK, NAK) trocadas entre receptor → remetente.

Retransmissão: para corrigir os erros detectados.

Estes novos mecanismos estão presentes em RDT 2.0 (além do RDT 1.0)

Page 24: Comparação entre as camadas

3: Camada de Transporte 3a-24

rdt2.0: especificação da FSM

FSM do remetente FSM do receptor

Page 25: Comparação entre as camadas

3: Camada de Transporte 3a-25

rdt2.0: especificação da FSM - Emissor

Aguarda dados da aplicação

Possui 2 estados: Em um estado aguarda dados da camada superior. Em outro estado, aguarda ACK ou NAK do receptor.

Aguarda ACK ou NAK do receptor

Recebe um NAK , reenvia o último pacote atual, e retorna a aguardar um ACK ou NAK.Não pode aceitar dados da da camada superior (stop-and-wait).

Se receber um ACK confirmando que um dado atual foi recebido, retorna ao estado de aguardar um pacote da camada superior

Page 26: Comparação entre as camadas

3: Camada de Transporte 3a-26

Rdt 2.0 – Especificações da FSM - Receptor

Possui 1 estado: ao receber um pacote, responde com ACK ou NAK, dependendo se o pacote

está ou não corrompido.

Pacote recebido apresenta erro. Emite um NAK, e retorna ao estado

de aguardar.

Pacote recebido está íntegro. Emite um ACK,

confirmando e retorna ao estado de aguardar.

Page 27: Comparação entre as camadas

3: Camada de Transporte 3a-27

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

FSM do remetente FSM do receptor

Page 28: Comparação entre as camadas

3: Camada de Transporte 3a-28

rdt2.0: em ação (cenário de erro)

FSM do remetente FSM do receptor

Page 29: Comparação entre as camadas

3: Camada de Transporte 3a-29

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?

retransmitir, mas pode causar retransmissão de pacote recebido certo!

Lidando c/ duplicação: remetente inclui número de

seqüência p/ cada pacote remetente retransmite

pacote atual se ACK/NAK recebido com erro

receptor descarta (não entrega) pacote duplicado

Remetente envia um pacote,e então aguarda resposta do receptor

para e espera

Page 30: Comparação entre as camadas

3: Camada de Transporte 3a-30

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

Insere um nº de seqüência no

pacote

Deve verificar se ACK/NAK

recebido tinha erro

Page 31: Comparação entre as camadas

3: Camada de Transporte 3a-31

rdt2.1: receptor, trata ACK/NAKs com erroDeve checar se pacote recebido é duplicado. Estado indica se nº de seqüência esperado é 0 ou 1.

Page 32: Comparação entre as camadas

3: Camada de Transporte 3a-32

rdt2.1: discussão

Remetente: no. de seq no pacote bastam dois nos. 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 33: Comparação entre as camadas

3: Camada de Transporte 3a-33

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 bem 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

FSM doremetente

!

Page 34: Comparação entre as camadas

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

eca!: desvantagens?

Abordagem: remetente aguarda um tempo “razoável” pelo ACK

retransmite e nenhum ACK recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e não perdido): retransmissão será

duplicada, mas uso de no. de seq. já cuida disto

receptor deve especificar no. de seq do pacote sendo reconhecido

requer temporizador

Page 35: Comparação entre as camadas

3: Camada de Transporte 3a-35

rdt3.0: remetente

Page 36: Comparação entre as camadas

3: Camada de Transporte 3a-36

rdt3.0 em ação

Page 37: Comparação entre as camadas

3: Camada de Transporte 3a-37

rdt3.0 em ação

Page 38: Comparação entre as camadas

3: Camada de Transporte 3a-38

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:

Ttransmitir=8kb/pacote10**9 b/seg

= 8 microseg

Utilização = U = =8 microseg

30.016 msegfração do tempo

remetente ocupado = 0,00015

pac. de 1KB a cada 30 mseg -> vazão de 33kB/seg num enlace de 1 Gbps protocolo limita uso dos recursos físicos!

Page 39: Comparação entre as camadas

3: Camada de Transporte 3a-39

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 dutados: volta-N, retransmissão seletiva

Page 40: Comparação entre as camadas

3: Camada de Transporte 3a-40

Volta-NRemetente: 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

Page 41: Comparação entre as camadas

3: Camada de Transporte 3a-41

Volta-N: FSM estendida do remetente

Recibo de um pacote. ACK(n): confirma que todos os pacotes, até – e inclusive – o nº de seqüência n foram recebidos no receptor:”ACK acumulativo” pode receber ACK’s duplicados.

Camada superior: verifica se a janela está cheia. Se não está, forma o pacote e envia. Se está cheia, recusa.

Existe um temporizador para cada pacote em trânsito. Timeout(n): retransmite pacote n e todos os pacotes com nº de seqüências maiores na janela

Page 42: Comparação entre as camadas

3: Camada de Transporte 3a-42

Volta-N: FSM estendida 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

Page 43: Comparação entre as camadas

3: Camada de Transporte 3a-43

Volta-Nem ação

Janela = 4. Envia de 0 a 3 e o 2 se perde

Pacote 2 se perdeu. Descarta o 3 e pede o 2 (confirma o 1).

Descarta o 4 e o 5, e continua pedindo o 2.

Timeout do ACK de 2. Retransmite o 2.

Page 44: Comparação entre as camadas

3: Camada de Transporte 3a-44

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 45: Comparação entre as camadas

3: Camada de Transporte 3a-45

Retransmissão seletiva: janelas de remetente, receptor

Page 46: Comparação entre as camadas

3: Camada de Transporte 3a-46

Retransmissão seletiva

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]

ACK(n)

senão: ignora

receptorremetente

Page 47: Comparação entre as camadas

3: Camada de Transporte 3a-47

Retransmissão seletiva em ação

Quando um pacote com um nº de seqüência de rcv_base=2 é recebido, então ele e os pacotes rcv_base+1 e rcv_base+2 podem ser entregues à camada superior.

Page 48: Comparação entre as camadas

3: Camada de Transporte 3a-48

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?