Upload
hoangnhi
View
214
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO
DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIA DA COMPUTAÇÃO
Redes de Computadores INível de Transporte (TCP & UDP)
Prof. Helcio Wagner da Silva
. – p.1/41
Introdução
Na Arquitetura Internet, o Nível de Transporte podefornecer tanto um serviço orientado à conexão como umserviç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 naseqüência correta, haja vista que o protocolo de rede nãoprovê tais garantias.
O TCP provê ainda o controle de fluxo e decongestionamento 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
URG
ACK
PHS
RST
SYN
FINusadocabeç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 pelotransmissor do segmento.
A Porta de destino (16 bits) é aquela pela qual oreceptor aguarda pelo segmento.
Os Numeros de seq uencia e de reconhecimento
(32 bits) são usados para implementar um serviçoconfiável.
O Tamanho da janela (16 bits) é um campo utilizadopara controle de fluxo.
O Tamanho do cabecalho (4 bits) é tipicamente de 20Bytes, haja vista que, na maioria das vezes, o cabeçalhonão possui opções.
. – p.4/41
Formato do Segmento TCP
As Opcoes são usadas para negociação do MSS(Maximum Segment Size) e colocação de marcas detempo (timestamps), por exemplo.
Bits RST, SYNe FIN : usados para estabelecer e encerrarconexõ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 eo Número de reconhecimento é ignorado.
Bit PSH: indica que os dados do segmento devem serpassados para o nível superior imediatamente.
Bit URG: indica a presença de dados urgentes, na posiçãoindicada pelo Ponteiro para dados urgentes .
. – p.5/41
Números de Seqüência
São aplicados sobre a cadeia de Bytes transmitidos, enão sobre a série de segmentos.
...499999...1999...1000...10
Arquivo
primeiro segmentoDados 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ãoinicializados em 0, mas sim aleatoriamente.
O número de reconhecimento contém o número seseqüê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
Seq=83, Ack=50, ACK=1
83 84 85 86
Seq=79, Ack=46, ACK=1
Cadeia de Bytes a serem enviados
... ...
... ...42 43 44 45 46 47 48 49
a serem enviadosCadeia 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 dadoscontidos em um segmento pode ser levado em outrosegmento contendo dados.
Neste caso, diz-se que esse reconhecimento “pegou umacarona” 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 paracontrole de erros.
No Go Back-N , os segmentos recebidos fora de ordemsão imediatamente descartados.
Na Retransmissão Seletiva , os segmentos recebidosfora de ordem são armazenados em um bufferintermediário.
Quando o segmento faltante é recebido, a seqüênciaé reestabelecida.
Esses mecanismos são também conhecidos comomecanismos 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 dearmazenamento temporário e remontagem deseqüência de segmentos (⇑).
Tráfego intenso pela rede - vários segmentos terãoque ser retransmitidos (⇓).
Retransmissão Seletiva:
Servidor mais complexo - há necessidade dearmazenamento temporario e lógica de remontagemde segmentos (⇓).
Pouco trafego pela rede - apenas o segmento quefalta 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 umreconhecimento perdido, por exemplo), o segmento éretransmitido.
Por esta razão, este temporizador é chamado detemporizador de retransmissão .
. – p.13/41
Uso do Temporizador de Retransmissão
tem
poriz
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
Ack=96, ACK=1
92 93 94 95 96 97 98 99
Ack=96, ACK=1
Cadeia de Bytes
. – p.14/41
Casos Especiais
Cenário: dois segmentos são transmitidos e apenas oreconhecimento para o primeiro deles é perdido.
1a. hipótese: o reconhecimento para o segundo chegaantes do temporizador associado ao primeiro expirar.
O primeiro segmento não será retransmitido(reconhecimento cumulativo).
2a. hipótese: o reconhecimento para o segundo chegadepois do temporizador associado ao primeiro expirar.
O primeiro segmento (e apenas ele) terá que serretransmitido.
. – p.15/41
1a. Hipótese
x
tem
poriz
ação
92 93 94 95 96 97 98 99
Seq=92, ACK=092 93 94 95
96 97 98 99Seq=96, ACK=0
Ack=96, ACK=1
Ack=100, ACK=1
a serem enviadosCadeia 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
Ack=96, ACK=1
a serem enviados
tem
poriz
ação
Ack=100, ACK=1
Seq=92, ACK=0
Ack=100, ACK=1
Cadeia de Bytes
92 93 94 95 96 97 98 99
92 93 94 95 96 97 98 99
92 93 94 95 96 97 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 pelotemporizador de retransmissão.
Ao perceber uma lacuna a, o TCP destinatário envia trêsreconhecimentos duplicados.
Ao recebê-los, o TCP remetente efetua umaretransmissão rápida do segmento.
Essa retransmissão e dita “rápida” porque ocorre antesdo temporizador associado ao segmento faltoso expirar.
aUma falha na sequencia correta dos segmentos.
. – p.18/41
Exemplo de Retransmissão Acelerada
x
Ack=92
Ack=92
Ack=92
Seq=92, ACK=0
96 97 98 99
Seq=92, ACK=0
a serem enviados
92 93 94 95 96 97 98 99
tem
poriz
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 possibilidadede o remetente saturar o buffer do destinatário.
Espaço disponível Dados do TCPno buffer
(RcvWindow)janela de recepção
(RcvBuffer)Buffer de recepção
do IPDados vindos Processo de
Aplicação
O TCP destinatário armazena localmente as variáveisLastByteRead e LastByteRcvd .
. – p.20/41
Controle de Fluxo - Lado do Destinatário
LastByteRead é o número do último Byte lido pelo nívelsuperior (Aplicação).
LastByteRcvd é o número do último Byte que chegoudo Nível de Rede e foi posto no buffer.
Espaço disponível Dados do TCPno buffer
(RcvWindow)janela de recepção
(RcvBuffer)Buffer de recepção
do IPDados 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 TCPno buffer
(RcvWindow)janela de recepção
(RcvBuffer)Buffer de recepção
do IPDados vindos Processo de
Aplicação
Inicialmente, RcvWindow = RcvBuffer
Os valores de RcvWindow são transmitidos ao remetenteno 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 Byteenviado;
LastByteAcked : número de seqüência do últimoByte reconhecido.
O controle de fluxo se dá mantendo-se a inequação:
LastByteSent - LastByteAcked <= RcvWindow
Quando RcvWindow = 0, o remetente aguarda que oNível de Aplicação consuma Bytes de RcvBuffer e umnovo 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 iniciatambém um temporizador.
Este temporizador é denominado temporizador depersistência .
Se um novo anúncio de janela é perdido, o temporizadorde persistência expira; um segmento é enviado, e seureconhecimento 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=097 98 99
92 93 94 95 96 97 98 99
a serem enviados92 93 94 95 96 97 98 99
97 98 99
ACK=0, RcvWindow=5
ack=95, ACK=1, RcvWindow=2
ack=97, ACK=1, RcvWindow=0
ACK=0, RcvWindow=3
ack=100, ACK=1, RcvWindow=0
ACK=0, RcvWindow=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 procedimentoconhecido como aperto de mão de três vias a.
Os segmentos usados durante este procedimento nãocontê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úmerosde seqüência iniciais e demais opções.
Nos segmentos posteriores b, o bit SYNé setado em 0.
aOu, em ingles, three-way handshake.bAqueles que carregam dados passados pelo Nıvel de Aplicacao.
. – p.26/41
Three-way Handshake
Requisição de conexão (SYN=1, ACK=0, Seq=x)
Conexão confirmada (SYN=1, ACK=1, Seq=y, Ack=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ívelde Aplicação, ocorre o encerramento da conexão.
Este procedimento, a exemplo da abertura, é definido poruma determinada seqüência de segmentos específicos.
Cada entidade TCP fecha o seu lado da conexão com aoutra entidade empregando segmentos com o bit FIN
setado em 1.
Os segmentos TCP carregam seus respectivos númerosde seqüência e reconhecimento.
. – p.28/41
Encerramento de Conexão
Requisição de desconexão (Seq=w, Ack=k, FIN=1, ACK=1)
Ack (Seq=k, Ack=w+1, FIN=0, ACK=1)
Requisição de desconexão (Seq=k, Ack=w+1, FIN=1, ACK=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 excessivamentedevido a congestionamento na rede.
Uma rede rápida alimentabdo um receptor de pequena capacidade
Uma rede congestionada alimentandoum receptor de grande capacidade
(ajuste da taxa de transmissãoControle de Fluxo Controle de Congestionamento
(ajuste da taxa de transmissãopara não transbordar o balde) para não transbordar o funil)
. – p.30/41
Controle de Congestionamento
Para o controle de congestionamento, o TCP remetentemantém a janela de congestionamento (CongWin).
A quantidade de dados que um remetente pode adicionara uma conexão TCP é limitada também pela CongWin :
LastByteSent - LastByteAcked <=
min(CongWin, RcvWindow)
Há também outra variável, denominada limiar , queafeta o modo como a janela de congestionamento cresce.
. – p.31/41
Controle de Congestionamento
Para melhor compreensão do algoritmo usado pelo TCPpara controle de congestionamento, supõe-se que:
1. O buffer de recepção seja tão grande que a limitaçãoimposta pela janela de recepção possa ser ignorada;
2. O remetente tem uma grande quantidade de dados atransmitir.
Inicialmente, CongWin aumenta de forma exponencial,indo até o limiar a.
Em seguida, ela aumenta linearmente até ocorrer umevento de perda .
aFase chamada de partida lenta , porque comeca 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
Jane
la d
e co
nges
tiona
men
to (
em s
egm
ento
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 pelanatureza 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 6 7 8 9 10 11 12 13 14 15
Número da transmissão
limiar = 8 segmentos
6 segmentos (12/2)
(novo) limiar =
Jane
la d
e co
nges
tiona
men
to (
em s
egm
ento
s)reconhecimentosrecepçã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
Jane
la d
e co
nges
tiona
men
to (
em s
egm
ento
s)
(novo) limiar =
6 segmentos (12/2)
expira o temporizadorde retransmissão!!!
. – p.36/41
Controle de Congestionamento: Resumo da Ópera
expira o temporizadorde retransmissão!!!
recepção de trêsreconhecimentos
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
Jane
la d
e co
nges
tiona
men
to (
em s
egm
ento
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 quenão podem (ou não querem) pagar o preço do serviçoprestado 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ê controlede fluxo nem de congestionamento.
Na prática, a taxa de recebimento é limitada apenaspela largura de banda.
Apenas multiplexação/demultiplexação e detecção deerros 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 detodas as palavras de 16 bits do segmento a, e o põe nocampo 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 queum erro foi introduzido no segmento original.
aAlguns campos do datagrama IP tambem entram nesse calculo, e 0s sao adi-
cionados no final dos dados, se o total a ser somado nao for um multiplo 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 seusbits 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