You are on page 1of 43

Camada de Transporte

Redes de Computadores I
Instituto de Informtica UFG Prof. Fbio M. Costa
(slides baseados em [Kurose&Ross2003])

Captulo 3: Camada de Transporte


Objetivos do Captulo:
entender os princpios por trs

Resumo do Captulo:
servios da camada de transporte multiplexao/demultiplexao transporte sem conexo: UDP princpios de transferncia

dos servios da camada de transporte:


multiplexao/demultiplexao transferncia de dados confivel controle de fluxo controle de congestionamento

confivel de dados TCP


transporte orientado a conexes:

transferncia confivel controle de fluxo

instanciao e implementao

destes princpios na Internet

gerenciamento de conexo princpios de controle de congestionamento controle de congesetionamento do TCP


Cap. 3: Camada de Transporte 2

Protocolos e Servios de Transporte


Comunicao lgica entre

processos de aplicao em diferentes hosts


Os protocolos de transporte so

aplicao transportee erede enlace fsica

executados nos sistemas finais da rede (hosts ou end systems) Servio de Transporte versus Servios de Rede:

rede enlace fsica

rede enlace fsica rede enlace fsica

sp an tr

te or l co gi

rede enlace fsica

-a m fi

camada de rede: transferncia de dados entre computadores (end systems) camada de transporte: transferncia de dados entre processos

rede enlace fsica aplicao rede enlace fsica

fi

transporte

utiliza e aprimora os servios oferecidos pela camada de

Cap. 3: Camada de Transporte

Protocolos da Camada de Transporte


Servios de Transporte da Internet:
confivel, seqencial e unicast:
application
transporte

rede enlace fsica

TCP

rede enlace fsica

rede enlace fsica rede enlace fsica

sp an tr

t or e

congestionamento controle de fluxo orientado a conexes

g l o ic

rede enlace fsica

m fi

No-confivel (best-effort),

rede enlace fsica application


transporte

im -f -a

no seqencial, entrega unicast or multicast: UDP


servios no disponveis:

rede enlace fsica

tempo-real garantia de banda multicast confivel


Cap. 3: Camada de Transporte 4

Multiplexao / Demultiplexao
Segmento - unidade de dados trocada entre entidades da camada de transporte

TPDU: transport protocol data unit (unidade de dados do protocolo de transporte)


dados da camada de aplicao

Demultiplexao: entrega de segmentos recebidos aos processos de aplicao corretos

P3

receptor
M M

P4 P2

cabealho do segmento segmento


Ht M Hn segmento

P1
aplicao transporte rede
M

aplicao transporte rede

aplicao transporte rede

Cap. 3: Camada de Transporte

Multiplexao / Demultiplexao
Multiplexao: reunir dados de mltiplos processo de aplicao, juntar cabealhos com informaes para demultiplexao
Multiplexao/demultiplexao:
baseadas no nmero de porta

32 bits porta origem porta destino

outros campos de cabealho

do transmissor, nmero de porta do receptor e endereos IP

dados de aplicao (mensagem)

nmeros de porta origem e destino em cada segmento Lembre-se: portas com nmeros bem-conhecidos so usadas para aplicaes especficas

formato do segmento TCP/UDP (campos comuns)


Cap. 3: Camada de Transporte 6

Multiplexao/Demultiplexao
Em Protocolos Sem Conexo (UDP)

Baseado no socket UDP de destino Socket UDP = Endereo IP + Nmero da Porta Baseado no socket TCP de destino Socket TCP:
Endereo IP de Origem + Nmero da Porta de Origem Endereo IP de Destino + Nmero da Porta de Dest.

Em Protocolos Orientados a Conexo (TCP)


I.e., a conexo identificada pelos endereos dos dois processos conectados


Cap. 3: Camada de Transporte

Multiplexao: Exemplo 1
host A
porta origem: x porta dest.: 53

servidor B

porta origem:53 port dest.: x

Aplicao: DNS (sobre UDP)


(Observe a inverso dos nmeros de portas na mensagem de resposta)

Cap. 3: Camada de Transporte

Multiplexao: Exemplo 2
Processo (ou thread) da Aplicao Socket TCP Camada de Transporte (Demultiplex.)

cliente Web host C


IP Origem: C IP Dest: B
porta origem: x porta dest.: 80

Servidor Web host B


IP Origem: A IP Dest: B
porta origem : x porta dest.: 80

IP Origem: C IP Dest: B
porta origem: y porta dest.: 80

cliente Web host A

Aplicao: servidor Web (sobre TCP)


Cap. 3: Camada de Transporte 9

UDP: User Datagram Protocol [RFC 768]


Protocolo de transporte da

Internet sem gorduras

Por que UDP?


no h estabelecimento de

Servio best

effort , segmentos UDP podem ser: perdidos entregues fora de ordem para a aplicao Sem conexo: no h apresentao (handshaking) entre o UDP transmissor e o receptor cada segmento UDP tratado de forma independente dos outros

conexo (que pode redundar em atrasos)


simples: no h estado de conexo

nem no transmissor, nem no receptor


cabealho de segmento reduzido:

baixo overhead

no h controle de congestionam.:

UDP pode enviar segmentos to rpido quanto desejado (e possvel) Cap. 3: Camada de Transporte 10

Mais sobre UDP


Muito usado por aplicaes

de mutimdia contnua (streaming)


32 bits porta origem tamanho porta destino checksum

tolerantes perda sensveis taxa

Tamanho, em bytes, do segmento UDP, inclundo cabealho

Outros usos do UDP (por

que?):

DNS SNMP

Transferncia confivel

Dados de Aplicao (mensagem)

sobre UDP: acrescentar confiabilidade na camada de aplicao

formato do segmento UDP

recuperao de erro especfica de cada aplicao

Cap. 3: Camada de Transporte

11

UDP checksum
Objetivo: detectar erros (ex., bits trocados) no segmento transmitido Transmissor: Receptor:
trata o contedo do

segmento como seqncia de inteiros de 16 bits


checksum: complemento

computa o checksum do

segmento recebido
verifica se o checksum

de 1 da soma do contedo do segmento

calculado igual ao valor do campo checksum:


de 16 em 16 bits

NO - erro detectado SIM - no h erros. Mas, talvez haja erros apesar disto? Mais sobre isto depois3:. Cap. Camada de Transporte

transmissor coloca o valor

calculado no campo de checksum do cabealho UDP

12

Princpios de Transferncia Confivel de Dados


Importante nas camadas de aplicao, transporte e enlace top-10 na lista dos tpicos mais importantes de redes!

As caracteristicas do canal no confivel subjacente determinaro

network layer

a complexidade de um protocolo confivel de transferncia de dados (RDT Reliable Data Transfer)

Cap. 3: Camada de Transporte

13

Transferncia Confivel: Modelo Bsico


rdt_send(): chamada da camada superior, (ex., pela aplicao). Passa dados para entregar camada superior receptora deliver_data(): chamada pela entidade de transporte para entregar dados para camada superior

lado transmissor

lado receptor

udt_send(): chamada pela entidade de transporte, para transferir pacotes para o receptor atravs do canal no confivel

rdt_rcv(): chamada pela entidade da camada inferior quando o pacote chega ao lado receptor do canal Cap. 3: Camada de Transporte 14

Transferncia confivel: O ponto de partida


Etapas:
desenvolver incrementalmente o transmissor e o receptor de um

protocolo confivel de transferncia de dados (RDT)


considerar apenas transferncias de dados unidirecionais

mas informao de controle deve fluir em ambas as direes!

usar mquinas de estados finitos (FSM) para especificar o

protocolo transmissor e o receptor


evento causando transio de estados aes tomadas na transio de estado
estado: quando neste estado o prximo estado fica unicamente determinado pelo prximo evento

estado 1

evento aes

estado 2

Cap. 3: Camada de Transporte

15

rdt1.0: Transferncia confivel sobre canais confiveis


canal de transmisso perfeitamente confivel

no h erros de bits no h perdas de pacotes transmissor envia dados para o canal subjacente receptor l os dados do canal subjacente

FSMs separadas para transmissor e receptor:


Cap. 3: Camada de Transporte

16

rdt2.0: Canal com erros de bit


Canal subjacente pode trocar valores dos bits num pacote

lembrete: checksum do UDP pode detectar erros de bits

A questo: Como recuperar-se desses erros?

reconhecimentos (ACKs): receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs): receptor avisa explicitamente ao transmissor que o pacote tem erros transmissor reenvia o pacote quando da recepo de um NAK
deteo de erros retorno do receptor: mensagens de controle (ACK,NAK) receptor -> transmissor retransmisso de pacotes recebidos com erro
Cap. 3: Camada de Transporte 17

Novos mecanismos no rdt2.0 (alm do rdt1.0):


rdt2.0: especificao da FSM

FSM do transmissor

FSM do receptor
Cap. 3: Camada de Transporte 18

rdt2.0: em ao (ausncia de erros)

FSM do transmissor

FSM do receptor
Cap. 3: Camada de Transporte 19

rdt2.0: em ao (cenrio com erros)

FSM do transmissor

FSM do receptor
Cap. 3: Camada de Transporte 20

rdt2.0 tem um problema fatal!


O que acontece se o ACK/NAK corrompido?
transmissor no sabe o que

aconteceu no receptor! no pode apenas retransmitir: possvel duplicata

Uma soluo mais simples: Baseada na deteo de duplicatas pelo receptor

Tratando duplicatas:

O que fazer?

Transmissor envia um ACK/NAK

para reconhecer o ACK/NAK do receptor. Mas o que acontece se este ACK/NAK se perdem? receptor retransmite o ACK/NAK. Mas isto poderia causar confuso

nmero de seqncia em cada pacote Transmissor reenvia o ltimo pacote se ACK/NAK for perdido receptor descarta (no passa para a aplicao) pacotes duplicados
transmissor acrescenta

stop and wait

claramente, esta no parece ser

p. ex.: a retransmisso de um pacote recebido corretamente! isto , duplicatas

Transmissor envia um pacote e ento espera pela resposta do receptor


Cap. 3: Camada de Transporte 21

uma soluo satisfatria!

rdt2.1: Transmissor, trata ACK/NAKs perdidos

Cap. 3: Camada de Transporte

22

rdt2.1: Receptor, trata ACK/NAKs perdidos

Cap. 3: Camada de Transporte

23

rdt2.1: Receptor, trata ACK/NAKs perdidos: Operao sem erros

Cap. 3: Camada de Transporte

24

rdt2.1: Discusso
Transmissor:
adiciona nmero de

Receptor:
deve verificar se o pacote

seqncia ao pacote
Dois nmeros (0 e 1)

recebido duplicado

bastam. Porque?
deve verificar se os

estado indica se o pacote 0 ou 1 esperado

ACK/NAK recebidos esto corrompidos


duas vezes o nmero de

nota: receptor pode no

saber se seu ltimo ACK/NAK foi recebido pelo transmissor

estados

o estado deve lembrar se o pacote corrente tem nmero de seqncia 0 ou 1


Cap. 3: Camada de Transporte 25

rdt2.2: um protocolo sem NAK


mesma funcionalidade do rdt2.1,

usando somente ACKs


ao invs de enviar NAK, o

receptor envia um ACK para o ltimo pacote recebido sem erro

O receptor deve incluir explicitamente o nmero de seqncia do pacote sendo reconhecido

ACKs duplicados no transmissor

!
FSM do transmissor

resultam na mesma ao do NAK: retransmio do pacote corrente

Cap. 3: Camada de Transporte

26

rdt3.0: canais com erros e perdas


Nova Hiptese: canal de transmisso pode tambm perder pacotes (de dados ou ACKs)

Abordagem: transmissor espera um tempo razovel pelo ACK


retransmite se nenhum ACK for

recebido neste tempo

checksum, nmeros de seqncia, ACKs, retransmisses sero de ajuda, mas no o bastante transmissor espera at que certos dados ou ACKs sejam perdidos, ento retransmite problemas?

timeout

se o pacote (ou ACK) estiver apenas

atrasado (no perdido):

Q: como tratar com perdas?


retransmisso ser duplicata, mas os nmeros de seqncia j tratam com isso receptor deve especificar o nmero de seqncia do pacote sendo reconhecido
Cap. 3: Camada de Transporte 27

exige um temporizador decrescente

rdt3.0 sender

Cap. 3: Camada de Transporte

28

rdt3.0 em ao

(a) operao sem perda (b) pacote perdido


Cap. 3: Camada de Transporte 29

rdt3.0 em ao

(c) ACK perdido

(d) timeout prematuro

Cap. 3: Camada de Transporte

30

Desempenho do rdt3.0
rdt3.0 funciona, mas o desempenho sofrvel exemplo: enlace de 1 Gbps, 15 ms de atraso de propagao, pacotes

de 1KB:
transmisso =

8kb/pct 10**9 b/seg

= 8 s 8 s 30,016 ms = 0.00015

Utilizao = U =

frao do tempo = transmissor ocupado

Um pacote de 1KB cada 30 ms -> 33kB/seg de vazo sobre um canal de 1 Gbps o protocolo de rede limita o uso dos recursos fsicos!

Cap. 3: Camada de Transporte

31

Protocolos com Paralelismo (pipelining)


Paralelismo: transmissor envia vrios pacotes ao mesmo tempo, todos esperando para serem reconhecidos

faixa de nmeros de seqncia deve ser aumentada armazenamento dos pacotes no transmissor e/ou no receptor

(a) operao do protocolo stop-and-wait

(a) operao do protocolo com paralelismo

Duas formas genricas de protocolos com paralelismo:

go-Back-N e retransmisso seletiva

Cap. 3: Camada de Transporte

32

Go-Back-N
Transmissor:
Nmero de seqncia com k bits no cabealho do pacote janela de at N, pacotes no reconhecidos, consecutivos, so

permitidos

ACK(n): reconhece todos os pacotes at o nmero de seqncia N

(incluindo este limite). ACK cumulativo

pode receber ACKs duplicados (veja receptor)

temporizador para o pacote

mais antigo enviado e no confirmado

timeout: retransmite pacote mais antigo e todos os demais pacotes que 33 estejam dentro da janela Cap. 3: Camada de Transporte

GBN: FSM estendida para o Transmissor


Inicializao: base = 1 nextseqnum = 1

Dados a enviar

Avana a janela

Ocorreu timeout

Ok se janela avanou Recebeu ACK


rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Recebeu ACK com erro


Cap. 3: Camada de Transporte 34

Possveis respostas
Protocolo assume que a rede/camada

subjacente jamais reordena pacotes!

Neste caso especfico, pacotes de ACK

Melhorar o tratamento do evento de

recepo de ACKs para verificar se no um ACK ultrapassado

Suficiente para lidar com a possibilidade de reordenao de pacotes pela camada inferior?
Cap. 3: Camada de Transporte 35

GBN: FSM estendida para o Receptor


Qualquer outro evento

Inicializao: expectedseqnum = 1 sndpkt = make_pkt(0, ACK, checksum)

expectedseqnum++

receptor simples:
somente ACK: sempre envia ACK para pacotes corretamente

recebidos com o mais alto nmero de seqncia em ordem


pode gerar ACKs duplicados precisa lembrar apenas do nmero de seqncia esperado (expectedseqnum) descarte (no armazena) -> no h buffer de recepo! reconhece pacote com o mais alto nmero de seqncia em ordem

pacotes fora de ordem (pacote anterior foi perdido) -> default:


Cap. 3: Camada de Transporte

36

Go-Back-N em ao (janela: 4 pacotes)

Cap. 3: Camada de Transporte

37

Retransmisso Seletiva
Receptor reconhece

individualmente todos os pacotes recebidos corretamente


armazena pacotes, quando necessrio, para eventual entrega em ordem para a camada superior

Transmissor somente reenvia os pacotes para os

quais um ACK no foi recebido

transmissor temporiza cada pacote no reconhecido N nmeros de seqncia consecutivos novamente limita a quantidade de pacotes enviados, mas no reconhecidos (i.e., com ACK pendente)
Cap. 3: Camada de Transporte 38

Janela de transmisso

Retransmisso seletiva: janelas do transmissor e do receptor

(a) viso dos nmeros de seqncia pelo transmissor

(b) viso dos nmeros de seqncia pelo receptor


Cap. 3: Camada de Transporte 39

Retransmisso seletiva
transmissor
dados da camada superior :

pacote n em [rcvbase, rcvbase+N-1]


envia ACK(n) se fora de ordem: armazena em ordem: entrega para a

receptor

se o prximo nmero de seqncia a ser usado est dentro da janela, envia o pacote reenvia pacote n, e redispara seu temporizador de timeout marca pacote n como recebido se n o menor pacote no reconhecido, avana a base da janela para o prximo nmero de seqncia no reconhecido

timeout(n):

ACK(n) em [sendbase,sendbase+N]:

camada superior, avana janela para o prximo pacote ainda no recebido

pkt n em [rcvbase-N,rcvbase-1]
ACK(n)

caso contrrio:
ignora

Cap. 3: Camada de Transporte

40

Retransmisso seletiva em ao

Cap. 3: Camada de Transporte

41

Retransmisso seletiva: dilema


Exemplo:
nms. de seqncia: 0,..,3 tamanho da janela=3 receptor no v

diferena nos dois cenrios!


incorretamente passa

dados duplicados como novos (figura a) Q: qual a relao entre o espao de numerao seqencial e o tamanho da janela?

Cap. 3: Camada de Transporte

42

Exerccios
Problemas: 5, 6, 7, 10, 12, 16, 18, 19

2a. ou 3a. Edio - Kurose&Ross Implementar incrementalmente os protocolos estudados na seo 3.4 (em Java ou em C) Sobre UDP, como se fosse a camada de rede Analisar o desempenho dos protocolos em uma rede local
nfase no throughput e eficincia de utilizao

Prtico:

Considerar a mesma anlise em uma rede com latncia maior


ex.: introduzindo um atraso artificial

Lab. de Redes

Cap. 3: Camada de Transporte

43

You might also like