Você está na página 1de 55

1111

Camada de Transporte
Professor: Sidney Doria, M.Sc.
Roteiro
Servios da camada de transporte
Multiplexao e demultiplexao
Transporte no orientado para conexo: UDP
Transporte orientado para conexo: TCP
estrutura de segmento
transferncia confivel de dados
controle de fluxo
gerenciamento da conexo
Princ!pios de controle de congestionamento
Controle de congestionamento no TCP
Servios e protocolos de transporte
oferecem comunicao l"gica
entre processos de aplicao
rodando em #ospedeiros
diferentes
protocolos de transporte rodam
em sistemas finais
lado remetente: divide as msgs
da aplicao em segmentos$
passa % camada de rede
lado destinatrio: remonta os
segmentos em msgs$ passa %
camada de aplicao
mais de um protocolo de
transporte dispon!vel %s
aplica&es
'nternet: TCP e UDP
aplicao
transporte
rede
enlace
f!sica
aplicao
transporte
rede
enlace
f!sica
t
r
a
n
s
p
o
r
t
e

l

g
i
c
o

f
i
m

a

f
i
m
Camada de transporte versus rede
camada de rede:
comunicao l"gica
entre #ospedeiros
camada de transporte:
comunicao l"gica
entre processos
conta com e amplia os
servios da camada de
rede
analogia com a fam!lia:
() crianas mandando
carta a () crianas
processos * crianas
msgs da aplicao *
cartas nos envelopes
#ospedeiros * casas
protocolo de transporte
* +na e ,ill
protocolo da camada de
rede * servio postal
rede
enlace
f!sica
rede
enlace
f!sica
Protocolos da camada de transporte da 'nternet
remessa confivel e em
ordem -TCP.
controle de congestionamento
controle de fluxo
esta/elecimento da conexo
remessa no confivel e
desordenada: UDP
extenso sem luxo do 'P pelo
0mel#or esforo1
servios no dispon!veis:
garantias de atraso
garantias de largura de /anda
aplicao
transporte
rede
enlace
f!sica
net2or3
data lin3
p#4sical
rede
enlace
f!sica
rede
enlace
f!sica
rede
enlace
f!sica
rede
enlace
f!sica
aplicao
transporte
rede
enlace
f!sica
l
o
g
i
c
a
l
e
n
d
5
e
n
d
t
r
a
n
s
p
o
r
t
Roteiro
Servios da camada de transporte
Multiplexao e demultiplexao
Transporte no orientado para conexo: UDP
Transporte orientado para conexo: TCP
estrutura de segmento
transferncia confivel de dados
controle de fluxo
gerenciamento da conexo
Princ!pios de controle de congestionamento
Controle de congestionamento no TCP
Multiplexao6demultiplexao
aplicao
transporte
rede
enlace
f!sica
P(
aplicao
transporte
rede
enlace
f!sica
aplicao
transporte
rede
enlace
f!sica
P)
P7
P8
P(
#ospedeiro ( #ospedeiro )
#ospedeiro 7
* processo
* soc3et
entregando segmentos
rece/idos ao soc3et correto
demultiplexao no destinatrio:
col#endo dados de m9ltiplos
soc3ets$ envelopando dados
com ca/eal#o -usados depois
para demultiplexao.
multiplexao no remetente:
Como funciona a demultiplexao
#ospedeiro rece/e datagramas 'P
cada datagrama tem endereo
'P de origem$ endereo 'P de
destino
cada datagrama carrega (
segmento da camada de
transporte
cada segmento tem n9mero de
porta de origem$ destino
#ospedeiro usa endereos 'P :
n9meros de porta para direcionar
segmento ao soc3et apropriado
; porta origem ; porta destino
7) /its
dados da
aplicao
-mensagem.
outros campos de ca/eal#o
formato do segmento TCP6UDP
Demultiplexao no orientada para conexo
soc3et UDP identificado por tupla de dois
elementos:
endereo 'P destino
n9mero porta destino
<uando #ospedeiro rece/e segmento UDP:
verifica n9mero de porta de destino no segmento
direciona segmento UDP para soc3et com esse
n9mero de porta
datagramas 'P com diferentes endereos 'P
de origem e6ou n9meros de porta de origem
direcionados para o mesmo soc3et
Cliente
'P:,
P)
cliente
'P: +
P(
P(
P7
servidor
'P: C
SP: =8)>
DP: ?(@A
SP: ?(@A
DP: =8)>
SP: =8)>
DP: @AA@
SP: @AA@
DP: =8)>
SP oferece 0endereo de retorno1
Demultiplexao no orientada para conexo
Demultiplexao orientada para conexo
soc3et TCP identificado
por tupla de 8 elementos:
endereo 'P de origem
n9mero de porta de origem
endereo 'P de destino
n9mero de porta de destino
#ospedeiro destinatrio
usa todos os <uatro
valores para direcionar
segmento ao soc3et
apropriado
#ospedeiro servidor pode
admitir muitos soc3ets
TCP simultBneos:
cada soc3et identificado
por usa pr"pria tupla de 8
servidores Ce/ tm
diferentes soc3ets para
cada cliente conectando
DTTP no persistente ter
diferentes soc3ets para
cada re<uisio
cliente
'P:,
P(
cliente
'P: +
P(
P) P8
servidor
'P: C
SP: ?(@A
DP: >E
SP: ?(@A
DP: >E
P@ P= P7
D5'P:C
S5'P: +
D5'P:C
S5'P: ,
SP: @AA@
DP: >E
D5'P:C
S5'P: ,
Demultiplexao orientada para conexo
Demultiplexao orientada para conexo:
servidor Ce/ t#readed
cliente
'P:,
P(
cliente
'P: +
P(
P)
servidor
'P: C
SP: ?(@A
DP: >E
SP: ?(@A
DP: >E
P8 P7
D5'P:C
S5'P: +
D5'P:C
S5'P: ,
SP: @AA@
DP: >E
D5'P:C
S5'P: ,
Roteiro
Servios da camada de transporte
Multiplexao e demultiplexao
Transporte no orientado para conexo: UDP
Transporte orientado para conexo: TCP
estrutura de segmento
transferncia confivel de dados
controle de fluxo
gerenciamento da conexo
Princ!pios de controle de congestionamento
Controle de congestionamento no TCP
UDP: User Datagram Protocol FRGC A=>H
protocolo de transporte da
'nternet 0sem luxo1$ /sico
servio de 0mel#or esforo1$
segmentos UDP podem ser:
perdidos
entregues % aplicao
fora da ordem
sem conexo:
sem #ands#a3ing entre
remetente e destinatrio
UDP
cada segmento UDP
tratado independente
dos outros
Por <ue existe um UDPI
sem esta/elecimento de
conexo -<ue pode gerar
atraso.
simples: sem estado de
conexo no remetente$
destinatrio
ca/eal#o de segmento
pe<ueno
sem controle de
congestionamento: UDP
pode transmitir o mais
rpido poss!vel
UDP: mais
normalmente usado para
streaming de aplica&es de
multim!dia
tolerante a perdas
sens!vel % taxa
outros usos do UDP
DJS
SJMP
transferncia confivel por
UDP: aumenta confia/ilidade
na camada de aplicao
recuperao de erro
espec!fica da aplicaoK
; porta origem ; porta destL
7) /its
dados da
aplicao
-mensagem.
formato de segmento UDP
taman#o soma verifL
taman#o$
em /4tes$ do
segmento UDP$
incluindo
ca/eal#o
Soma de verificao UDP
remetente:
trata conte9do de
segmento como se<uncia
de inteiros de (= /its
soma de verificao
-c#ec3sum.: adio -soma
por complemento de (. do
conte9do do segmento
remetente coloca valor da
soma de verificao no
campo de soma de
verificao UDP
destinatrio:
calcula soma de verificao do
segmento rece/ido
verifica se soma de verificao
calculada igual ao valor do
campo de soma de verificao:
JMN O erro detectado
S'M O nen#um erro
detectadoL Mas pode #aver
erros mesmo assimI PeQa
mais adiante RL
o/Qetivo: detectar 0erros1 -pL eL$ /its invertidos. no
segmento transmitido
Sxemplo de soma de verificao da 'nternet
nota
+o somar n9meros$ um carr4out do /it mais
significativo precisa ser somado ao resultado
exemplo: somar dois inteiros de (= /its
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
contorna
soma
soma de
verificao
Roteiro
Servios da camada de transporte
Multiplexao e demultiplexao
Transporte no orientado para conexo: UDP
Transporte orientado para conexo: TCP
estrutura de segmento
transferncia confivel de dados
controle de fluxo
gerenciamento da conexo
Princ!pios de controle de congestionamento
Controle de congestionamento no TCP
TCP: Piso geral
RGCs: A?7$ (())$ (7)7$ )E(>$ )@>(
dados full duplex:
dados /idirecionais fluem
na mesma conexo
MSS: taman#o mximo do
segmento
orientado a conexo:
apresentao -troca de
msgs de controle. inicia
estado do remetente e
destinatrio antes da
troca de dados
fluxo controlado:
remetente no
so/recarrega destinatrio
ponto a ponto:
um remetente$ um
destinatrio
cadeia de /4tes confivel$ em
ordem:
sem 0limites de mensagem1
paralelismo:
congestionamento TCP e
controle de fluxo definem
taman#o da Qanela
/uffers de envio : recepo
Sstrutura do segmento TCP
porta origem porta destino
7) /its
dados da
aplicao
-taman#o varivel.
n9mero se<uncia
n9mero recon#ecimento
Qanela recepo
ponteiro dados urgL
soma verificao
G S R P + U
comprL
ca/L
no
usado
op&es -taman#o varivel.
URT: dados urgentes
-<uase no usado.
+CU: ; +CU
vlido
PSD: empurrar dados
agora -<uase no usado.
RST$ SVJ$ G'J:
esta/L conexo
-comandos setup$
teardo2n.
; /4tes
destinatrio
pode aceitar
contagem por
/4tes de dados
-no segmentosK.
soma de verificao
da 'nternet
-como em UDP.
;s se<uncia e +CUs do TCP
cenrio telnet simples
;Ws de se<uncia:
0n9mero1 na cadeia de
/4tes do (
o
/4te nos
dados do segmento
+CUs:
; se< do pr"ximo /4te
esperado do outro lado
+CU cumulativo
P: como o destinatrio trata
segmentos fora de ordem
R: TCP no diX O a
critYrio do
implementador
Tempo de ida e volta e timeout do TCP
P: Como definir o valor
de timeout do TCPI
maior <ue RTT
mas RTT varia
muito curto:
timeout prematuro
retransmiss&es
desnecessrias
muito longo: /aixa
reao a perda de
segmento
P: Como estimar o RTTI
SampleRTT: tempo medido
da transmisso do segmento
atY rece/er o +CU
ignora retransmiss&es
SampleRTT variarZ
<ueremos RTT estimado
0mais estvel1
mYdia de vrias
medi&es recentes$ no
apenas SampleRTT atual
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT
mYdia m"vel exponencial ponderada
influncia da amostra passada diminui exponencialmente rpido
valor t!pico: = E$()@
Tempo de ida e volta e timeout do TCP
+mostras de RTTs estimados
definindo o timeout
EstimtedRTT mais 0margem de segurana1
grande variao em EstimatedRTT -> maior margem de segL
primeira estimativa do <uanto SampleRTT se desvia de
SstimatedRTT:
TimeoutInterval = EstimatedRTT + 4*DevRTT
DevRTT = (1- )*DevRTT +
*|SampleRTT-EstimatedRTT|
(geralmente, = 0,25)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
Transferncia confivel de dados no TCP
+CUs cumulativos
TCP usa 9nico temporiXador de retransmisso
retransmiss&es so disparadas por:
eventos de timeout
+CUs duplicados
TCP: cenrios de retransmisso
DospL +
S
e
q
=
1
0
0
, 2
0
b
y
te
s
d
a
d
o
s
A
C
K

=

1
0
0
tempo
Timeout prematuro
DospL ,
S
e
q
=
9
2
, 8
b
y
te
s
d
a
d
o
s
A
C
K

=

1
2
0
S
e
q
=
9
2
, 8
b
y
te
s
d
a
d
o
s
S
e
<
*

?
)

t
i
m
e
o
u
t
A
C
K

=

1
2
0
DospL +
S
e
q
=
9
2
, 8
b
y
te
s
d
a
d
o
s
A
C
K

=

1
0
0
loss
t
i
m
e
o
u
t
Cenrio de +CU perdido
DospL ,
X
S
e
q
=
9
2
, 8
b
y
te
s
d
a
d
o
s
A
C
K
=

1
0
0
tempo
S
e
<
*

?
)

t
i
m
e
o
u
t
Send,ase
* (EE
Send,ase
* ()E
Send,ase
* ()E
Send/ase
* (EE
Dost +
S
e
q
=
9
2
, 8
b
y
te
s
d
a
d
o
s
A
C
K

=

1
0
0
perda
t
i
m
e
o
u
t
Cenrio +CU cumulativo
Dost ,
X
S
e
q
=
1
0
0
, 2
0
b
y
te
s
d
a
d
o
s
A
C
K
=

1
2
0
tempo
Send,ase
* ()E
TCP: cenrios de retransmisso
TCP: gerao de +CU
FRGC (())$ RGC )@>(H
Retransmisso rpida
per!odo de timeout
relativamente grande:
longo atraso antes de
reenviar pacote perdido
detecta segmentos
perdidos por meio de +CUs
duplicados
remetente geralmente
envia muitos segmentos um
ap"s o outro
se segmento for perdido$
provavelmente #aver
muitos +CUs duplicados
para esse segmento
se remetente rece/e 7 +CUs
para os mesmos dados$ ele
sup&e <ue segmento ap"s
dados com +CU foi perdido:
retransmisso rpida:
reenvia segmento antes <ue
o temporiXador expire
DospL +
t
i
m
e
o
u
t
DospL ,
tempo
X
re
e
n
v
ia
s
e
q
X
2
se< ; x(
se< ; x)
se< ; x7
se< ; x8
se< ; x@
+CU x(
+CU x(
+CU x(
+CU x(
+CUs
duplicados
trs veXes
Controle de fluxo TCP
lado receptor da
conexo TCP tem um
/uffer de recepo:
servio de
compati/iliXao de
velocidades:
compati/iliXa a taxa de
envio do remetente
com a de leitura da
aplicao receptora
processo da aplicao
pode ser lento na
leitura do /uffer
remetente no estourar
/uffer do destinatrio
transmitindo muitos
dados muito rapidamente
controle de fluxo
datagramas
'P
dados TCP
-no /uffer.
espao
de /uffer
-atualmente.
no usado
processo da
aplicao
Controle de fluxo TCP: como funciona
-supon#a <ue destinatrio TCP
descarte segmentos fora de
ordem.
espao de /uffer no usado:
= rwnd
= RcvBuffer-[LastByteRcvd -
LastByteRead]
destinatrio: anuncia
espao de /uffer no
usado incluindo valor de
rwnd no ca/eal#o do
segmento
remetente: limita ; de
/4tes com +CUa rwnd
garante <ue /uffer do
destinatrio no estoura
r2nd
Rcv,uffer
datagramas
'P
dados TCP
-no /uffer.
espao
de /uffer
-atualmente.
no usado
processo da
aplicao
Terenciamento da conexo TCP
lem/re5se: Remetente e
destinatrio TCP
esta/elecem 0conexo1 antes
<ue tro<uem segmentos
dados
inicialiXa variveis TCP:
;s se<L:
/uffers$ informao de
controle de fluxo -pL eL
RcvWindow.
cliente: inicia a conexo
Socket clientSocket = new
Socket("hostname","port #");
servidor: contactado pelo
cliente
Socket connectionSocket =
welcomeSocket.accept();
apresentao de 7 vias:
etapa (: #ospL cliente envia segmento
SVJ do TCP ao servidor
especifica ; se<L inicial
sem dados
etapa ): #ospL servidor rece/e SVJ$
responde com segmento SVJ+CU
servidor aloca /uffers
especifica ; se<L inicial do
servidor
etapa 7: cliente rece/e SVJ+CU$
responde com segmento +CU$ <ue
pode conter dados
fec#ando uma conexo:
cliente fec#a soc3et:
clientSocket.close();
etapa (: sistema final do
cliente envia segmento de
controle TCP G'J ao
servidor
etapa ): servidor rece/e
G'J$ responde com +CUL
Gec#a conexo$ envia G'JL
cliente
F
IN
servidor
A
C
K
A
C
K
F
I
N
fec#a
fec#a
fec#ado
e
s
p
e
r
a

t
e
m
p
o
r
i
X
a
d
a
Terenciamento da conexo TCP
etapa 7: cliente rece/e
G'J$ responde com +CU
entra em 0espera
temporiXada1 O
responder com +CU
aos G'Js rece/idos
etapa 8: servidor rece/e
+CU 5 conexo fec#ada
Jota: Com pe<uena
modificao$ pode tratar
de G'Js simultBneosL
cliente
F
IN
servidor
A
C
K
A
C
K
F
I
N
fec#ado
fec#ando
fec#ado
fec#ado
e
s
p
e
r
a

t
e
m
p
o
r
i
X
a
d
a
Terenciamento da conexo TCP
37
Estudo Independente
[eitura:
Cap!tulo 7
\ Se&es: 7L($ 7L)$ 7L7 e 7L@
+tividades:
[ista de Sxerc!cios J] 7
[a/orat"rio
\ UDP
37
Roteiro
Servios da camada de transporte
Multiplexao e demultiplexao
Transporte no orientado para conexo: UDP
Transporte orientado para conexo: TCP
estrutura de segmento
transferncia confivel de dados
controle de fluxo
gerenciamento da conexo
Princ!pios de controle de congestionamento
Controle de congestionamento no TCP
Princ!pios de controle de congestionamento
Congestionamento:
informalmente: 0muitas fontes enviando muitos
dados muito rpido para a rede tratar1
diferente de controle de fluxoK
manifesta&es:
pacotes perdidos -estouro de /uffer nos
roteadores.
longos atrasos -enfileiramento nos /uffers do
roteador.
um dos maiores pro/lemas da redeK
Causas6custos do congestionamento:
cenrio (
dois remetentes$ dois destinatrios
um roteador$ infinitos /uffers
sem retransmisso
grandes atrasos <uando congestionado
vaXo mxima alcanvel
Causas6custos do congestionamento:
cenrio )
um roteador$ /uffers finitos
retransmisso do pacote perdido pelo remetente
TYcnicas para controle de congestionamento
controle de
congestionamento fim a
fim:
nen#um feed/ac3 expl!cito da
rede
congestionamento deduXido da
perda e atraso o/servados do
sistema final
tYcnica tomada pelo TCP
controle de
congestionamento
assistido pela rede:
roteadores oferecem
feed/ac3 aos sistemas
finais
9nico /it indicando
congestionamento
-SJ+$ DSC/it$ TCP6'P
SCJ$ +TM.
taxa expl!cita <ue o
remetente deve enviar
no enlace de sa!da
duas tYcnicas amplas para controle de congestionamento:
Roteiro
Servios da camada de transporte
Multiplexao e demultiplexao
Transporte no orientado para conexo: UDP
Transporte orientado para conexo: TCP
estrutura de segmento
transferncia confivel de dados
controle de fluxo
gerenciamento da conexo
Princ!pios de controle de congestionamento
Controle de congestionamento no TCP
Controle de congestionamento TCP: /usca
por largura de /anda
0procura por largura de /anda1: aumenta taxa de transmisso
no rece/imento do +CU atY por fim ocorrer perdaZ depois
diminui taxa de transmisso
continua a aumentar no +CU$ diminui na perda -pois largura de
/anda dispon!vel est mudando$ dependendo de outras conex&es na
rede.
+CUs sendo rece/idos$
de modo <ue aumenta taxa
X
X
X
X
X perda e diminuio de taxa
t
a
x
a

d
e

e
m
i
s
s

o
tempo
comportamento
0dente de serra1
do TCP
Controle de congestionamento TCP:
detal#es
remetente limita taxa limitando n9mero de
/4tes sem +CU 0na pipeline1:
cwnd: difere de rwnd
remetente limitado por min(cwnd,rwnd)
aproximadamente$
cwnd Y dinBmico$ funo do
congestionamento de rede perce/ido
taxa *
c2nd
RTT
/4tes6seg
LastByteSent-LastByteAcked cwnd
/4tes
cwnd
RTT
+CU-s.
Controle de congestionamento TCP:
mais detal#es
evento de perda de segmento:
reduXindo cwnd
timeout: sem resposta do
destinatrio
corta cwnd para (
7 +CUs duplicados: pelo
menos alguns segmentos
passando
corta cwnd pela metade$
menos agressivamente do <ue
no timeout
+CU rece/ido:
aumenta cwnd
fase de partida lenta:
aumento exponencialmente
rpido -apesar do nome. no
in!cio da conexo$ ou ap"s
o timeout
preveno de
congestionamento:
aumento linear
Partida lenta do TCP
<uando conexo comea$ cwnd * (
MSS
exemplo: MSS * @EE /4tes :
RTT * )EE ms
taxa inicial * )E 3/ps
largura de /anda dispon!vel pode
ser ^^ MSS6RTT
deseQvel su/ir rapidamente
para taxa respeitvel
aumenta taxa exponencialmente atY
o primeiro evento de perda ou
<uando o patamar Y alcanado
cwnd duplo a cada RTT
feito incrementando cwnd por (
para cada +CU rece/ido
DospL +
um
segm
ento
R
T
T
DospL ,
tempo
dois segm
entos
quatro segm
entos
Transio dentro6fora da partida rpida
ssthresh: patamar de cwnd mantido pelo TCP
um evento de perda: define ssthresh como
cwnd/2
lem/re5se -metade. da taxa TCP <uando
ocorreu perda de congestionamento
<uando transio de cwnd ^ * ssthresh: da
partida lenta para fase de preveno de
congestionamento
TCP: preveno de congestionamento
<uando cwnd > ssthresh
cresce cwnd de forma linear
aumenta cwnd em ( MSS
por RTT
a/orda poss!vel
congestionamento mais
lento <ue na partida lenta
implementao: cwnd =
cwnd + MSS/cwnd para
cada +CU rece/ido
+CUs: aumenta cwnd em (
MSS por RTT: aumento
aditivo
perda: corta cwnd ao meio
-perda sem timeout
detectado.: diminuio
multiplicativa
+'MD
+'MD: +dditive 'ncrease
Multiplicative Decrease
Tipos populares de TCP
Resumo: controle de congestionamento TCP
<uando cwnd < ssthresh$ remetente na fase de
partida lenta$ Qanela cresce exponencialmenteL
<uando cwnd > = ssthresh$ remetente est na
fase de preveno de congestionamento$ Qanela
cresce linearmenteL
<uando ocorre o +CU duplicado triplo$ ssthresh
definido como cwnd/2, cwnd definido como
_ssthresh
<uando ocorre o timeout$ ssthresh definido como
cwnd/2, cwnd definido como ( MSSL
PaXo do TCP
P: `ual Y a vaXo mYdia do TCP como
funo do taman#o da Qanela$ RTTI
ignorando partida lenta
seQa C o taman#o da Qanela <uando ocorre
a perda
<uando Qanela Y C$ a vaXo Y C6RTT
logo ap"s perda$ Qanela cai para C6)$
vaXo para C6)RTTL
ap"s a vaXo: E$A@ C6RTT
o/Qetivo da e<uidade: se U sess&es TCP
compartil#arem o mesmo enlace de gargalo da
largura de /anda R$ cada uma deve ter uma taxa
mYdia de R6U
conexo TCP (
capacidade de
gargalo do
roteador R
conexo
TCP )
S<uidade do TCP
S<uidade
e<uidade e UDP
aplica&es de multim!dia
normalmente no usam
TCP
no deseQam <ue a taxa
seQa sufocada pelo
controle de
congestionamento
em veX disso$ use UDP:
envia udio6v!deo em
taxa constante$ tolera
perdas de pacotes
e<uidade e conex&es TCP
paralelas
nada impede <ue a
aplicao a/ra conex&es
paralelas entre )
#ospedeirosL
navegadores Ce/ faXem
isso
exemplo: enlace de taxa
R admitindo ? conex&esZ
nova aplicao solicita (
TCP$ rece/e taxa R6(E
nova aplicao solicita ((
TCPs$ rece/e R6)K
55
Estudo Independente
[eitura:
Cap!tulo 7
\ Se&es: 7L= e 7LA
+tividades:
[ista de Sxerc!cios J] 7
[a/orat"rio
\ TCP
55

Você também pode gostar