Вы находитесь на странице: 1из 32

Cap 2: Camada de Transporte

Nossos objetivos:
Entenda os princpios
por trs dos servios
da camada de
transporte:

multiplexao/demulti
plexao
Transferncia de
dados confivel
controle de fluxo
Controle de
congestionamento

aprenda sobre protocolos

da camada de transporte
na Internet:

UDP: transporte sem


conexo
TCP: transporte orientado a
conexo
Controle de
congestionamento TCP

Transport Layer

3-1

Sumrio do cap. 3
3.1 Servios da

Camada de Transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte sem
conexo: UDP

3.4 transporte orientado

a conexo: TCP

Estrutura do segmento
Transferncia de dados
confivel
Controle de fluxo
Gerenciamento da
conexo

3.5 Controle de

congestionamento TCP

Transport Layer

3-2

Servios e protocolos de transporte


tr
sp
an
t
or
e
m
fi
im
-f
-a
g
l
o
ic

comunicao lgica
entre processos de aplicao
rodando em diferentes hosts
Protocolos de transporte
rodando em hosts
Lado tx: quebra
mensagens de aplicao em
segmentos, passa pra
camada de rede
Lado rx: remonta
segmentos em mensagens,
passa pra camada de
aplicao
Mais que um protocolo de
transporte disponvel pras
aplicaes
Internet: TCP e UDP
prov

application
transport
network
data link
physical

application
transport
network
data link
physical

Transport Layer

3-3

Camada de Transporte vs. camada


de rede
Camada de rede:
comunicao fsica
entre hosts
Camada de transporte:
comunicao lgica
entre processos

Confia nos servios da


camada de rede

Analogia da casa:
12 garotos enviando cartas
pra 12 garotos
processos = garotos
Mensages das aplicaes
= cartas em envelopes
hosts = casas
Protocolo de transporte
= Ann e Bill
Protocolo da camada de
rede = servio postal

Transport Layer

3-4

Protocolos de transporte da Internet


Entrega confivel, em

ordem (TCP)

servio best-effort

servios no disponveis:
Garantias de retardo
Garantias de largura de
banda

network
data link
physical

m
io
-f
-a

network
data link
physicalnetwork

m
fi

no ordenada : UDP

co
gi
l

Entrega no confivel,

network
data link
physical

rt
po
ns

Controle de
congestionamento
controle de fluxo
Setup de conexo

network
data link
physical

a
Tr

application
transport
network
data link
physical

data link
physical

network
data link
physical

application
transport
network
data link
physical

Transport Layer

3-5

Sumrio do cap. 3
3.1 Servios da

Camada de Transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte sem
conexo: UDP

3.4 transporte orientado

a conexo: TCP

Estrutura do segmento
Transferncia de dados
confivel
Controle de fluxo
Gerenciamento da
conexo

3.5 Controle de

congestionamento TCP

Transport Layer

3-6

Como demultiplexao funciona


host recebe datagramas IP

cada datagrama tem end IP de


origem, end IP de destino
cada datagrama carrega 1
segmento da camada de transporte
cada segmento tem nmero de
porta de origem e de destino
host usa endereos IP e nmeros de
porta pra direcionar segmento pra
socket apropriado

32 bits
Porta origem

porta destino

Outros campos cabealho

dados
da aplicao
(mensagem)
Formato do segmento TCP/UDP
Transport Layer

3-7

Sumrio do cap. 3
3.1 Servios da

Camada de Transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte sem
conexo: UDP

3.4 transporte orientado

a conexo: TCP

Estrutura do segmento
Transferncia de dados
confivel
Controle de fluxo
Gerenciamento da
conexo

3.5 Controle de

congestionamento TCP

Transport Layer

3-8

UDP: User Datagram Protocol


Protocolo de transporte da

Internet sem firulas,


Servio best effort
(melhor esforo), segmentos
UDP podem ser:
perdidos
Entregues fora de ordem
para a aplicao
Sem conexo
Sem fase de handshaking
entre transm e rept UDP
Cada segmento UDP
tratado independente dos
outros

[RFC 768]

Por que existe o UDP?


Sem necessidade de

estabelecimento da
conexo (seria um retardo)
simples: sem estados de
conexo no transmissor e
receptor
Pequeno cabealho de
segmento
sem controle de
congestionamento: UDP
pode transmitir na
velocidade mxima

Transport Layer

3-9

UDP: mais
Quase sempre usado
pra aplicaes
streaming multimdia
comprimento, em
Tolerantes a
bytes do
perdas
segmento UDP,
Sensveis a taxas
incluindo
de transmisso
o cabealho
Outros usos do UDP
DNS
SNMP
Transferncia
confivel sobre UDP:
adicionar
confiabilidade na
camada de aplicao
Recuperao de
erro especfica da
aplicao!

32 bits
Porta origem

Porta dest

comprimento

checksum

Dados da
aplicao
(mensagem)
Formato do segmento UDP
Transport Layer

3-10

Sumrio do cap. 3
3.1 Servios da

Camada de Transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte sem
conexo: UDP

3.4 transporte orientado

a conexo: TCP

Estrutura do segmento
Transferncia de dados
confivel
Controle de fluxo
Gerenciamento da
conexo

3.5 Controle de

congestionamento TCP

Transport Layer

3-11

TCP: Viso geral

RFCs: 793, 1122, 1323, 2018,

2581

ponto-a-ponto:
1 transmissor, 1 receptor
trem de bytes

confivel, em ordem:
pipelined: Controle de
fluxo e controle de
congestionamento
definem tamanho da
janela
Buffers de tx e rx
socket
door

a p p lic a t io n
w r ite s d a ta

a p p lic a t io n
re a d s d a ta

TC P
s e n d b u ffe r

TC P
r e c e iv e b u f f e r

Dados full duplex:


Fluxo de dados
bidirecional na mesma
conexo
MSS: tamanho mximo
do segmento
Orientado a conexo:
handshaking (troca de
mensagens de controle)
inicializa estados do tx e
rx, antes da troca de
dados
Controle de fluxo:
socket
door
Tx no vai afogar rx

segm ent

Transport Layer

3-12

Estrutura do segmento TCP


32 bits

URG: dados urgentes


(geralmente no usado)
ACK: nmero
do ACK
PSH: empurre dados
agora (no usado)
RST, SYN, FIN:
Estab da conexo
(comandos pra setup
e derrubar)
Checksum da
Internet
(como no UDP)

Porta origem

Porta dest

Nmero de sequncia

Nmero de confirmao

Comp No
UA P R S F
cab usado

checksum

Janela de recep
Ponteiro dados urg

Opes (compr varivel)

Contagem por
bytes
(no segmentos!)

Nmero de
bytes
Permitidos
Pelo receptor

Dados de
aplicao
(comprimento varivel)

Transport Layer

3-13

Nmeros de seq TCP e ACKs


Nmeros de seq.:
Nmero do primeiro
byte do segmento
ACKs:
Nmero de seq do
prximo byte
esperado do outro
lado
ACK cumulativo
P: como o receptor trata
segmentos for a de
ordem?
R: especificao TCP
no diz, - fica pro
fabricante

Host B

Host A
Usurio
digita
C

Seq=4

2, AC
K

=79, d
ata =
C

host confirma
recepo de

C
C, ecoa
ta =
a
d
,
3
4
=
C
, ACK
9
7
=
q
e
S

host confirma
recepo
Seq=4
3, ACK
do C ecoado
=80

simples cenrio de telnet


Transport Layer

tempo

3-14

Sumrio do cap. 3
3.1 Servios da

Camada de Transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte sem
conexo: UDP

3.4 transporte orientado

a conexo: TCP

Estrutura do segmento
Transferncia de dados
confivel
Controle de fluxo
Gerenciamento da
conexo

3.5 Controle de

congestionamento TCP

Transport Layer

3-15

Transferncia confivel de dados


TCP
TCP cria servico

confivel em cima do
servio IP que noconfivel
Segmentos em pipeline
Acks cumulativos
TCP usa um
temporizador simples
de retransmisso

Retransmisses so

disparadas por:

Eventos de timeout
Acks duplicados

Inicialmente considere

um transmissor TCP
simplificado:

ignora acks duplicados


ignora controle de
fluxo, controle de
congestionamento

Transport Layer

3-16

Eventos no transmissor TCP:


dados recebidos da
aplicao:
Cria segmento com num
de seq
Num de seq nmero de
byte do primeiro byte
de dados no segmento
dispara temporizador se
no estiver rodando
Intervalo de expirao:
TimeOutInterval

timeout:
retransmite segmento
que causou timeout
reinicia temporizador
Confirma recebido:
Se confirmar
segmentos no
confirmados
anteriormente

atualiza o que se sabe


que deve ser
confirmado
Dispara temporizador
se existir segmentos
Transport Layer
faltando

3-17

TCP: cenrios de retransmisso


Host A

Seq=92 timeout

=100
K
C
A

loss
Seq=9
2, 8

bytes

AC K

dados

=100

SendBase
= 100

tempo
Cenrio do ACK perdido

Host B

Seq=9

2, 8 b
ytes d
ados

Sendbase
= 100
SendBase
= 120

SendBase
= 120

2, 8 b
ytes d
ados
Seq=
100,
20 by
tes d
ados
0
10
=
K
120
=
C
K
A AC

Seq=9
2,

Seq=92 timeout

Seq=9

timeout

Host A

Host B

tempo

8 byte

s dad

os

20
1
=
K
AC

Timeout prematuro
Transport Layer

3-18

Cenrios de retransmisso TCP


(mais)
Host A

Host B

timeout

Seq=9
2, 8 b
ytes d
ados

SendBase
= 120

Seq=1

=100
K
C
A
00, 20
bytes
dados

loss
=
AC K

120

tempo
Cenrio do ACK Cumulativo
Transport Layer

3-19

Fast Retransmit (Retransmisso


rpida)
Perodo de Time-out

quase sempre
relativamente longo:

longo atraso antes de


reenviar pacotes
perdidos

Detecta segmentos

perdidos via ACKs


duplicados.

Se Tx recebe 3 ACKs

pro mesmo dado, ele


supe que o segmento
depois dos dados
confirmados foi
perdido:

fast retransmit: reenvia


segmento antes do
temporizador expirar

Tx quase sempre envia


muitos segmentos
Se segmento perdido,
haver provavelmente
muitos ACKs duplicados.
Transport Layer

3-20

Host A

Host B

timeout

reenv
ia 2 o s

egme

nto

tempo
Figura 3.37 Reenviando um segmento depois de 3 ACKs duplicados
Transport Layer

3-21

Sumrio do cap. 3
3.1 Servios da

Camada de Transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte sem
conexo: UDP

3.4 transporte orientado

a conexo: TCP

Estrutura do segmento
Transferncia de dados
confivel
Controle de fluxo
Gerenciamento da
conexo

3.5 Controle de

congestionamento TCP

Transport Layer

3-22

Controle de fluxo TCP

Controle de fluxo

Lado Rx da conexo

TCP tem um buffer de


recepo:

Tx no vai sobrecarregar
buffer do Rx
transmitindo muito
rpido

Servio de casamento

Processo de aplicao

de velocidade: casa a
taxa de envio com a
taxa de drenagem da
aplicao do Rx

pode ser lento na


leitura do buffer

Transport Layer

3-23

Controle de fluxo TCP: como ele


funciona
Rx avisa a vaga

(Suponha que o RX do TCP


descarta segmentos fora
de ordem)
vaga no buffer

incluindo valor de
RcvWindow em
segmentos
Tx limita dados no
confirmados a
RcvWindow

garante que buffer de


rx no transborde

= RcvWindow
= RcvBuffer-[LastByteRcvd LastByteRead]
Transport Layer

3-24

Sumrio do cap. 3
3.1 Servios da

Camada de Transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte sem
conexo: UDP

3.4 transporte orientado

a conexo: TCP

Estrutura do segmento
Transferncia de dados
confivel
Controle de fluxo
Gerenciamento da
conexo

3.5 Controle de

congestionamento TCP

Transport Layer

3-25

Gerenciamento de conexo TCP


Lembre-se: Tx e RX TCP

estabelecem conexo
antes de trocar segmentos
de dados
Inicializa variveis TCP:
Num de seq.
Informao de buffers,
de controle de fluxo
(p.ex. RcvWindow)
cliente: inicia a conexo

servidor: contactado pelo


cliente

Handshake de 3 vias:
Passo 1: cliente envia segmento
SYN TCP para servidor
especifica num de seq inicial
no h dados nessas msgs
Passo 2: servidor recebe SYN,
responde com segmento
SYNACK
servidor aloca buffers
Especifica num de seq inicial
do servidor
Passo 3: cliente recebe SYNACK,
responde com segmento ACK,
que pode conter dados

Transport Layer

3-26

Gerenciamento de conexo TCP (cont.)


Derrubando uma conexo:
Passo 1: cliente envia

cliente

derruba

segmento de controle TCP


FIN pro servidor

FIN

ACK

Passo 2: servidor recebe

derruba

FIN

Tempo de
espera

FIN, responde com ACK.


Derruba a conexo, envia
FIN.

servidor

A CK

derrubado
Transport Layer

3-27

Gerenciamento de conexo TCP (cont.)


Passo 3: cliente recebe FIN,

cliente

responde com ACK.

derrubando

Entra no tempo de espera vai responder com ACK pros


FINs recebidos

FIN

ACK

Passo 4: servidor recebe ACK.

derrubando

FIN

Nota: com pequenas modificaes,

Tempo de
espera

Conexo derrubada.

pode tratar FINs simultneos.

servidor

A CK

derrubado

derrubado
Transport Layer

3-28

Sumrio do cap. 3
3.1 Servios da

Camada de Transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte sem
conexo: UDP

3.4 transporte orientado

a conexo: TCP

Estrutura do segmento
Transferncia de dados
confivel
Controle de fluxo
Gerenciamento da
conexo

3.5 Controle de

congestionamento TCP

Transport Layer

3-29

TCP Slow Start


Quando conexo inicia,

dobra CongWin a cada


RTT
Incrementa-se
CongWin pra cada ACK
recebido

RTT

aumenta taxa
exponencialmente at
o primeiro evento de
perda:

Host A

Host B
1 segmen
to

2 segmen
tos

4 segmen
tos

Resumo: taxa inicial

lenta mas sobe rpido


(exponencialmente)

tempo
Transport Layer

3-30

Refinamento: inferindo perdas


Depois de 3 ACKs duplicados:

CongWin reduzido metade


janela ento cresce linearmente
Mas depois de evento de timeout:
CongWin cai pra 1 MSS;
Janela ento cresce exponencialmente
At um limiar, ento cresce
linearmente

Filosofia:

3 ACKs duplicados

indicam rede capaz de


entregar alguns
segmentos
timeout indica um
cenrio de
congestionamento mais
alarmante
Transport Layer

3-31

Refinamento
P: quando o aumento
exponencial mudar pra
linear?
R: Quando CongWin chegar
em metade de seu valor
antes do timeout.

Implementao:
Limiar Varivel
Se ocorrer perda,

Limiar ajustado pra


metade de CongWin do
momento da perda

Transport Layer

3-32

Вам также может понравиться