Buscar

Aula05 CamadaTransporte

Prévia do material em texto

Redes de Computadores: 
Camada de Transporte 
Luciana A. F. Martimiano 
Kalinka Castelo Branco 
1 
2 
Camada de Transporte 
• Serviços Básicos da camada de transporte: 
– Multiplexação (origem: aceitar dados da camada de 
aplicação, dividi-los em unidades menores caso seja 
necessário, e entregar à camada de rede) 
– Demultiplexação (destino: receber dados da camada 
de rede e entregar à camada de aplicação) 
– Tudo deve ser feito com eficiência de forma que as 
camadas superiores fiquem isoladas das mudanças na 
tecnologia de hardware 
– Principais protocolos: 
• TCP – Transmission Control Protocol 
• UDP – User Datagram Protocol 
3 
4 
Camada de Transporte – Funções 
Multiplexação/Demultiplexação 
reunir dados de múltiplos 
processo de aplicação na 
origem, encapsular em 
segmentos com informações 
para demultiplexação 
Multiplexação 
Demultiplexação: entrega de 
mensagens aos processos de 
aplicação corretos no destino 
Camada de Transporte – Funções 
Multiplexação/Demultiplexação 
5 
Camada de Transporte: Serviços 
específicos 
Serviço TCP: 
• orientado a conexão: 
inicialização requerida entre 
cliente e servidor 
• transporte confiável entre 
processos remetente e 
receptor 
• controle de fluxo: remetente 
não vai “inundar” receptor 
• controle de congestionamento: 
não “inundar” a rede 
• não provê: garantias temporais 
ou de banda mínima 
Serviço UDP: 
• transferência de dados não 
confiável entre processos 
remetente e receptor 
• não orientado à conexão 
• best-effort 
• não provê: confiabilidade, 
controle de fluxo, controle de 
congestionamento, garantias 
temporais ou de banda 
mínima 
 
 
7 
Camada de Transporte - Funções 
• Fornecem comunicação 
lógica entre processos de 
aplicação em diferentes 
hosts 
• Os protocolos de transporte 
são executados nos sistemas 
finais da rede 
• Transferência de dados 
entre processos 
• Ler a Seção 3.1.1 do Livro do 
Kurose e Ross 
 
 
8 
Camada de Transporte - PDU 
• Segmento - unidade de 
dados trocada entre 
protocolos da camada de 
transporte 
– TPDU: transport protocol 
data unit (unidade de 
dados do protocolo de 
transporte) 
 
formato básico do 
segmento de transporte 
Camada de Transporte - Funções 
9 
10 
Endereçamento da Camada de Transporte 
• Da mesma forma que em outras camadas, a camada 
de transporte também possui um endereçamento 
• Os processos utilizam o TSAP (Transport Service 
Access Point – Ponto de Acesso de Serviços de 
Transporte) para se comunicarem 
• Em redes IP, o TSAP é um número de 16 bits 
chamado de porta. O endereço da camada de 
transporte (socket) é um número de 48 bits, 
composto pela agregação do endereço IP (32 bits) do 
host e o número da porta (16 bits) 
– Assim, são 65536 portas para o TCP, e 65536 portas para o 
UDP. 
 
Endereçamento da Camada de Transporte 
11 
Porta é um TSAP 
Endereçamento da Camada de Transporte 
API Sockets 
• apareceu no BSD4.1 UNIX 
em 1981 
• são explicitamente criados, 
usados e liberados por 
aplicações 
• paradigma cliente/servidor 
• dois tipos de serviço de 
transporte via API Sockets 
– datagrama não confiável 
– fluxo de bytes, confiável 
uma interface (uma 
“porta”), local ao host, 
criada por ele pertencente 
à aplicação, controlado 
pelo SO, através da qual 
um processo de aplicação 
pode tanto enviar como 
receber mensagens 
para/de outro processo de 
aplicação 
(remoto ou local) 
 
socket 
Endereçamento da Camada de Transporte 
processo 
TCP 
ou 
UDP 
socket 
controlado pelo 
programador de 
aplicação 
controlado 
pelo sistema 
operacional 
estação ou 
servidor 
processo 
TCP 
ou 
UDP 
socket 
controlado pelo 
programador de 
aplicação 
controlado 
pelo sistema 
operacional 
estação ou 
servidor 
internet 
14 
Endereçamento da Camada de Transporte 
• Para uma melhor organização de serviços, 
algumas portas foram definidas pela IANA 
como “portas bem conhecidas” (well-known 
ports)  portas abaixo de 1024 
– http://www.iana.org 
– Para aplicações não padronizadas são utilizadas 
portas acima deste valor 
 
 
15 
Endereçamento da Camada de Transporte 
• Os sockets são diferentes para cada protocolo de 
transporte, desta forma, mesmo que um socket 
TCP possua o mesmo número que um socket 
UDP, ambos são responsáveis por aplicações 
diferentes 
 
• Os sockets de origem e destino são responsáveis 
pela identificação única da comunicação. Desta 
forma, é possível a multiplexação e a 
demultiplexação 
16 
UDP: User Datagram Protocol 
[RFC 768] 
• protocolo de transporte da 
Internet “sem gorduras” 
• serviço “best effort” , 
segmentos UDP podem ser: 
– perdidos 
– entregues fora de ordem 
para a aplicação 
• sem conexão: 
– não há apresentação 
entre o UDP transmissor 
e o receptor 
– cada segmento UDP é 
tratado de forma 
independente dos outros 
 
Porque existe um UDP? 
• não há estabelecimento de 
conexão (que pode redundar 
em atrasos) 
• simples: não há estado de 
conexão nem no transmissor, 
nem no receptor 
• cabeçalho de segmento 
reduzido 
• não há controle de 
congestionamento: UDP pode 
enviar segmentos tão rápido 
quanto desejado (e possível) 
UDP 
• Muito usado por aplicações de multimídia contínua (Voz 
e vídeo) 
– tolerantes à perda 
– sensíveis à taxa 
• Outros usos do UDP 
– DNS (porta 53) 
– SNMP (porta 161) 
• Transferência confiável sobre UDP: acrescentar 
confiabilidade na camada de aplicação 
– recuperação de erro específica de cada aplicação 
17 
UDP 
• Porta de Origem e Porta de 
Destino – Indicam os pares 
de porta que estão 
executando a comunicação 
(2 + 2 bytes); 
• Comprimento (tamanho) – 
Indica o comprimento (em 
bytes) de todo o segmento, 
incluindo cabeçalho e dados 
(2 bytes); 
• Checksum – Verificação de 
integridade (2 bytes); 
 
18 
porta origem porta destino 
32 bits 
Dados de Aplicação 
(mensagem) 
formato do segmento UDP 
tamanho checksum 
UDP - Aplicações 
19 
UDP no servidor B extrai o número 
de porta destino do segmento a cada 
segmento recebido 
Porta origem é o endereço de retorno 
(identificado o processo em A) 
Todos os clientes usam o mesmo socket no servidor B 
20 
UDP checksum 
Transmissor: 
• trata o conteúdo do 
segmento como sequência 
de inteiros de 16 bits 
• checksum: soma do 
conteúdo do segmento + 
complemento de 1 da 
soma 
• transmissor coloca o valor 
do checksum no campo de 
checksum do UDP 
 
 
Receptor: 
• computa o checksum do 
segmento recebido 
• verifica se o checksum 
calculado é igual ao valor 
do campo checksum: 
– NÃO - erro detectado 
– SIM - não há erros 
Objetivo: detectar “erros” (ex.,bits trocados) no segmento 
transmitido 
 
UDP checksum 
21 
 Ao se somar números, um vai um do bit mais significativo deve 
ser acrescentado ao resultado 
 
 Exemplo: soma de dois inteiros de 16 bits 
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
 
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 
 
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 
wraparound 
sum 
checksum 
Vai 1 é somado ao bit menos significativo no resultado da soma 
Checksum – complemento de 1 do resultado da soma 
Destino: soma todas as palavras, inclusive o resultado 
22 
TCP – Transmission Control Protocol 
• O TCP foi projetado para oferecer umfluxo de bytes 
fim a fim confiável em uma rede não confiável 
• Fragmenta o fluxo de entrada em segmentos, gerando 
um fluxo de saída e passando-os para a camada de 
rede. No destino, o TCP remonta os segmentos 
recebidos, gerando o fluxo de saída para a aplicação 
• Adapta-se dinamicamente às propriedades da camada 
de rede e é robusto diante dos muitos tipos de falhas 
que podem ocorrer 
• RFCs: 675, 793, 1122, 1323, 2018, 2581, e outros 
23 
Serviço TCP 
• Todas as conexões TCP são full-duplex e ponto 
a ponto 
• Segmento: 
– Durante o estabelecimento de uma conexão, cada 
host (remetente e destinatário) pode estipular o 
máximo de carga útil (em bytes) que está disposto a 
receber  MSS – Maximum Segment Size 
• No entanto, o tamanho padrão de um segmento TCP é de 
556 bytes (536 bytes de payload + 20 de cabeçalho) 
• Todos os hosts da Internet são obrigados a aceitar 
segmentos TCP de 556 bytes 
 
24 
Serviço TCP 
• Dois fatores restringem o tamanho máximo do 
segmento (MSS): 
– Cada segmento, incluindo o cabeçalho TCP (fixo de 
20 bytes), deve caber na carga útil do IP, que é de 
65535 bytes, evitando fragmentação do pacote IP 
– Cada tipo de rede tem uma MTU – Maximum 
Transfer Unit, e cada segmento deve caber na MTU 
• Na prática, a MTU define o limite superior em termos de 
tamanho de segmento 
• MTU é definida pela camada de enlace (Protocolo Ethernet – 
1500 bytes) 
Serviço TCP 
• O TCP não se importa com 
a semântica dos bytes que 
estão na carga útil 
(payload) 
• Quando uma aplicação 
passa dados para o TCP 
transmissor, este pode 
enviá-los imediatamente, ou 
armazená-los em um buffer 
(para aguardar outros 
dados e enviar um volume 
maior de uma só vez), de 
acordo com as 
necessidades e condições 
(da rede ou do receptor) 
25 
TCP – Aplicações 
26 
TCP identifica socket criado no servidor B a partir da tupla: (porta origem, IP origem, 
porta destino, IP destino) 
TCP cria um socket para cada cliente (conexão) 
TCP – Transmission Control Protocol 
• Transferência confiável 
• Estabelecimento de conexões 
• Controle de fluxo 
• Controle de congestionamento (RFC 5681) 
27 
TCP – Transmission Control Protocol 
28 
● Nenhum dos dados transferidos é corrompido; 
 
● Nenhum dos dados é perdido; 
 
● Os dados são entregues na ordem em que foram 
enviados; 
Princípios da transferência confiável de dados: 
 
Transferência confiável 
29 
Transferência confiável 
lado 
transmissor 
lado 
receptor 
rdt_send(): chamada da camada superior, 
(aplicação); passa dados para entregar à camada 
superior receptora 
udt_send(): chamada pela entidade de 
transporte, para transferir pacotes para 
o receptor sobre o canal não confiável 
rdt_rcv(): chamada quando o pacote chega ao 
lado receptor do canal 
deliver_data(): chamada pela 
entidade de transporte para entregar 
dados para cima (aplicação) 
30 
Transferência confiável 
rdt1.0 
 Canal de transmissão 
perfeitamente confiável: 
 Não há erros de bits 
 Não há perdas de pacotes 
 Nada pode dar errado!! 
 FSMs separadas para transmissor e 
receptor: 
 Transmissor envia dados para o 
canal 
 Receptor lê os dados do canal 
31 
(Evento para transição) 
(Ações após evento) 
Transferência confiável 
rdt2.0 
• rdt2.0 – protocolos de transferência confiável 
baseados em retransmissão – segmentos 
recebidos com erros 
– Uso do campo de Checksum; 
– ARQ – Automatic Repeat reQuest: detecção de erros; 
aviso do receptor (ACK ou NAK): 
• reconhecimentos (ACKs): destinatário diz explicitamente ao 
remetente que o segmento foi recebido OK 
• reconhecimentos negativas (NAKs): destinatário diz 
explicitamente ao remetente que o segmento teve erros; 
remetente retransmite segmento ao receber NAK 
32 
Transferência confiável - rdt2.0 
33 
Ʌ (lâmbda) = falta de evento ou ação 
Transferência confiável 
rdt2.1 
• rdt2.1 – protocolos de transferência confiável 
baseados em retransmissão – segmentos 
recebidos com erros e/ou ACK e NAK 
corrompidos 
– Uso do campo de Checksum 
– Transmissor reenvia o segmento 
– Segmentos são numerados – número de sequência 
para evitar segmentos duplicados no receptor 
• Um bit é suficiente: 0 ou 1 (pare-e-espere/bit alternante) 
 
 
 
34 
Transferência confiável 
rdt2.1 
35 
rdt 2.1 - Remetente 
Transferência confiável 
rdt2.1 
36 
rdt 2.1 - Destinatário 
Transferência confiável 
rdt2.2 
• rdt2.2 – protocolos de transferência confiável 
baseados em retransmissão– segmentos 
recebidos com erros e/ou ACK corrompido; 
– Não há uso do NAK 
– Receptor inclui número de sequência do 
segmento que está sendo confirmado com 
referido ACK 
• ACK duplicado significa que segmento deve ser 
retransmitido 
 
37 
Transferência confiável 
rdt2.2 
38 
rdt 2.2 - Remetente 
Transferência confiável 
rdt2.2 
39 
rdt 2.2 - Destinatário 
Transferência confiável 
rdt3.0 (bit alternante) 
rdt3.0 – protocolos de transferência confiável baseados em 
retransmissão – segmentos recebidos com erros e/ou ACK 
corrompido; perda de segmentos (dados ou ACKs) 
 
 Como detectar perdas e o que fazer? 
Números de sequência , ACKs, retransmissões ajudam, mas não 
são o bastante 
 
Solução: Exige um temporizador decrescente (timeout) 
 
 Retransmite se nenhum ACK for recebido nesse tempo 
 Se o segmento (ou ACK) estiver apenas atrasado (não perdido) 
 Retransmissão será duplicata, mas os números de sequência resolvem 
40 
Transferência confiável 
 rdt3.0 (bit alternante) 
41 
rdt3.0 - Remetente 
Transferência confiável 
 rdt3.0 (bit alternante) 
42 
rdt 3.0 – Destinatário 
(igual rdt 2.2) 
Transferência confiável 
• Protocolo do tipo pare-e-espere 
– Baixo desempenho! 
• Protocolos com pipelining 
43 
Transferência confiável 
Protocolos com pipelining 
• Consequências: 
– Faixa de números de sequência deve ser maior; 
– Buffers tanto no transmissor quanto no receptor: 
• Ex.: Transmissor: buffer para segmentos que foram 
transmitidos, mas ainda não confirmados 
– Como se recuperar dos erros (segmentos perdidos, 
corrompidos ou muito atrasados) 
• Estratégias: 
– Protocolos Go-back-N (GBN) 
– Protocolos de Repetição Seletiva (SR – selective 
repeat) 
44 
Transferência confiável 
Go-back-N 
• Transmissor possui um número máximo de 
segmentos que podem ser transmitidos sem 
recebimentos de ACK dos anteriores 
– N = máximo permitido (tamanho da janela) 
– Filosofia: janela deslizante (sliding-window) 
– Um temporizador único para todos os segmentos 
previamente enviados (na janela N) 
45 
Transferência confiável 
Go-back-N 
46 
• base: número de sequência do mais antigo segmento 
não reconhecido (sem ACK) 
• nextseq-num: menor número de sequência não utilizado 
próximo segmento a ser enviado 
 
 Retransmite segmento n e todos os segmentos com número de 
sequência maior que estejam dentro da janela 
 Segmentos fora de ordem: 
  Descarta (não armazena)  não há buffer no receptor 
Transferência confiável 
Go-back-N 
47 
Transferência confiável 
Go-back-N 
48 
FSM do Remetente 
Transferência confiável 
Go-back-N 
49 
FSM do Destinatário 
Transferência confiável 
Go-back-N 
• Limitações: 
– Problemas de desempenho 
– Tamanho da janela (N) muito grande 
• Retransmissões desnecessárias 
– Grandes atrasos na rede 
50 
Transferência confiável 
Repetição Seletiva 
Evita retransmissões desnecessárias 
Janela de transmissão - N 
Receptor reconhece individualmente todos os 
segmentosrecebidos corretamente 
Armazena segmentos , quando necessário, para 
eventual entrega em ordem para a camada superior 
Transmissor somente reenvia os segmentos para 
os quais um ACK não foi recebido 
 Cada segmento tem um temporizador 
 
51 
Transferência confiável 
Repetição Seletiva 
52 
reconheci
do 
53 
Repetição Seletiva 
Transferência confiável -Repetição Seletiva 
54 
Dilema: 
# seq.: 0, 1, 2, 3 
tamanho janela = 3 
destinatário não vê diferença nos 
dois cenários! 
passa incorretamente dados 
duplicados como novos em (a) 
 
P: Qual o relacionamento entre 
tamanho do # seq. e tamanho de 
janela? 
 
TamJan < ½ TamSeq 
ou no máximo 
TamJan = ½ TamSeq 
Resumo transferência confiável do TCP 
• Soma de verificação - Usada para detectar erros de bits em um 
segmento transmitido 
• Temporizador - Usado para controlar a 
temporização/retransmissão de um segmento, possivelmente 
porque o segmento (ou seu ACK) foi perdido dentro do canal ou 
tiveram algum erro detectado 
• Número de sequência - Usado para numeração sequencial de 
segmentos 
• Reconhecimento - Usado pelo destinatário para avisar o remetente 
que um segmento ou conjunto de segmentos foi recebido 
corretamente 
• Janela, paralelismo - O remetente pode ficar restrito a enviar 
somente segmentos com números de sequência que estão dentro 
da janela N 
 
 
55 
TCP – Transmission Control Protocol 
• Transferência confiável 
• Estabelecimento de conexões 
• Controle de fluxo 
• Controle de congestionamento (RFC 5681) 
56 
57 
Estabelecimento de Conexões 
Segmento TCP 
DADOS DA APLICAÇÃO 
58 
Estabelecimento de Conexões 
Segmento TCP 
• Porta de Origem e Porta de Destino – identifica os pontos 
terminais locais da conexão; 
• Número de Sequência – Identifica o fragmento dentro de 
todo o fluxo gerado; 
• Número de Confirmação – Indica qual o próximo byte 
esperado; 
• Tamanho do Cabeçalho – Informa quantas palavras de 32 
bits compõem o cabeçalho TCP; 
• URG – Indica a utilização do urgent pointer; 
• ACK – É utilizado para indicar que este segmento é um 
ACK e que o campo Número de Confirmação deve ser 
interpretado; 
Estabelecimento de Conexões 
Segmento TCP 
• PSH – Indica que este segmento não deve ser enfileirado 
como todos os outros, mas sim posto à frente na fila 
(ENTREGUE IMEDIATAMENTE); 
• RST – É utilizado para reiniciar uma conexão que tenha ficado 
confusa devido a falhas no host ou por qualquer outra razão; 
• SYN – Este bit é utilizado para indicar um pedido de conexão e 
a confirmação da conexão; usado em conjunto com ACK 
• FIN – Utilizado para indicar que o emissor não possui mais 
dados para enviar e deseja finalizar a conexão; 
59 
Estabelecimento de Conexões 
Segmento TCP 
• Tamanho da Janela – Indica quantos bytes podem ser 
enviados ao receptor. Este campo é utilizado no controle de 
fluxo do TCP; 
• Checksum – Indicador de integridade do segmento; 
• Urgent Pointer – Indica um deslocamento de bytes a partir do 
número de sequência atual em que os bytes urgentes devem 
ser encontrados (interrupção, por exemplo); 
• Opções – Projetado para que o TCP possa oferecer recursos 
extras que não foram previstos em seu protocolo; 
 
 
60 
61 
Estabelecimento de Conexões 
TCP 
• O estabelecimento de uma conexão TCP ocorre antes 
que qualquer outro recurso TCP possa começar seu 
trabalho 
• O estabelecimento da conexão se fundamenta no 
processo de inicialização dos campos referentes aos 
números de sequência, aos ACKs, ao tamanho da 
janela (controle de fluxo) e na troca dos números de 
sockets 
• As conexões são estabelecidas no TCP por meio do 
three way handshake (acordo de três vias) 
Estabelecimento de Conexões 
TCP 
Números de sequência (32 bits): 
Número do primeiro byte do segmento de dados do 
transmissor 
Ex.: 500.000 bytes, com MSS de 1000bytes (500 
segmentos) 
 primeiro segmento: 0 a 999 bytes (número de 
sequência = 0) 
 segundo segmento: 1000 a 1999 bytes (número de 
sequência = 1000) 
 
Número de reconhecimento ACK (32 bits): 
 Número do próximo byte esperado pelo receptor 
 
 62 
63 
Estabelecimento de Conexões 
TCP 
• Depois de receber a solicitação – o servidor 
“acorda” o serviço necessário, coloca o 
processo solicitante em contato com o TSAP 
(porta lógica) do servidor, permitindo que ele 
“herde” a conexão com o cliente 
 
64 
Estabelecimento de Conexões 
TCP 
• O estabelecimento da conexão é feito usando dois bits no 
cabeçalho TCP: SYN e ACK 
• Um segmento que possua a flag SYN ativa sinaliza uma 
requisição de sincronia do número de sequência. Essa 
sincronização é necessária em ambos os sentidos, pois origem 
e destino utilizam números de sequência distintos 
• Cada pedido de conexão é seguido de uma confirmação 
(segundo segmento) utilizando os bits SYN e ACK setados 
– O segundo segmento do three way handshake exerce as duas funções: 
confirma a sincronização do servidor com o cliente e requisita a 
sincronização do cliente com o servidor 
• Terceiro segmento utilizando o bit ACK setado 
Estabelecimento de Conexões 
TCP 
• O número de sequência é incrementado com base 
no número de bytes enviados pela origem 
• O ACK tem como objetivo solicitar a continuidade 
dos segmentos 
• ACK Duplicado é gerado quando um segmento fora 
de ordem chegou 
• ACK cumulativo: Pode-se interpretar um ACK=210 
como sendo: “Pronto, recebi até a 209, pode mandar 
a partir do 210” 
• Uso do SACK (Selective ACK): reconhece segmentos 
recebidos fora de ordem 
– ACK continua pedindo segmento perdido (ACK duplicado) 
 
65 
Estabelecimento de Conexões 
TCP 
66 
SACK (Selective ACK): reconhece segmentos recebidos fora de ordem 
 
Estabelecimento de Conexões 
TCP 
67 
Mostrar Animações 
Estabelecimento de Conexões 
TCP 
Estados do cliente 
68 
Estabelecimento de Conexões 
TCP 
69 
Estados do servidor 
Estabelecimento de Conexões 
TCP 
70 
TCP – Transmission Control Protocol 
• Transferência confiável 
• Estabelecimento de conexões 
• Controle de fluxo 
• Controle de congestionamento (RFC 5681) 
71 
72 
Controle de Fluxo 
• O TCP implementa o controle de fluxo utilizando os 
dados dos campos Número de Sequência, Número 
de Confirmação (ACK) e Tamanho da Janela (16 
bits, 64Kbytes) 
• O controle de fluxo no TCP pode utilizar uma janela 
de tamanho fixo ou uma janela deslizante 
– O campo Tamanho da Janela indica, em tempo real, o 
número máximo de bytes sem confirmação que podem ser 
enviados 
• Compatibiliza a taxa de envio do remetente com a 
taxa de recebimento do receptor 
73 
 Lado receptor da conexão 
TCP possui um buffer de 
recepção 
 Serviço de speed-
matching: encontra a taxa 
de envio adequada à taxa 
de vazão do receptor 
 Processos de aplicação 
podem ser lentos para ler o 
buffer do TCP 
• Transmissor não deve 
esgotar os buffers de 
recepção enviando dados 
rápido demais 
Controle de Fluxo 
Controle de Fluxo 
74 
Transmissor: LastByteSent – LastByteAcked <= RcvWindow 
Receptor: LastByteRcvd – LastByteRead <= RcvBuffer 
75 
Controle de Fluxo 
 Receptor informa a área disponível incluindo valor 
RcvWindow nos segmentos 
 Transmissor limita os dados não confirmados ao RcvWindow 
 Garantia contra overflow no buffer do receptor 
Controle de Fluxo 
• Ao iniciar uma conexão, a janela começa pequena 
(um MSS) e aumentará gradativamente até que 
ocorram erros ou até o limite do receptor 
• Caso o destinatário perceba uma sobrecarga, no 
próximo ACK enviado haverá um novo tamanhode 
janela 
• Caso seja enviado um valor igual à zero, o receptor 
estará informando que não possui condições de 
processar mais bytes e a comunicação estará 
suspensa até que o remetente receba um tamanho 
de janela diferente de zero 
 
76 
Controle de Fluxo 
77 
Controle de Fluxo 
78 
Solução de Clark: esperar que o tamanho da janela seja metade do buffer (receptor) 
Algoritmo de Nagle: esperar quantidade maior de dados para enviar (transmissor) 
Síndrome da Janela Boba 
TCP – Transmission Control Protocol 
• Transferência confiável 
• Estabelecimento de conexões 
• Controle de fluxo 
• Controle de congestionamento (RFC 5681) 
79 
80 
Controle de Congestionamento 
• “Muitas fontes enviando dados acima da 
capacidade da rede de tratá-los” 
• Diferente de controle de fluxo! 
• Roteadores informam congestionamento 
• Um dos 10 problemas mais importantes na 
Internet! 
 
Controle de Congestionamento 
• Custos: 
– Há grandes atrasos quando a taxa de chegada de 
pacotes se aproxima da capacidade do enlace em 
transmitir (R) 
– O remetente deve retransmitir pacotes para 
compensar àqueles perdidos devido ao esgotamento 
do buffer 
– Retransmissões desnecessárias devido a grandes 
atrasos podem fazer com que o roteador use usa 
largura de banda de maneira desnecessária 
– Descarte de pacotes ao longo do caminho devido ao 
limite de transmissão do enlace 
81 
82 
Controle de Congestionamento 
Controle de congestionamento 
 fim a fim: 
• abordagem usada pelo 
TCP 
• não usa realimentação 
explícita da rede 
• congestionamento é 
inferido a partir das perdas 
e dos atrasos observados 
nos sistemas finais 
Controle de 
congestionamento 
assistido pela rede: 
• roteadores enviam 
informações para os 
sistemas finais 
– Bits indicando o 
congestionamento 
– ECN – Explicit 
Congestion Notification 
(Cabeçalho IP) 
1. Roteador constrói um 
pacote de 
congestionamento 
Existem duas abordagens: 
Controle de Congestionamento 
• Como um remetente TCP limita a taxa à qual 
envia o tráfego para a conexão? 
 
• Como um remetente TCP percebe que há 
congestionamento? 
 
• Qual algoritmo um remetente TCP deve utilizar 
para modificar sua taxa de envio em função do 
congestionamento? 
83 
Controle de Congestionamento 
Como um remetente TCP limita a taxa à qual envia o tráfego para a 
conexão? 
 
 TCP utiliza um limite de janela de congestionamento (cwnd): 
– Restringir o fluxo de bytes para menos do que o tamanho do buffer do 
receptor 
– Janela é aumentada (ACKs recebidos) ao longo da transmissão até o 
limite da janela do receptor (autorregulação) 
• Começa com um MSS e aumenta exponencialmente (partida 
lenta – slow start) 
– Taxa: cwnd = MSS/RTT  se MSS = 500 bytes e RTT = 200 ms, então 
taxa é de 20 kbps 
 
janela_permitida = min(janela_receptor (rwnd), janela_congestionamento 
(cwnd)) 
janela_permitida = min(32 bytes, 64 bytes) 
janela_permitida = 32 bytes 
 
 
 
84 
Controle de Congestionamento 
85 
Hosp. A 
R
T
T
 
Hosp. B 
tempo 
Partida Lenta 
Controle de Congestionamento 
Como um remetente TCP percebe que há 
congestionamento? 
 
 Evento de perda de segmentos 
• Esgotamento do temporizador 
• Três ACKs duplicados – DUPACK (lembre-se que 
o ACK refere-se ao próximo segmento esperado) 
86 
Controle de Congestionamento 
Qual algoritmo um remetente TCP deve utilizar para 
modificar sua taxa de envio em função do 
congestionamento? 
• Algoritmo com duas técnicas: 
1. Diminuição multiplicativa: 
• Quando há perda de segmentos, reduzir a janela de 
congestionamento até o mínimo de um segmento 
(MSS) 
– Quanto reduzir, depende da variante do TCP utilizada 
• Aumentar o timer de retransmissão 
• Assim... 
– Reduz volume de tráfego e a taxa de retransmissão até os 
roteadores se recuperarem 
87 
Controle de Congestionamento 
Qual algoritmo um remetente TCP deve utilizar 
para modificar sua taxa de envio em função 
do congestionamento? 
• Algoritmo com duas técnicas: 
1. Diminuição multiplicativa: 
• TCP-Tahoe (primeira variante para controle de 
congestionamento) 
– Esgotamento por temporização ou três ACKs 
duplicados: retransmite o segmento perdido e reduz 
janela para 1 MSS 
 
88 
Controle de Congestionamento 
Qual algoritmo um remetente TCP deve utilizar 
para modificar sua taxa de envio em função 
do congestionamento? 
• Algoritmo com duas técnicas: 
1. Diminuição multiplicativa: 
• TCP-Reno – executado quando há três ACKs 
duplicados 
– Reduz janela à metade da janela atual de transmissão 
(cwnd = cwnd/2) 
– Retransmite segmento antes do esgotamento do 
temporizador (retransmissão rápida) 
 
89 
Controle de Congestionamento 
• Algoritmo com duas técnicas: 
2. Recuperação aditiva (aumento aditivo) 
• Aumenta o tráfego após congestionamento 
– TCP-Tahoe 
» Aumento exponencial a cada ACK recebido até 
atingir um threshold – partida lenta 
» Aumento linear a partir do threshold até o tamanho 
da janela do receptor (prevenção de 
congestionamento) 
– TCP-Reno 
» Aumento linear a cada ACK recebido até atingir o 
tamanho da janela do receptor (recuperação 
rápida) 
 
90 
Controle de Congestionamento: 
Máquina de Estados 
91 
Controle de Congestionamento 
partida lenta 
prevenção de 
congestionamento 
TCP-TAHOE 
Controle de Congestionamento 
TCP-RENO 
Controle de Congestionamento 
• Variação do TCP-Reno: 
– TCP-NewReno: melhorou a recuperação rápida 
para múltiplas perdas de segmentos (a cada ACK 
parcial recebido durante a recuperação rápida 
será inferido como perdido o próximo segmento e 
é feita sua retransmissão) 
• Outras variantes: 
– TCP-CUBIC 
– TCP-HD 
– TCP-Vegas 
– ... 
 
Controle de Congestionamento 
95 
Dentes de Serra 
Controle de fluxo e Controle de 
Congestionamento 
96 
TCP: Tempo de Resposta (RTT) e 
Temporização 
P: como escolher valor 
do temporizador? 
• maior que o RTT 
– RTT pode variar 
• muito curto: temporização 
prematura 
– Retransmissões 
desnecessárias 
• muito longo: reação 
demorada à perda de 
segmentos 
P: como estimar RTT? 
• RTTamostra (RTTSample): tempo 
medido entre a transmissão do 
segmento e o recebimento do ACK 
correspondente 
– ignora retransmissões e ACKs 
cumulativos 
• RTTamostra vai variar, assim... 
– Usam-se várias medições 
recentes, não apenas o valor 
corrente 
 
• Algoritmo de Jacobson 
TCP: Tempo de Resposta (RTT) e 
Temporização 
RTT_estimado = (1-x)* RTT_estimado + x*RTT_amostra 
média corrente exponencialmente ponderada 
 influência de cada amostra diminui 
exponencialmente com o tempo 
 Peso maior para as amostras recentes, pois 
elas revelam o estado atual da rede 
 valor típico de x  0,125 
TCP: Tempo de Resposta (RTT) e 
Temporização 
Escolhendo o intervalo de temporização para 
retransmissões 
• RTT_estimado mais uma “margem de segurança” 
 
Temporização = RTT_estimado + 4*DesvioRTT 
 
• Multiplicações por 4 são realizadas com um 
único deslocamento de inteiro 
• Reduz o número de retransmissões, pois menos de 1% 
dos segmentos chega com atraso de 4*DesvioRTT 
DesvioRTT = (1-y)* DesvioRTT + y*|RTT_amostra - RTT_estimado| 
y= 0,25 
 
TCP - Geração de ACK 
100 
Evento 
 
chegada de segmento em ordem 
sem lacunas, anteriores já 
reconhecidos 
 
chegada de segmento em ordem 
sem lacunas, 
um ACK retardado pendente 
 
chegada de segmento fora de 
ordem, com nº de seq. maior 
que esperado  lacuna 
 
chegada desegmento que 
preenche a lacuna parcial ou 
completamente 
Ação do receptor TCP 
 
ACK retardado. Espera até 500ms 
p/ próx. segmento. Se não chegar, 
envia ACK 
 
envio imediato de um único 
ACK cumulativo reconhecendo ambos 
segmentos 
 
envio imediato de ACK duplicado, indicando 
nº de seq. do próximo byte esperado 
 
 
ACK imediato 
Exercícios 
• Para pensar agora: 
– A perda de pacotes sempre representa 
congestionamento em uma rede de 
computadores? 
101 
Exercícios Sugeridos e Seções para 
leitura 
• Kurose, & Ross; Redes de Computadores e a 
Internet, 5ª ed., 2010. Cap. 03. 
• Questões de Revisão: 3 a 11, 14 a 18 
• Problemas: 1 a 10, 13, 22 a 25, 30 a 34, 37 
• Seções: 3.1, 3.2, 3.3, 3.4, 3.5 e 3.7 
 
102 
Bibliografia 
• Tanenbaum, & Wetherall; Redes de 
Computadores, 5ª ed., 2011 
 Cap. 06 
• Kurose, & Ross; Redes de Computadores e a 
Internet, 5ª ed., 2010 
 Cap. 03 
 Slides 
• Comer, D. E.; Interligação de Redes com TCP/IP: 
princípios, protocolos e arquitetura, Volume 1, 
5ª ed., 2006 
 Cap. 12 
 
103

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes