• Nenhum resultado encontrado

Redes de Computadores Camada de Transporte Protocolo TCP

N/A
N/A
Protected

Academic year: 2021

Share "Redes de Computadores Camada de Transporte Protocolo TCP"

Copied!
18
0
0

Texto

(1)

Redes de Computadores

Camada de Transporte

Protocolo

Protocolo

TCP

TCP

Capítulo 3 Kurose & Ross

(Especial p/ Curso Telecom 2008)

Prof: José Marcos Silva Nogueira

Universidade Federal de Minas Gerais

Departamento de Ciência da Computação

Belo Horizonte – 2008

TCP: Overview

RFCs: 793, 1122, 1323, 2018,

2581

• dados full-duplex: – transmissão bi-direcional na mesma conexão

– MSS: maximum segment size

• orientado à conexão:

– handshaking (troca de

mensagens de controle) inicia o estado do transmissor e do receptor antes da troca de dados

• controle de fluxo:

– transmissor não esgota a capacidade do receptor

• ponto-a-ponto:

– um transmissor, um receptor

• confiável, seqüêncial byte stream:

– não há contornos de mensagens

• pipelined: (transmissão de vários pacotes em confirmação)

– Controle de congestão e de fluxo definem tamanho da janela

• buffers de transmissão e de recepção

socket socket

aplicação

(2)

Estrutura do Segmento TCP

porta origem porta destino

32 bits dados de aplicação (tamanho variável) número de seqüência número de reconhecimento janela de recep. dados urgentes checksum F S R P A U tam. cabec.usadonão

Opções (tamanho variável)

URG: dados urgentes (pouco usado) ACK: campo de ACK é válido PSH: produz envio de dados (pouco usado) RST, SYN, FIN: estabelec. de conexão (comandos de criação e término) número de bytes receptor está pronto para aceitar contagem por bytes de dados (não segmentos!) Internet checksum (como no UDP)

Números de Seqüência e ACKs do TCP

Números de seqüência: – número do primeiro byte no segmento de dados ACKs: – número do próximo byte esperado do outro lado

– ACK cumulativoQ:

como o receptor trata segmentos fora de ordem

– A especificação do TCP não define, fica a critério do implementador Host A Host B Seq=42, ACK=79, data = ‘C’ Seq=79, ACK=4 3, data = ‘C ’ Seq=43, ACK=80 Usuário digita ‘C’ host confirma recepção do ‘C’ ecoado host confirma recepção de ‘C’, e ecoa o ’C’ de volta tempo

(3)

TCP: transferência de dados confiável

transmissor simplificado, assumindo que não há controle de fluxo nem de congestionamento wait for event espera por evento

evento:dados recebidos

da aplicação acima

evento:temporização esgotada

para segmento com seq = y

evento:ACK recebido,

com número de ACK = y cria, envia segmento

retransmite segmento

processamento do ACK

TCP:

transferência

confiável

00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02

03 loop (forever) { 04 switch(event)

05 event:dados recebidos da aplicação acima

06 cria segmento TCP com número de seqüência nextseqnum 07 inicia temporizador para segmento nextseqnum

08 passa segmento ao IP

09 nextseqnum = nextseqnum + length(data)

10 event:esgotamento de temp. para segmento com seq = y 11 retransmite segmento com seq = y

12 calcule nova temporização para o segmento y 13 reinicia temporizador para número de seqüência y 14 event:ACK recebido, com valor y no campo de ACK

15 if (y > sendbase) { /* ACK cumulativo de todos os dados até y */ 16 cancela todas as temporizações para segmentos com seq < y 17 sendbase = y

18 }

19 else { /* um ACK duplicata para um segmento já reconhecido */ 20 incrementa numero de duplicatas de ACKs recebidas para y 21 if (numero de duplicatas de ACKS recebidas para y == 3) { 22 /* TCP fast retransmit */

23 reenvia segmento com número de seqüência y 24 reinicia temporização para segmento y Transmissor

(4)

Geração de ACK

[RFC 1122, RFC 2581]

Event0

segmento chega em ordem, não há lacunas,

segmentos anteriores já aceitos segmento chega em ordem, não há lacunas,

um ACK atrasado pendente segmento chega fora de ordem número de seqüência chegou maior: gap detectado

chegada de segmento que parcial ou completamente preenche o gap

Ação do TCP Receptor

ACK retardado. Espera até 500ms pelo próximo segmento. Se não chegar, envia ACK

imediatamente envia um ACK cumulativo

envia ACK duplicado, indicando número de seqüência do próximo byte esperado reconhece imediatamente se o segmento começa na borda inferior do gap

TCP: cenários de retransmissão

Host A

Seq=92, 8 bytes data

ACK=100

loss

tempo cenário com perda

do ACK

Host B

X

Seq=92, 8 bytes data

ACK=100 Host A Seq=100, 20 bytes d ata ACK= 100 Seq=92 t emp .

tempotemporização prematura,

ACKs cumulativos

Host B

Seq=92, 8 bytes data ACK=12

0 Seq=92, 8 bytes data

Seq=100 t emp . ACK=12 0 temporização

(5)

TCP: Controle de Fluxo

receptor:explicitamente informa o transmissor da área livre no buffer (dinamicamente mudando)

– campo RcvWindow no segmento TCP

transmissor: mantém a quantidade de dados transmitidos mas não reconhecidos menor que o último RcvWindow recebido

transmissor não deve esgotar os buffers de

recepção enviando dados rápido demais

controle de fluxo

armazenamento de recepção

RcvBuffer = tamanho do Buffer de recepção do TCP

RcvWindow = total de espaço livre no buffer

Controle de

fluxo

Tamanho máximo

do segmento para

o exemplo:

1000 bytes

(6)

TCP Round Trip Time e Temporização

Q

:

Como escolher o valor da temporização

do TCP?

• maior que o RTT

– nota: RTT varia

• muito curto: temporização prematura

– retransmissões desnecessárias

• muito longo: a reação à perda de segmento fica

lenta

(7)

TCP Round Trip Time e Temporização

Q:

Como estimar o RTT?

• SampleRTT:

tempo medido da transmissão de

um segmento até a respectiva confirmação

– ignora retransmissões e segmentos

reconhecidos de forma cumulativa

• SampleRTT varia de forma rápida, é desejável

um amortecedor para a estimativa do RTT

– usar várias medidas recentes, não apenas o

último SampleRTT

obtido

EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT

• Média móvel com peso exponencial

• influência de uma dada amostra decresce de forma

exponencial

• valor típico de x: 0.1

Definindo a temporização

(8)

Definindo a temporização

• Uma opção: Temporização=2 * EstimatedRTT

• Outra opção:

– EstimatedRTT mais uma “margem de segurança”

– Grandes variações no EstimatedRTT -> maior margem de segurança

Temporização = EstimatedRTT + 4*Desvios

Desvios = (1-x)*Desvio +

x * |SampleRTT-EstimatedRTT|

TCP Round Trip Time e Temporização

TCP Estabelecimento de Conexão

TCP transmissor estabelece conexão com o receptor antes de trocar segmentos de dados

• inicializar variáveis:

– números de seqüência

– buffers, controle de fluxo (ex. RcvWindow)

• Em termos de programação

– cliente: iniciador da conexão

Socket clientSocket = new Socket("hostname","port number");

– servidor:chamado pelo cliente

(9)

TCP – Gerenciamento de Conexões

Estabelecimento de Conexão

Three way handshake:

Passo 1:

sistema final cliente envia

TCP SYN ao servidor – especifica número de seqüência inicial

Passo 2:

sistema final servidor que recebe o SYN, responde

com segmento

SYNACK

– reconhece o SYN recebido – aloca buffers

– especifica o número de seqüência inicial do servidor

Passo 3

: o sistema final cliente reconhece o SYN + ACK

TCP – Gerenciamento de Conexões

Estabelecimento de Conexão

Active participant

(client) Passive participant(server)

SYN, SequenceNum = x SYN + ACK , Sequence Num = y, ACK, Ackn owledgment = y + 1 Acknowledg ment = x + 1

(10)

TCP

– Gerenciamento de Conexões

Término de Conexão

Fechando uma conexão:

cliente fecha osocket:

clientSocket.close();

Passo 1:

o

clienteenvia o

segmento TCP FIN ao servidor

Passo 2:servidor recebe FIN, responde com ACK. Fecha a conexão, envia FIN.

cliente FIN servidor ACK ACK FIN close close closedesper a te mp.

TCP

– Gerenciamento de Conexões

Término de Conexão

Passo 3:

clienterecebe FIN, responde com ACK.

– Entra “espera temporizada” - vai responder com ACK a FINs recebidos

Passo 4:

servidor, recebe ACK. Conexão fechada. cliente FIN servidor ACK ACK FIN closing closing closedespera temp. closed

(11)

Término de conexão

3-way handshake

TCP Gerenciamento de Conexão

Máquina de Estados do Cliente

(12)

TCP Controle de Conexão

Máquina de Estados do Servidor

TCP Controle de Conexão

Estados do Cliente

(13)

Gerência

de conexão

(14)

Princípios de Controle de

Congestionamento

Congestionamento:

• Informalmente: “muitas fontes enviando dados acima da

capacidade da

rede

tratá-los”

• Diferente de controle de fluxo!

• Sintomas:

– perda de pacotes (saturação de buffer nos roteadores)

– atrasos grandes (filas nos buffers dos roteadores)

• Um dos 10 problemas mais importantes na Internet!

Causas e custos do congestionamento:

Cenário 1

• Dois transmissores, dois receptores

• Um roteador, buffers infinitos

• Não há retransmissão

(15)

Causas e custos do congestionamento:

Cenário 1

• Dois transmissores, dois receptores

• Um roteador, buffers infinitos

• Não há retransmissão

• Gráficos de vazão por conexão

• Grandes atrasos quando congestionado

• Máxima vazão obtenível

• Um roteador, buffers

finitos

• Transmissor reenvia pacotes perdidos

Causa e custos do congestionamento:

Cenário 2

(16)

• Sempre vale : (tráfego bom)

• “Perfeita” retransmissão somente quando há perdas:

• Retransmissão de pacotes atrasados (não perdidos) torna maior (que o caso perfeito ) para o mesmo

λ

in=

λ

out

λ

in

>

λ

out

λ

in

λ

out

“Custos” do congestionamento:

• Mais trabalho (retransmissões) para um dado “tráfego bom”

• Retransmissões desnecessárias: enlace transporta várias cópias do mesmo pacote

Causas/custos do congestionamento: cenário 2

• quatro transmissores

• caminhos com múltiplos saltos • temporizações/retransmissões

λ

in

Q:

o que acontece quando

e aumentam

λ

?

in

(17)

Outro “custo” do congestionamento:

• quando pacote é descartado, qualquer capacidade de transmissão que tenha sido anteriormente usada para aquele pacote é desperdiçada!

Causas/custos do congestionamento: cenário 3

Abordagens do problema de controle de

congestionamento

Controle de congestionamento fim-a-fim:

• não usa realimentação explícita da rede

• congestionamento é inferido a partir das perdas e dos atrasos observados nos sistemas finais • abordagem usada pelo TCP

Controle de congestionamento assistido pela rede:

• roteadores enviam informações para os sistemas finais

– bit único indicando o congestionamento (SNA, DECbit, TCP/IP ECN, ATM)

– taxa explícita do transmissor poderia ser

Existem duas abordagens gerais para o problema

de controle de congestionamento:

(18)

Capítulo 3: Resumo

• princípios por trás dos

serviços da camada de

transporte:

– multiplexação/demultiplexação – transferência de dados confiável – controle de fluxo – controle de congestionamento • instanciação e implementação na – UDP – TCP

A seguir:

• saímos da “borda” da rede (camadas de aplicação e de transporte)

• vamos para o “núcleo” da rede

Referências

Documentos relacionados

In this work, improved curves are the head versus flow curves predicted based on the correlations presented in Table 2 and improved by a shut-off head prediction

Segundo o mesmo autor, a animação sociocultural, na faixa etária dos adultos, apresenta linhas de intervenção que não se esgotam no tempo livre, devendo-se estender,

Os resultados do presente trabalho permitem concluir que: - A vacina produzida em cultivo celular conferiu proteção parcial aos animais desafiados com um isolado virulento de ORFV; -

Civil: processo de conhecimento. Código de processo civil comentado e legislação extravagante.13. São Paulo: Revista dos Tribunais, 2013.pp. 44 BUENO, Cassio Scarpinela. Curso

Getulio Monteiro veniva eletto consigliere municipale ed i suoi colleghi lo vollero subito presidente della camera. E' impossibile dir succintamente dell'opera del

1º Os Tribunais de Justiça e os Tribunais Regionais Federais criarão no âmbito de sua jurisdição Comitê Estadual de Saúde, com representação mínima de Magistrados

Acreditamos que refletir essa compreensão (destacável da corrente quantitativa na Geografia), a qual, com algum cuidado explicativo prévio, pode muito bem ser entendida como

Um estudo sobre representações (Jony Sandi de Assunção, 2017), que problematiza a forma como ainda é representada a família nos livros didáticos utilizados nas