Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
Profa. Débora C. Muchaluat Saade 1
Departamento de Ciência da Computação - UFF
Nível de Transporte Portas, Protocolos UDP e TCP
Profa. Débora Christina Muchaluat Saade
Disciplina: Redes de Computadores
3
Redes de Computadores
Nível de Transporte
5
Redes de Computadores
Camada de Transporte
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Rede
Enlace
Físico
Rede
Enlace
Físico
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Host B Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Host A
comunicação fim-a-fim
6
Redes de Computadores
Camada de Transporte
§ Fornece meios para estabelecer, manter e liberar conexões de transporte no serviço orientado à conexão
§ Transporte de unidades de dados do serviço de transporte (SDUs ou mensagens)
§ Segmentação e blocagem § Detecção e correção de erros fim a fim § Sequenciação § Controle do fluxo de dados nas conexões de
transporte § Multiplexação ou splitting
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
7
Redes de Computadores
Services Provided to the Upper Layers
The network, transport, and application layers.
8
Redes de Computadores
Transport Service Primitives (2)
The nesting of TPDUs, packets, and frames.
Profa. Débora C. Muchaluat Saade 2
10
Redes de Computadores
Addressing
TSAPs, NSAPs and transport connections.
11
Redes de Computadores
Endereçamento
§ Associação do T-SAP ao SAP de rede • endereço hierárquico
– O endereço do SAP de rede pode ser um campo do endereço do SAP de transporte
• Endereço horizontal – Servidor de nomes
17
Redes de Computadores
Estabelecimento de Conexão Indevida
E1 E2
PC(1)
PC(2)
PC(2)
CC(2) CC(2)
D(1)
D(2) D(2)
PC(1)
CC(1) CC(1)
D(1)
PC - Pedido de Conexão CC - Confirmação da Conexão D - Dados
Timeout
18
Redes de Computadores
Estabelecimento de Conexões Utilizando Three-way Handshake
E1 E2
PC(a)
PC(a)
CC(b,a) CC(b,a)
D(a,b) D(a,b)
PC(i) = Pedido de conexão (seq=i) CC(j,i) = Confirmação de conexão (seq=j, ack=i) D(i,j) = Dados (seq=i, ack=j)
19
Redes de Computadores
R(j) = Rejeita conexão (ack=j) E1 E2
PC(a)
PC(b)
PC(b)
CC(c,b) CC(c,b)
D(b,c)
D(b,c) D(b,c)
PC(a)
CC(k,a) CC(k,a)
D(b,c) R(k)
R(k)
Timeout
Estabelecimento de Conexões Utilizando Three-way Handshake
22
Redes de Computadores
Protocolos de Transporte
§ Mesmas técnicas do nível de enlace agora aplicadas fim-a-fim
§ Controle de Fluxo
• Stop-and-Wait • Sliding Windows
§ Controle de Erro
• ARQ Automatic Repeat Request • Selective Repeat • Go Back N
Profa. Débora C. Muchaluat Saade 3
32
Redes de Computadores
Nível de Transporte na Arquitetura TCP/IP
Portas
33
Redes de Computadores
Inter-rede
Intra-rede Int. de adaptação
Dados encapsulados pelo datagrama IP
AP2 AP1
• Em geral, uma aplicação é o destinatário
final de uma mensagem
Identificação do destinatário final
§ Protocolo IP não possui um mecanismo próprio para endereçar mais de uma aplicação destino na mesma máquina • IP oferece um único SAP de rede • Solução: uma aplicação só acessa a rede via
camada de transporte
35
Redes de Computadores
Transporte TCP UDP
Inter-rede
Aplicação
Camada de Transporte
Função básica: multiplexação/ demultiplexação
36
Redes de Computadores
Multiplexação e Demultiplexação
Aplicação 1
IP
Aplicação 2
Porta 34 Porta 22
TCP/UDP Porta 126
37
Redes de Computadores
Identificação do destinatário final
§ Utilizar um esquema próprio para a camada de transporte e independente dos SOs • Camada de transporte fornece às aplicações um
conjunto de portas que dão acesso ao SC provido pelo IP
• Aplicação origem deve conhecer end. IP do host onde está a aplicação destino e porta a qual a aplicação está ligada
– (End. IP, Porta) em TCP/IP ⇔ T-SAP no OSI
38
Redes de Computadores
apl
apl
apl
apl
apl apl
apl
apl
apl
Aplicações Distribuídas
Endereçamento hierárquico em TCP/IP
G
Inter-rede
Rede B
Rede C
Rede A
H
H
H
H
H H
H
H
Profa. Débora C. Muchaluat Saade 4
39
Redes de Computadores
Portas
§ Identificadores numéricos de 16 bits (0 a 65535) § Antes de utilizar o UDP ou TCP, a aplicação deve
se associar a um número de porta (bind) • Identificação (End. IP, Porta) é comumente
chamada de socket • Berkeley sockets (Unix) e Winsock (Windows):
APIs que possibilitam a criação e uso de sockets em uma aplicação
UDP ou TCP 5 10 11 25 221 2430
40
Redes de Computadores
Protocolos de Transporte
§ Serviço sem conexão não confiável • Protocolo UDP
§ Serviço orientado a conexão confiável • Protocolo TCP
41
Redes de Computadores
Protocolo UDP
42
Redes de Computadores
Protocolo UDP (User Datagram Protocol)
§ Fornece serviço sem conexão fim-a-fim não confiável utilizando os serviços do protocolo IP diretamente
§ Permite a multiplexação/demultiplexação do SAP IP entre várias aplicações por meio de portas
§ Ideal para aplicações que não precisam de conexão • Menor tráfego e mais eficiência
43
Redes de Computadores
Formato da mensagem UDP
0 7 15 23 31
Octeto 1 Octeto 2 Octeto 3 Octeto 4
UDP SOURCE PORT UDP DESTINATION PORT UDP MESSAGE LENGTH UDP CHECKSUM
DATA . . .
46
Redes de Computadores
Porta 34 Porta 22
UDP Porta 126
Aplicação 1
IP
Aplicação 2
Multiplexação e demultiplexação UDP
§ Em um mesmo host, duas aplicações distintas podem usar a mesma porta (em tempos diferentes) • Portas UDP ⇔ Filas de
mensagens
§ Se a fila correspondente à porta estiver cheia, a mensagem UDP é descartada
§ Se uma mensagem UDP for endereçada a uma porta não utilizada no momento, a mesma é descartada e é gerada uma mensagem ICMP Port Unreachable
Profa. Débora C. Muchaluat Saade 5
47
Redes de Computadores
Uso de portas UDP
§ Aplicações devem entrar em acordo quanto às portas a serem utilizadas
§ Abordagem 1: • Números bem-conhecidos para serviços, atribuídos pela IANA
– Portas < 1024 (Well-Known Ports - WKPs)
• Geralmente utilizada por servidores – Exemplos:
53 DNS Server 69 TFTP 67/68 DHCP Server/Client
§ Abordagem 2: • Alocação dinâmica de portas (em geral, controlada de forma
aleatória pelo SO)
48
Redes de Computadores
Protocolo TCP
50
Redes de Computadores
Protocolo TCP (Transmission Control Protocol)
§ Multiplexação do SAP IP por meio de portas § Serviço orientado a conexão (circuito virtual) e confiável
• Sequenciação • Controle de fluxo e erro fim-a-fim
§ Transmissão de fluxos de bits • Menor unidade de transmissão: octeto
§ Desassociação da qtd. de dados enviados pela aplicação • Segmentação e blocagem
§ Conexão full-duplex • Fluxos independentes nas duas direções
52
Redes de Computadores
Conexão =
(139.82.17.10,22) + (139.82.55.3,2340) TCP
IP
TCP
IP
Porta 22 Porta 2340
Host 139.82.17.10 Host 139.82.55.3 Inter-rede
Multiplexação e demultiplexação TCP
§ Para o TCP, não basta associar uma porta a uma aplicação. É necessário o estabelecimento de uma conexão entre a aplicação origem e a aplicação destino • Uma conexão é identificada por um par de sockets • Uma porta pode ser compartilhada entre várias conexões em
um mesmo host simultaneamente
53
Redes de Computadores
Espera conexão (passiva) Estabelece conexão (ativa)
Requisição de estabelecimento
Resposta de requisição Bin
d c/
po
rta
OR
IG
Bind c/
porta DEST
Após o estabelecimento da conexão, as aplicações podem transmitir fluxos de dados entre si,
independentemente da passividade ou atividade das mesmas durante o estabelecimento
Estabelecimento de conexões
§ Quem inicia o estabelecimento da conexão? • Aplicação ativa X Aplicação passiva
54
Redes de Computadores
Uso de portas TCP
§ Bind da aplicação ativa: alocação dinâmica de portas
§ Bind da aplicação passiva: Well-Known Ports – Exemplos:
20 FTP-DATA 79 Finger 21 FTP Control 80 HTTP 23 Telnet 110 POP3 25 SMTP 161 SNMP 53 DNS Server 443 HTTPS
Profa. Débora C. Muchaluat Saade 6
55
Redes de Computadores
Aplicação Transmissora
IP
Porta 126
TCP Em geral, o tamanho máx. de um segmento
TCP corresponde a um datagrama IP que não sofra fragmentação na origem. Isso não
significa que os segmentos relativos a uma conexão precisem ter sempre o mesmo
tamanho.
Fluxo de bits original
Segmentação e blocagem no transmissor
Segmentos TCP enviados Padrão gerado pela escrita
da aplicação
56
Redes de Computadores
Aplicação Receptora
IP
Porta 126
TCP
Segmentação e blocagem no receptor
Fluxo de bits original
Segmentos TCP recebidos Padrão gerado pela leitura
da aplicação
Aplicação receptora recebe os bits do fluxo original na mesma ordem em que
foram enviados pela aplicação transmissora
58
Redes de Computadores
Formato do segmento TCP
Octeto 1 Octeto 2 Octeto 3 Octeto 4 0 7 15 23 31
TCP DESTINATION PORT TCP SOURCE PORT
DATA (IF ANY) ...
WINDOW HLEN
SEQUENCE NUMBER
RESERVED CODE BITS
ACKNOWLEDGEMENT NUMBER
URGENT POINTER CHECKSUM
PADDING OPTIONS (IF ANY)
60
Redes de Computadores
Sequenciação, controle de erro e de fluxo
§ Controle de segmentos perdidos, recebidos fora de ordem ou duplicados • Cada segmento possui um número de seqüência
§ Detecção de erros • Checksum (em caso de erro, segmento é descartado) • Reconhecimento de segmentos
§ Correção de erros (por perda ou descarte) • Retransmissão de segmentos não reconhecidos
§ Controle de fluxo • Mecanismo de janelas deslizantes (Sliding Windows)
61
Redes de Computadores
Janelas deslizantes no TCP
§ Atuam no controle de fluxo E no controle de erro • Controle de fluxo
– Restringem a velocidade do transmissor caso o receptor não tenha buffer suficiente para receber mais dados
• Controle de erro – Permitem identificar os segmentos já reconhecidos
§ Quatro janelas por conexão • Tamanho das janelas é variável
§ Janelas operam sobre octetos, não sobre segmentos
62
Redes de Computadores
Janelas deslizantes no TCP
Janela de transmissão (Octetos)
... ... ...
segmentos
Transmitidos e reconhecidos
Em processo de transmissão Ainda a serem transmitidos
Janela de recepção (Octetos)
...
Buffer livre para recepção
...
Buffer ocupado com octetos não lidos
pela aplicação receptora
... ...
Profa. Débora C. Muchaluat Saade 7
63
Redes de Computadores
Janelas deslizantes no TCP
Janela de transmissão (Octetos)
... ... ...
Janela de recepção (Octetos)
... ...
... ...
SEQ (X octetos) Necessário para o controle
de retransmissões
64
Redes de Computadores
Janelas deslizantes no TCP
Janela de transmissão (Octetos)
... ... ...
Janela de recepção (Octetos)
... ...
... ...
SEQ (X octetos)
...
65
Redes de Computadores
Janelas deslizantes no TCP
Janela de transmissão (Octetos)
... ... ...
Janela de recepção (Octetos)
... ...
ACK (reconhecimento)
... ...
...
Reconhecimentos são sempre cumulativos, isto é, especificam o número de sequência do
próximo OCTETO que o receptor espera receber.
66
Redes de Computadores
Janelas deslizantes no TCP
Janela de transmissão (Octetos)
... ... ...
Janela de recepção (Octetos)
... ...
... ...
...
67
Redes de Computadores
Janelas deslizantes no TCP
Janela de transmissão (Octetos)
... ... ...
Janela de recepção (Octetos)
... ...
Aplicação receptora lê
Y octetos
... ...
...
68
Redes de Computadores
Janelas deslizantes no TCP
Janela de transmissão (Octetos)
... ... ...
Janela de recepção (Octetos)
... ...
WIN (atualização de janela)
... ...
...
Profa. Débora C. Muchaluat Saade 8
69
Redes de Computadores
Janelas deslizantes no TCP
Janela de transmissão (Octetos)
... ... ...
... ...
... ...
Janela de recepção (Octetos)
Bufferização e temporização são fundamentais para controle de erro e fluxo em TCP
70
Redes de Computadores
Octeto 1 Octeto 2 Octeto 3 Octeto 4 0 7 15 23
TCP DESTINATION PORT TCP SOURCE PORT
DATA (IF ANY) ...
WINDOW HLEN
SEQUENCE NUMBER
RESERVED CODE BITS ACKNOWLEDGEMENT NUMBER
URGENT POINTER CHECKSUM PADDING OPTIONS (IF ANY)
Segmento TCP
Identifica a posição, relativa ao fluxo de bits do
transmissor deste segmento, dos dados
carregados pelo mesmo. OBS: posição informada
em octetos
Informa ao receptor deste segmento a quantidade
máxima de octetos que o transmissor deste
segmento pode aceitar no momento
Informa ao receptor deste segmento o próximo
número de sequência que o transmissor deste
segmento espera receber no próximo
segmento
ACK NUMBER e WINDOW são carregados no segmento do sentido oposto (piggybacking)
31
A B
Buffer de Rx de A
2500 octetos
... Buffer de Tx de A
1052 1053 ... 3050 3051 1051 3052 ... 1054 1055 3048 3049
Suposições no exemplo: - buffer de Rx de A vazio neste instante
- buffers de Tx de A e B infinitamente cheios
... Buffer de Tx de A
1052 1053 ... 3050 3051 1051 3052 ... 1054 1055 3048 3049
A B
502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos
2000 WIN
1052 101 SEQ ACK
...
Dados 400 octetos
501 2600
buffer livre
500 ... 499 101
segmento recém-recebido Buffer de Rx de A
2500 octetos
Podemos inferir o novo estado do buffer de Rx de A ?
TCP em B “resolve” transmitir 400 octetos.
... Buffer de Tx de A
1052 1053 ... 3050 3051 1051 3052 ... 1054 1055 3048 3049
A B
502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos
2000 WIN
1052 101 SEQ ACK
...
Dados 400 octetos
501 2600
buffer livre
500 ... 499 101
segmento recém-recebido Buffer de Rx de A
2500 octetos
E o estado do buffer de Tx de A ?
A B
502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos
2000 WIN
1052 101 SEQ ACK
...
Dados 400 octetos
Buffer de Rx de A
2500 octetos 500 ... 499 101
segmento recém-recebido
501 2600
buffer livre
... Buffer de Tx de A
1052 1053 ... 2050 2051 2052 3050 3051 1051 ... 3052
janela de Tx: tamanho 2000 octetos
...
Profa. Débora C. Muchaluat Saade 9
A B
502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos
2000 WIN
1052 101 SEQ ACK
...
Dados 400 octetos
Buffer de Rx de A
2500 octetos 500 ... 499 101
segmento recém-recebido
501 2600
buffer livre
... Buffer de Tx de A
1052 1053 ... 2050 2051 2052 3050 3051 1051 ... 3052
janela de Tx: tamanho 2000 octetos
...
TCP em A “resolve” transmitir 1000 octetos
... Buffer de Tx de A
1052 1053 ... 2050 2051 2052 3050 3051 1051 ... 3052
janela de Tx: tamanho 2000 octetos
... segmento a ser transmitido
A B
502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos
2000 WIN
1052 101 SEQ ACK
...
Dados 400 octetos
Buffer de Rx de A
2500 octetos 500 ... 499 101
segmento recém-recebido
501 2600
buffer livre
1052 501 SEQ ACK
2100 WIN
...
Dados 1000 octetos
A B 1052 501 SEQ ACK
2100 WIN
...
Dados 1000 octetos
2052 501 SEQ ACK
2100 WIN
...
Dados 500 octetos
Podem ser enviados vários segmentos
antes de algum reconhecimento
(respeitando a janela de Tx)
502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos
Buffer de Rx de A
2500 octetos 500 ... 499 101 501 2600
... Buffer de Tx de A
1052 ... 2051 2052 2551 2552 3051 1051 ... 3052
janela de Tx: tamanho 2000 octetos
...
segmento recém-transmitido
segmento a ser transmitido
TCP em A “resolve” transmitir mais 500 octetos
A B
Buffer de Rx de A
2500 octetos
2052 501 SEQ ACK
2100 WIN
...
Dados 500 octetos
Aplicação em A leu 300 octetos
502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos
500 ... 499 101 501 2600
A B
Buffer de Rx de A
2500 octetos 501 502 2000 2001 2002 2898 2899 ...
2052 501 SEQ ACK
2100 WIN
...
Dados 500 octetos
... 500 ... 499 2900 401 502 ... 2000 2001 2002 2898 2899 ... janela de Rx: tamanho 2400 octetos
2552 501 SEQ ACK
2400 WIN
Segmento carregando somente atualização de janela
A B
Buffer de Rx de A
2500 octetos 501 502 2000 2001 2002 2898 2899 ...
2052 501 SEQ ACK
2100 WIN
...
Dados 500 octetos
... 500 ... 499 2900 401 502 ... 2000 2001 2002 2898 2899 ... janela de Rx: tamanho 2400 octetos
TCP em B “resolve” transmitir 1500 octetos
Profa. Débora C. Muchaluat Saade 10
A B
Buffer de Rx de A
2500 octetos 501 502 2000 2001 2002 2898 2899 ...
janela de Rx: tamanho 900 octetos
2052 501 SEQ ACK
2100 WIN
...
Dados 500 octetos
501 2552 SEQ ACK
4000 WIN
...
Dados 1500 octetos
... 500 ... 499 ... 500 ... 499 2900 401
segmento recém-recebido
Buffer de Tx de A
... 3000 3001 3002 6550 6551 ... 6552
janela de Tx: tamanho 4000 octetos
... ... 2552 2553 2551
A B
Buffer de Rx de A
2500 octetos 501 502 2000 2001 2002 2898 2899 ...
janela de Rx: tamanho 900 octetos
2052 501 SEQ ACK
2100 WIN
...
Dados 500 octetos
501 2552 SEQ ACK
4000 WIN
...
Dados 1500 octetos
... 500 ... 499 ... 500 ... 499 2900 401
A B
Buffer de Rx de A
2500 octetos 501 502 2000 2001 2002 2898 2899 ...
janela de Rx: tamanho 900 octetos
2052 501 SEQ ACK
2100 WIN
...
Dados 500 octetos
501 2552 SEQ ACK
4000 WIN
...
Dados 1500 octetos
... 500 ... 499 ... 500 ... 499 2900 401
Buffer de Tx de A
... 3000 3001 3002 6550 6551 ... 6552
janela de Tx: tamanho 4000 octetos
... ... 2552 2553 2551
TCP em A “resolve” transmitir 450 octetos
A B
Buffer de Tx de A
Buffer de Rx de A
2400 octetos
... 6550 6551 ... 6552
janela de Tx: tamanho 4000 octetos
... ...
501 502 ... 2000 2001 2002 2898 2899 500 ... 2900 ... janela de Rx: tamanho 900 octetos
499 401
501 2552 SEQ ACK
4000 WIN
...
Dados 1500 octetos
2552 2553 2551
2552 2001 SEQ ACK
900 WIN
...
Dados 450 octetos
3000 3001 3002
segmento a ser transmitido
A B
Buffer de Tx de A
Buffer de Rx de A
2400 octetos
... 6550 6551 ... 6552
janela de Tx: tamanho 4000 octetos
... ...
501 502 ... 2000 2001 2002 2898 2899 500 ... 2900 ... janela de Rx: tamanho 900 octetos
499 401
501 2552 SEQ ACK
4000 WIN
...
Dados 1500 octetos
2552 2553 2551
2552 2001 SEQ ACK
900 WIN
...
Dados 450 octetos
3000 3001 3002
segmento a ser transmitido
TCP em B “resolve” reconhecer 450 octetos (por exemplo, já se passaram 0.2 seg desde o último reconhecimento)
A B
Buffer de Tx de A
Buffer de Rx de A
2400 octetos
... 6550 6551 ... 6552
janela de Tx: tamanho 3550 octetos
... ...
501 502 ... 2000 2001 2002 2898 2899 500 ... 2900 ... janela de Rx: tamanho 900 octetos
499 401
2001 3002 SEQ ACK
3550 WIN
2552 2553 2551
2552 2001 SEQ ACK
900 WIN
...
Dados 450 octetos
3000 3001 3002
Segmento carregando somente
reconhecimento
Profa. Débora C. Muchaluat Saade 11
A B
Buffer de Rx de A
2400 octetos 501 502 ... 2000 2001 2002 2898 2899 500 ... 2900 ...
janela de Rx: tamanho 900 octetos
499 401
2552 2001 SEQ ACK
900 WIN
...
Dados 450 octetos
Buffer de Tx de A
... 6550 6551 ... 6552
janela de Tx: tamanho 4000 octetos
... ... 2552 2553 2551 4050 4051 4052
E se o reconhecimento não chegar antes do timeout?
segmento a ser transmitido
2552 2001 SEQ ACK
900 WIN
...
Dados 1500 octetos
timeo
ut
Retransmissão
91
Redes de Computadores
Considerações a respeito da retransmissão
§ Novamente: reconhecimento especifica próximo OCTETO esperado pelo receptor • TCP não é obrigado a retransmitir o segmento
original. Ele pode transmitir um segmento resultante da união de dois ou mais segmentos consecutivos (repacketization), respeitando o tamanho máximo que um segmento pode ter
§ Configuração do timeout de retransmissão • Timeout pequeno: retransmissões desnecessárias • Timeout grande: baixo throughput
92
Redes de Computadores
Timeout e Retransmissão
§ Para acomodar as variações de atrasos que acontecem em um ambiente inter-rede, o TCP usa um algoritmo adaptativo de retransmissão que monitora os atrasos em cada conexão e ajusta seu parâmetro de timeout de acordo.
§ Variável básica para cálculo do timeout medida dinamicamente: • round trip time - tempo entre cada segmento
enviado e seu respectivo reconhecimento
93
Redes de Computadores
Definição do timeout de retransmissão
§ Variável básica: round-trip time (tempo entre cada segmento enviado e seu respectivo reconhecimento)
§ Exemplo de fórmula para cálculo adaptativo do RTT • RTT = (a * OLD_RTT) + ((1-a) * NEW_RTT_SAMPLE) • RTT inicial = 0 (RFC 1122)
§ Exemplo de fórmula para definição do timeout em função de RTT • Timeout = b x RTT
– b pode ser estático (2) ou obtido por outro algoritmo • Timeout inicial = 3 segundos • Timeout máximo = 240 segundos
§ Algoritmo de Jacobson (melhor resposta a altas variações de RTT) – usado pela maioria das implementações atuais do TCP • D = variância de RTT • D = yD + (1-y) | RTT – NEW_RTT_SAMPLE | • Timeout = RTT + 4D
94
Redes de Computadores
Cálculo do timeout
SEQ = 100
SEQ = 200
ACK = 300
SEQ = 300
SEQ = 400
Timeout = 3000 ms
NEW_RTT_SMP = 1000ms RTT = 500 ms
α = 0.5, β = 2 Tamanho dos segmentos = 100
Timeout = 1000 ms
ACK = 500 SEQ = 300
NEW_RTT_SMP = ?
Timeout esgotado
Ambiguidade de reconhecimento
95
Redes de Computadores
Ambiguidade de reconhecimento
§ Caso o reconhecimento do segmento chegue após a retransmissão do mesmo, como saber se o reconhecimento se refere ao segmento original ou a retransmissão para calcular o round trip time? • Solução: não considerar RTT de segmentos retransmitidos
– RTT pode permanecer indefinidamente inadequado
§ Algoritmo de Karn • Timer Backoff: toda vez que um segmento é retransmitido,
timeout é multiplicado por N (normalmente 2) • Quando é recebido o reconhecimento correspondente a um
segmento não retransmitido, RTT e Timeout são recalculados com base nos valores anteriores aos Backoffs
Profa. Débora C. Muchaluat Saade 12
96
Redes de Computadores
Algoritmo de Karn
SEQ = 100
SEQ = 200
ACK = 300
SEQ = 300
SEQ = 400
NEW_RTT_SMP = 1000ms RTT = 500 ms
SEQ = 500
ACK = 600
Timeout = 1000 ms
ACK = 500 SEQ = 300 Timeout = 2000 ms
Karn
NEW_RTT_SMP = 800 ms RTT = 650 ms
Timeout = 1300 ms
Timeout = 2000 ms
α = 0.5, β = 2 Tamanho dos segmentos = 100
97
Redes de Computadores
Considerações a respeito do controle de fluxo
§ Receptor informa WINDOW = 0 quando não consegue mais receber
§ Quando espaço é liberado, receptor envia atualização de janela com WINDOW > 0 • E se a atualização de janela for perdida ?
– Transmissor envia segmentos de um único octeto periodicamente (window probes) para testar tamanho da janela de recepção do receptor
• E se a aplicação receptora estiver lendo do buffer blocos de dados muito pequenos, em comparação com a taxa de envio do módulo TCP no transmissor ?
98
Redes de Computadores
Controle de fluxo
SEQ = 100
SEQ = 200
ACK = 300 WIN = 299
Apl. lê um octeto SEQ = 300
SEQ = 400
ACK = 500 WIN = 100
SEQ = 500
Tam
anho
dos
se
gmen
tos
= 10
0
... ACK = 600
WIN = 0
ACK = 300 WIN = 300
99
Redes de Computadores
Controle de fluxo (continuação)
SEQ = 500
Apl. lê um octeto
SEQ = 600
SEQ = 601
ACK = 601 WIN = 0
Apl. lê um octeto
ACK = 602 WIN = 0 ...
...
Tam
anho
dos
se
gmen
tos
= 1
Silly Window Syndrome
ACK = 600 WIN = 1
ACK = 600 WIN = 0
ACK = 601 WIN = 1
101
Redes de Computadores
Silly Window Syndrome
§ Solução no transmissor: algoritmo de Nagle • Quando uma aplicação gera novos dados a serem enviados em
uma conexão na qual dados anteriores foram transmitidos mas não reconhecidos, os novos dados são bufferizados, só sendo enviados quando:
– for possível completar um segmento de tamanho máximo OU
– os dados anteriores forem reconhecidos
103
Redes de Computadores
Silly Window Syndrome
§ Solução no receptor: solução de Clark • Só enviar uma atualização de janela informando WINDOW > 0
posteriormente a uma atualização de janela informando WINDOW = 0 quando buffer de recepção estiver com espaço livre igual a:
– pelo menos 50% do buffer OU
– espaço correspondente a um segmento de tamanho máximo
Profa. Débora C. Muchaluat Saade 13
104
Redes de Computadores
Colapso de congestionamento
Controle de congestionamento
§ Controle de fluxo do TCP é fim-a-fim, mas pode ocorrer congestionamento em qualquer roteador
§ Sliding Window não garante que o TCP contribua no controle de congestionamento • Roteadores na iminência de congestionamento • Aumento do RTT • Retransmissões devido a reconhecimentos atrasados • Aumento da carga nos roteadores congestionados
– Descarte de datagramas (dados e ACKs) em roteadores congestionados
105
Redes de Computadores
Colapso de congestionamento
§ Solução: TCP assume que grande parte das perdas de segmentos se deve a congestionamento
§ É associado ao transmissor uma janela de congestionamento, que limita a transmissão de segmentos • Janela de congestionamento inicial: 1 segmento • Vazão da conexão cresce com o aumento da janela de
congestionamento, que em condições normais mantém seu tamanho igual ao da janela de recepção do receptor
§ Em caso de retransmissão, a janela de congestionamento é reduzida ao seu tamanho inicial • Algoritmo de Karn é utilizado exponencialmente
106
Redes de Computadores
Como aumentar a vazão da conexão ?
§ Algoritmo de Slow Start • Para cada reconhecimento recebido (de um segmento não
retransmitido), a janela de congestionamento é aumentada de um segmento (de tamanho máximo)
§ Em condições “ideais”, o algoritmo de Slow Start pode levar a um crescimento exponencial da janela de congestionamento • Sobrecarga na rede pode reiniciar congestionamento • Solução: técnica de prevenção contra congestionamento
– Quando a janela de congestionamento atinge metade de seu tamanho anterior à última retransmissão, o TCP passa a aumentar a janela de congestionamento somente quando TODOS os segmentos internos à janela forem reconhecidos
107
Redes de Computadores
Slow Start
Tamanho dos segmentos = 1Kb Janela de Recepção = 64 Kb
0
8
16
24
32
40 1 3 5 7 9 11
13
15
17
19
21
23
25
Número da transmissão
Jane
la d
e co
nges
tiona
men
to
(Kby
tes)
108
Redes de Computadores
Slow Start
§ Algoritmo de Slow Start reduz drasticamente a vazão de uma conexão TCP
§ Melhoria: técnica de decréscimo multiplicativo • Em caso de retransmissão, a janela de congestionamento é
reduzida pela metade, até o mínimo de um segmento de tamanho máximo
109
Redes de Computadores
Slow Start + Decréscimo Multiplicativo
Tamanho dos segmentos = 1Kb Janela de Recepção = 64 Kb
0
8
16
24
32
40
1 3 5 7 9 11
13
15
17
19
21
23
25
Número da transmissão
Jane
la d
e co
nges
tiona
men
to
(Kby
tes)
Profa. Débora C. Muchaluat Saade 14
110
Redes de Computadores
• Após estouro de temporizador– CongWin é reduzida a 1 MSS; – Janela cresce exponencialmente: volta à partida lenta
– Até um limiar (ssthresh), depois cresce linearmente• Após 3 ACKs duplicados: duas possibilidades
– Similar quando há estouro do temporizador ou corta CongWin pela metade, se implementa a recuperação rápida
– A janela depois cresce linearmente
1. 3 ACKs duplicados indica que a rede é capaz de entregar alguns segmentos
2. Estouro de temporizador antes de 3 ACKs duplicados é mais “alarmante”
Controle de Congestionamento do TCP - Adaptações
111
Redes de Computadores
• Quando a CongWin está abaixo do limiar ssthresh– Transmissor está na fase de partida lenta– Janela cresce exponencialmente
• Quando a CongWin está acima do limiar ssthresh– Transmissor está na fase de prevenção de congestionamento– Janela cresce linearmente
• Quando chegam três ACKs duplicados– Limiar passa a ser CongWin/2 e CongWin = valor do limiar– Recuperação rápida
• Quando estoura o temporizador– Limiar é ajustado para CongWin/2 e CongWin = 1 MSS
Controle de Congestionamento do TCP - Resumo
112
Redes de Computadores
• Tahoe – Original (slow start, congestion avoidance, fast retransmit)
• Reno (aditive increase, multiplicative decrease) • Vegas • SACK • NewReno (RFC 2582)
– Usado no Windows Vista • Bic
– Usado pelo Debian (/proc/sys/net/ipv4/tcp_congestion_control)
• etc.
Implementações do TCP
114
Redes de Computadores
Octeto 1 Octeto 2 Octeto 3 Octeto 4 0 7 15 23 31
TCP DESTINATION PORT TCP SOURCE PORT
DATA ...
WINDOW HLEN
SEQUENCE NUMBER
RESERVED CODE BITS ACKNOWLEDGEMENT NUMBER
URGENT POINTER CHECKSUM PADDING OPTIONS (IF ANY)
URG ACK PSH RST SYN FIN Urgent Pointer válido
Campo ACK válido Requisição de PUSH Reinicializa conexão
Sincroniza números de sequência Transmissor atingiu fim do stream
Segmento TCP
CODE BITS (6 bits)
Uma vez que uma conexão tenha sido estabelecida, este flag permanece sempre setado
115
Redes de Computadores
Conexões TCP
§ Estabelecimento de Conexões TCP • Flag SYN=1 (code bits) • Implementa three-way handshake
§ Conexão full-duplex § Encerramento de Conexões
• Flag FIN=1 (code bits) • fluxos são encerrados de modo independente • na prática, o encerramento dos fluxos costuma
ocorrer consecutivamente
116
Redes de Computadores
Apl. ativa Apl. passiva
Caso trivial do algoritmo 3-way handshake
isnA - SEQ ACK
x octetos (x=0, geralmente)
Flag SYN = 1 Flag ACK = 0
isnA+x+1 isnB+y+1 SEQ ACK Flag SYN = 0
Flag ACK = 1
isnB isnA+x+1 SEQ ACK
y octetos (y=0, geralmente)
Flag SYN = 1 Flag ACK = 1
Estabelecimento de conexões
§ SEQ carrega número de sequência inicial (ISN, incr. a cada 4µs) que cada módulo TCP vai utilizar para sequenciar segmentos TCP
§ ACK permite que dados do usuário sejam enviados junto ao pedido de estabelecimento (reconhecimento na confirmação da conexão)
Profa. Débora C. Muchaluat Saade 15
118
Redes de Computadores
Encerramento de conexões
§ Conexão full-duplex: fluxos são encerrados de modo independente § Na prática, o encerramento dos fluxos costuma ocorrer
consecutivamente
apl. fecha conexão
informa apl.
x SEQ
apl. fecha conexão
Flag FIN = 1
x+1 ACK
y SEQ Flag FIN = 0
y x+1 SEQ ACK Flag FIN = 1
y+1 ACK
x+1 SEQ Flag FIN = 0