41
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

Redes de Computadores I - ufersa.edu.br · Os N´umeros de seq ¨uˆencia e de reconhecimento (32 bits) são usados para implementar um serviço ... (4 bits) é tipicamente de 20

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