Buscar

TCP e UDP

Prévia do material em texto

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO
DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIA DA COMPUTAÇÃO
Redes de Computadores I
Nível de Transporte (TCP & UDP)
Prof. Helcio Wagner da Silva
. – p.1/41
Introdução
Na Arquitetura Internet, o Nível de Transporte pode
fornecer tanto um serviço orientado à conexão como um
serviço não-orientado à conexão.
O Serviço orientado à conexão é prestado pelo TCP
(Transmission Control Protocol), definido na RFC 793.
A função do TCP é garantir a entrega de dados e na
seqüência correta, haja vista que o protocolo de rede não
provê tais garantias.
O TCP provê ainda o controle de fluxo e de
congestionamento fim a fim.
O Serviço não-orientado à conexão é prestado pelo UDP
(User Datagram Protocol), definido na RFC 768.
O UDP não provê nenhuma das funções acima descritas.
. – p.2/41
Formato do Segmento TCP
U
R
G
A
C
K
P
H
S
R
S
T
S
Y
N
F
I
Nusadocabeçalho
Porta de origem Porta de destino
Número de seqüência
Número de reconhecimento
Tamanho do Não Tamanho da janela
Ponteiro p/ dados urgentes
16 bits 16 bits
Opções
Dados
(cobre o cabeçalho e os dados)
Checksum
(tamanho variável)
(tamanho variável)
. – p.3/41
Formato do Segmento TCP
A Porta de origem (16 bits) é aquela utilizada pelo
transmissor do segmento.
A Porta de destino (16 bits) é aquela pela qual o
receptor aguarda pelo segmento.
Os Nu´meros de sequ¨eˆncia e de reconhecimento
(32 bits) são usados para implementar um serviço
confiável.
O Tamanho da janela (16 bits) é um campo utilizado
para controle de fluxo.
O Tamanho do cabec¸alho (4 bits) é tipicamente de 20
Bytes, haja vista que, na maioria das vezes, o cabeçalho
não possui opções.
. – p.4/41
Formato do Segmento TCP
As Opc¸o˜es são usadas para negociação do MSS
(Maximum Segment Size) e colocação de marcas de
tempo (timestamps), por exemplo.
Bits RST, SYN e FIN: usados para estabelecer e encerrar
conexões.
Bit ACK: se 1, indica que o Número de reconhecimento é
válido. Se 0, o segmento não contém uma confirmação e
o Número de reconhecimento é ignorado.
Bit PSH: indica que os dados do segmento devem ser
passados para o nível superior imediatamente.
Bit URG: indica a presença de dados urgentes, na posição
indicada pelo Ponteiro para dados urgentes.
. – p.5/41
Números de Seqüência
São aplicados sobre a cadeia de Bytes transmitidos, e
não sobre a série de segmentos.
...
499999...1999...1000...10
Arquivo
primeiro segmento
Dados para o Dados para o 
segundo segmento
Números de seqüência para os primeiro e 
segundo segmentos, respectivamente
Na prática, os números de seqüência iniciais não são
inicializados em 0, mas sim aleatoriamente.
O número de reconhecimento contém o número se
seqüência do próximo Byte que o host está esperando.
. – p.6/41
Exemplo de Uso de Números de Seqüência
Seq=42, Ack=79, ACK=1
Seq=46, Ack=83, ACK=1
83 84 85 86
46 47 48 49
S e q = 8 3 , A
c k = 5 0 , A C
K = 1
83 84 85 86
S e q = 7 9 , A
c k = 4 6 , A C
K = 1
Cadeia de Bytes 
a serem enviados
.
.
.
.
.
.
.
.
.
.
.
.
42 43 44 45 46 47 48 49
a serem enviados
Cadeia de Bytes 
79 80 81 82 83 84 85 86
42 43 44 45
79 80 81 82
79 80 81 82 83 84 85 86
46 47 48 49
. – p.7/41
Piggyback Acknowledgement
Conforme se viu, o reconhecimento para os dados
contidos em um segmento pode ser levado em outro
segmento contendo dados.
Neste caso, diz-se que esse reconhecimento “pegou uma
carona” no outro segmento de dados.
Dá-se a isso o nome de piggyback a acknowledgement.
apiggyback - [Noun]: a ride on the back and shoulders of another person.
[Adverb, adj]: on the back and shoulders of another person. [Verb]: support on
the back and shoulders; ”He piggybacked her child so she could see the show”.
Fonte: http : //www.thefreedictionary.com.
. – p.8/41
Controle de Erros
O TCP usa uma combinação de dois mecanismos para
controle de erros.
No Go Back-N, os segmentos recebidos fora de ordem
são imediatamente descartados.
Na Retransmissão Seletiva, os segmentos recebidos
fora de ordem são armazenados em um buffer
intermediário.
Quando o segmento faltante é recebido, a seqüência
é reestabelecida.
Esses mecanismos são também conhecidos como
mecanismos de janelas deslizantes.
. – p.9/41
Mecanismo Go Back-N
(espera)
expira a temporização
X
seg0seg1seg3 seg2seg5 seg4
do seg2
envia seg0
envia seg1
envia seg2
envia seg4
envia seg2
envia seg3
envia seg4
envia seg5
recebe seg5, entrega
recebe seg4, entrega
recebe seg3, entrega
recebe seg2, entrega
recebe seg5, descarta
recebe seg4, descarta
recebe seg3, descarta
recebe seg1
recebe seg0
envia seg5
envia seg3
envia ACK0
envia ACK1
envia ACK1
envia ACK1
envia ACK1
envia ACK2
envia ACK3
envia ACK4
envia ACK5
recebe ACK0
recebe ACK1
Remetente Destinatário
. – p.10/41
Mecanismo de Retransmissão Seletiva
(espera)
expira a temporização
X
seg0seg1seg3 seg2seg5 seg4
do seg2
envia seg0
envia seg1
envia seg2
envia seg4
envia seg2
recebe seg1
recebe seg0
envia seg5
envia seg3
recebe seg3, armazena
recebe seg4, armazena
recebe seg5, armazena
recebe seg2
(reconstrói a seqüência)
envia ACK0
envia ACK1
envia ACK3
envia ACK4
envia ACK5
recebe ACK0
recebe ACK]
Remetente Destinatário
envia ACK2
. – p.11/41
Comparação Entre os Mecanismos
Go Back-N:
Servidor mais leve - não há necessidade de
armazenamento temporário e remontagem de
seqüência de segmentos (⇑).
Tráfego intenso pela rede - vários segmentos terão
que ser retransmitidos (⇓).
Retransmissão Seletiva:
Servidor mais complexo - há necessidade de
armazenamento temporario e lógica de remontagem
de segmentos (⇓).
Pouco trafego pela rede - apenas o segmento que
falta deve ser retransmitido (⇑).
. – p.12/41
Temporizador de Retransmissão
O TCP associa um temporizador a cada segmento.
Quando a temporização expira (devido a um
reconhecimento perdido, por exemplo), o segmento é
retransmitido.
Por esta razão, este temporizador é chamado de
temporizador de retransmissão.
. – p.13/41
Uso do Temporizador de Retransmissão
t
e
m
p
o
r
i
z
a
ç
ã
o
x
Seq=92, ACK=0
Seq=92, ACK=0
a serem enviados
92 93 94 95 96 97 98 99
92 93 94 95
92 93 94 95
A c k = 9 6 , A
C K = 1
92 93 94 95 96 97 98 99
A c k = 9 6 , A
C K = 1
Cadeia de Bytes 
. – p.14/41
Casos Especiais
Cenário: dois segmentos são transmitidos e apenas o
reconhecimento para o primeiro deles é perdido.
1a. hipótese: o reconhecimento para o segundo chega
antes do temporizador associado ao primeiro expirar.
O primeiro segmento não será retransmitido
(reconhecimento cumulativo).
2a. hipótese: o reconhecimento para o segundo chega
depois do temporizador associado ao primeiro expirar.
O primeiro segmento (e apenas ele) terá que ser
retransmitido.
. – p.15/41
1a. Hipótese
x
t
e
m
p
o
r
i
z
a
ç
ã
o
92 93 94 95 96 97 98 99
Seq=92, ACK=0 92 93 94 95
96 97 98 99Seq=96, ACK=0
A c k = 9 6 , A
C K = 1
A c k = 1 0 0 ,
 A C K = 1
a serem enviados
Cadeia de Bytes
92 93 94 95 96 97 98 99
. – p.16/41
2a. Hipótese
x
Seq=92, ACK=0
96 97 98 99Seq=96, ACK=0
A c k = 9 6 , A
C K = 1
a serem enviados
t
e
m
p
o
r
i
z
a
ç
ã
o
A c k = 1 0 0 ,
 A C K = 1
Seq=92, ACK=0
A c k = 1 0 0 ,
 A C K = 1
Cadeia de Bytes
92 93 94 95 96 97 98 99
92 93 94 95 96 97 98 99
92 93 94 95 9697 98 99
92 93 94 95
92 93 94 95
. – p.17/41
Acelerando a Retransmissão
Nem sempre o emissor de um segmento espera pelo
temporizador de retransmissão.
Ao perceber uma lacuna a, o TCP destinatário envia três
reconhecimentos duplicados.
Ao recebê-los, o TCP remetente efetua uma
retransmissão rápida do segmento.
Essa retransmissão e dita “rápida” porque ocorre antes
do temporizador associado ao segmento faltoso expirar.
aUma falha na sequ¨eˆncia correta dos segmentos.
. – p.18/41
Exemplo de Retransmissão Acelerada
x
A c k = 9 2
A c k = 9 2
A c k = 9 2
Seq=92, ACK=0
96 97 98 99
Seq=92, ACK=0
a serem enviados
92 93 94 95 96 97 98 99
t
e
m
p
o
r
i
z
a
ç
ã
o
92 93 94 95 96 97 98 99
92 93 94 95 96 97 98 99
92 93 94 95
92 93 94 95
Cadeia de Bytes
Seq=96, ACK=0
. – p.19/41
Controle de Fluxo
Serviço prestado pelo TCP para eliminar a possibilidade
de o remetente saturar o buffer do destinatário.
Espaço disponível Dados do TCP
no buffer
(RcvWindow)
janela de recepção
(RcvBuffer)
Buffer de recepção
do IP
Dados vindos Processo de
Aplicação
O TCP destinatário armazena localmente as variáveis
LastByteRead e LastByteRcvd.
. – p.20/41
Controle de Fluxo - Lado do Destinatário
LastByteRead é o número do último Byte lido pelo nível
superior (Aplicação).
LastByteRcvd é o número do último Byte que chegou
do Nível de Rede e foi posto no buffer.
Espaço disponível Dados do TCP
no buffer
(RcvWindow)
janela de recepção
(RcvBuffer)
Buffer de recepção
do IP
Dados vindos Processo de
Aplicação
RcvBuffer não pode ser ultrapassado, ou seja:
LastByteRcvd - LastByteRead <= RcvBuffer
. – p.21/41
Controle de Fluxo - Lado do Destinatário
A janela de recepção é assim definida:
RcvWindow = RcvBuffer -
(LastByteRcvd - LastByteRead)
Espaço disponível Dados do TCP
no buffer
(RcvWindow)
janela de recepção
(RcvBuffer)
Buffer de recepção
do IP
Dados vindos Processo de
Aplicação
Inicialmente, RcvWindow = RcvBuffer
Os valores de RcvWindow são transmitidos ao remetente
no campo Tamanho da janela.
. – p.22/41
Controle de Fluxo - Lado do Remetente
O remetente, por sua vez, armazena duas variáveis:
LastByteSent: número de seqüência do último Byte
enviado;
LastByteAcked: número de seqüência do último
Byte reconhecido.
O controle de fluxo se dá mantendo-se a inequação:
LastByteSent - LastByteAcked <= RcvWindow
Quando RcvWindow = 0, o remetente aguarda que o
Nível de Aplicação consuma Bytes de RcvBuffer e um
novo anúncio de janela seja feito pelo destinatário.
. – p.23/41
Controle de Fluxo - Lado do Remetente
O que ocorre quando, após um anúncio de janela nula,
um novo anúncio de janela (não nula) é perdido?
O TCP emissor esperará infinitamente pelo anúncio?
Ao receber um anúncio de janela nula, o remetente inicia
também um temporizador.
Este temporizador é denominado temporizador de
persistência.
Se um novo anúncio de janela é perdido, o temporizador
de persistência expira; um segmento é enviado, e seu
reconhecimento contém o novo valor de RcvWindow.
. – p.24/41
Dinâmica do Controle de Fluxo
Seq=92, ACK=0
Seq=95, ACK=0
Seq=92, ACK=0
97 98 99
92 93 94 95 96 97 98 99
a serem enviados
92 93 94 95 96 97 98 99
97 98 99
A C K = 0 , R
c v W i n d o w
= 5
a c k = 9 5 , A
C K = 1 , R c v
W i n d o w = 2
a c k = 9 7 , A
C K = 1 , R c v
W i n d o w = 0
A C K = 0 , R
c v W i n d o w
= 3
a c k = 1 0 0 , 
A C K = 1 , R
c v W i n d o w
= 0
A C K = 0 , R
c v W i n d o w
= 4
Anúncio de janela
anúncio de janela
anúncio de janela
Cadeia de Bytes
92 93 94
95 96
Aplicação lê 3 Bytes
Aplicação lê 4 Bytes
. – p.25/41
Abertura de Conexão
Uma conexão TCP é aberta usando um procedimento
conhecido como aperto de mão de três vias a.
Os segmentos usados durante este procedimento não
contêm dados do nível de Aplicação.
Na maioria deles, o bit SYN é setado em 1.
É na abertura de conexão que são definidos os números
de seqüência iniciais e demais opções.
Nos segmentos posteriores b, o bit SYN é setado em 0.
aOu, em ingleˆs, three-way handshake.
bAqueles que carregam dados passados pelo Nı´vel de Aplicac¸a˜o.
. – p.26/41
Three-way Handshake
Requisição de conexão (SYN=1, ACK=0, Seq=x)
C o n e x ã o
 c o n f i r m a
d a ( S Y N = 1
, A C K = 1 , S
e q = y , A c k =
x + 1 )
Ack (SYN=0, ACK=1, Seq=x+1,Ack=y+1)
. – p.27/41
Encerramento de Conexão
Após a troca de segmentos que carregam dados do Nível
de Aplicação, ocorre o encerramento da conexão.
Este procedimento, a exemplo da abertura, é definido por
uma determinada seqüência de segmentos específicos.
Cada entidade TCP fecha o seu lado da conexão com a
outra entidade empregando segmentos com o bit FIN
setado em 1.
Os segmentos TCP carregam seus respectivos números
de seqüência e reconhecimento.
. – p.28/41
Encerramento de Conexão
Requisição de desconexão (Seq=w, Ack=k, FIN=1, ACK=1)
A c k ( S e q = k , A c k =
w + 1 , F I N = 0 , A C K
= 1 )
R e q u i s i ç ã o d e
 d e s c o n e x ã o ( S e q
= k , A c k = w + 1 , F I N
= 1 , A C K = 1 )
Ack (Seq=w+1, Ack=k+1, FIN=0, ACK=1)
. – p.29/41
Controle de Congestionamento
Evita que segmentos não se percam excessivamente
devido a congestionamento na rede.
Uma rede rápida alimentabdo um 
receptor de pequena capacidade
Uma rede congestionada alimentando
um receptor de grande capacidade
(ajuste da taxa de transmissão
Controle de Fluxo Controle de Congestionamento
(ajuste da taxa de transmissão
para não transbordar o balde) para não transbordar o funil)
. – p.30/41
Controle de Congestionamento
Para o controle de congestionamento, o TCP remetente
mantém a janela de congestionamento (CongWin).
A quantidade de dados que um remetente pode adicionar
a uma conexão TCP é limitada também pela CongWin:
LastByteSent - LastByteAcked <=
min(CongWin, RcvWindow)
Há também outra variável, denominada limiar, que
afeta o modo como a janela de congestionamento cresce.
. – p.31/41
Controle de Congestionamento
Para melhor compreensão do algoritmo usado pelo TCP
para controle de congestionamento, supõe-se que:
1. O buffer de recepção seja tão grande que a limitação
imposta pela janela de recepção possa ser ignorada;
2. O remetente tem uma grande quantidade de dados a
transmitir.
Inicialmente, CongWin aumenta de forma exponencial,
indo até o limiar a.
Em seguida, ela aumenta linearmente até ocorrer um
evento de perda.
aFase chamada de partida lenta, porque comec¸a com uma janela pequena.
. – p.32/41
Controle de Congestionamento
1
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
evento de perda
limiar = 8 segmentos
Número da transmissão
J
a
n
e
l
a
 
d
e
 
c
o
n
g
e
s
t
i
o
n
a
m
e
n
t
o
 
(
e
m
 
s
e
g
m
e
n
t
o
s
)
. – p.33/41
Dois Pesos, Duas Medidas
Imediatamente após a ocorrência de um evento de perda,
o valor do limiar é setado na metade da ConWin.
O comportamento do emissor passará a ser regido pela
natureza do evento de perda, que pode ser:
1. A recepção de três reconhecimentos duplicados;
2. A expiração de um temporizador de retransmissão.
Imagens valem mais do que mil palavras...
. – p.34/41
Recepção de Três Reconhecimentos Duplicados
1
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1 2 3 4 5 67 8 9 10 11 12 13 14 15
Número da transmissão
limiar = 8 segmentos
6 segmentos (12/2)
(novo) limiar = 
J
a
n
e
l
a
 
d
e
 
c
o
n
g
e
s
t
i
o
n
a
m
e
n
t
o
 
(
e
m
 
s
e
g
m
e
n
t
o
s
)
reconhecimentos
recepção de três
duplicados !!!
. – p.35/41
Expira o Temporizador de Retransmissão
1
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
limiar = 8 segmentos
Número da transmissão
J
a
n
e
l
a
 
d
e
 
c
o
n
g
e
s
t
i
o
n
a
m
e
n
t
o
 
(
e
m
 
s
e
g
m
e
n
t
o
s
)
(novo) limiar = 
6 segmentos (12/2)
expira o temporizador
de retransmissão!!!
. – p.36/41
Controle de Congestionamento: Resumo da Ópera
expira o temporizador
de retransmissão!!!
recepção de três
reconhecimentos
duplicados!!!
1
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Número da transmissão
J
a
n
e
l
a
 
d
e
 
c
o
n
g
e
s
t
i
o
n
a
m
e
n
t
o
 
(
e
m
 
s
e
g
m
e
n
t
o
s
)
(novo) limiar = 
6 segmentos (12/2)
8 segmentos
limiar =
. – p.37/41
UDP (User Datagram Protocol)
Definido na RFC 768, o UDP é usado por aplicações que
não podem (ou não querem) pagar o preço do serviço
prestado pelo TCP.
Não há controle de erros.
Não existe nem mesmo o conceito de conexão.
Taxa de envio não-regulada: o UDP não provê controle
de fluxo nem de congestionamento.
Na prática, a taxa de recebimento é limitada apenas
pela largura de banda.
Apenas multiplexação/demultiplexação e detecção de
erros em segmentos recebidos são realizadas.
. – p.38/41
Formato do Segmento UDP
Porta de origem Porta de destino
16 bits 16 bits
Tamanho
Dados
(tamanho variável)
(cobre o cabeçalho e os dados)
Checksum
(cobre o cabeçalho e os dados)
. – p.39/41
Detecção de Erros em Segmentos Recebidos
Remetente realiza o complemento de 1 da soma de
todas as palavras de 16 bits do segmento a, e o põe no
campo Checksum.
Destinatário faz a soma de todas as palavras de 16 bits,
inclusive o checksum.
Se não houve erros no envio, o resultado será
1111111111111111.
Se pelo menos um daqueles bits for 0, sabe-se que
um erro foi introduzido no segmento original.
aAlguns campos do datagrama IP tambe´m entram nesse ca´lculo, e 0s sa˜o adi-
cionados no final dos dados, se o total a ser somado na˜o for um mu´ltiplo de 16.
. – p.40/41
Detecção de Erros em Segmentos Recebidos
Exemplo de cálculo do campo Checksum:
1a. palavra => 0110011001100110
2a. palavra => 0101010101010101
3a. palavra => 0000111100001111
Soma => 1100101011001010
Compl. de 1 => 0011010100110101 (Checksum)
Quando o campo Checksum não é usado, todos os seus
bits são setados em 0 a.
Este procedimento é o mesmo usado pelo TCP.
aNeste caso, o 0 verdadeiro e´ armazenado com todos os bits iguais a 1.
. – p.41/41
	
	{large Introdução}
	{large Formato do Segmento TCP}
	{large Formato do Segmento TCP}
	{large Formato do Segmento TCP}
	{large Números de Seqüência}
	{large Exemplo de Uso de Números de Seqüência}
	{large Piggyback Acknowledgement}
	{large Controle de Erros}
	{large Mecanismo Go Back-N}
	{large Mecanismo de Retransmissão Seletiva}
	{large Comparação Entre os Mecanismos}
	{large Temporizador de Retransmissão}
	{large Uso do Temporizador de Retransmissão}
	{large Casos Especiais}
	{large 1a. Hipótese}
	{large 2a. Hipótese}
	{large Acelerando a Retransmissão}
	{large Exemplo de Retransmissão Acelerada}
	{large Controle de Fluxo}
	{large Controle de Fluxo - Lado do Destinatário}
	{large Controle de Fluxo - Lado do Destinatário}
	{large Controle de Fluxo - Lado do Remetente}
	{large Controle de Fluxo - Lado do Remetente}
	{large Dinâmica do Controle de Fluxo}
	{large Abertura de Conexão}
	{large Three-way Handshake}
	{large Encerramento de Conexão}
	{large Encerramento de Conexão}
	{large Controle de Congestionamento}
	{large Controle de Congestionamento}
	{large Controle de Congestionamento}
	{large Controle de Congestionamento}
	{large Dois Pesos, Duas Medidas}
	{large Recepção de Três Reconhecimentos Duplicados}
	{large Expira o Temporizador de Retransmissão}
	{nullormalsize Controle de Congestionamento: Resumo da Ãfipera}
	{large UDP (User Datagram Protocol)}
	{large Formato do Segmento UDP}
	{large Detecção de Erros em Segmentos Recebidos}
	{large Detecção de Erros em Segmentos Recebidos}

Continue navegando