TCP (Transmission Control Protocol)
• Janelas deslizantes (Go-back-N)
– Para conseguir confiabilidade, emissor aguarda o
ACK de cada pacote enviado
– Só então envia o próximo pacote
– Rede permanece ociosa durante este tempo
– Janelas deslizantes: tornam a transmissão de
pacotes mais eficiente (vários pacotes antes do
ACK)
– Mais complexa que a confirmação positiva vista
anteriormente
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
1
2
3
4
5
6
7
8
9
...
N
Janela inicial (tamanho 3)
• O protocolo cria uma janela de tamanho fixo
– Pode transmitir todos os pacotes que se encontram
nesta janela antes de receber uma confirmação
– Um pacote é dito não-confirmado se foi enviado e
nenhum ACK retornou
– Máximo de confirmações: tamanho da janela
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
1
2
3
4
5
6
7
8
9
...
N
Janela desliza
• Quando o remetente recebe um ACK para o
primeiro pacote da janela
– Desliza a janela
– Envia o próximo pacote
– A janela continua deslizando de acordo com a
chegada das confirmações
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
ACK 1 recebido:
1
2
3
4
5
6
7
8
9
...
N
4
5
6
7
8
9
...
N
Janela desliza
ACK 3 recebido:
1
2
3
Janela desliza
Indica que até o 3 (inclusive)
Já chegaram todos corretamente
Não enviados
Enviados
Confirmados
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
ACK 4 recebido:
1
2
3
4
5
6
7
8
9
...
N
7
8
9
...
N
Janela desliza
ACK 7 recebido:
1
2
3
4
5
6
Janela desliza
Não enviados
Enviados
Confirmados
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
Remetente
Receptor
Envia PCT 0
Envia PCT 1
Envia PCT 2
(espera)
Recebe PCT 0
Envia ACK 0
Recebe PCT 2
(descarta)
Recebe ACK 0
Envia PCT 3
Timeout PCT 1
Envia PCT 1
Envia PCT 2
Envia PCT 3
.
.
.
Recebe PCT 3
(descarta)
Recebe PCT 1
Envia ACK 1
Recebe PCT 2
Envia ACK 2
Recebe PCT 3
Envia ACK 3
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
• Com um mecanismo bem ajustado de janela
– Rede fica com mais pacotes trafegando
– Tráfego mais eficiente na rede do que uma técnica
de confirmação simples, baseada somente em ACKs
• Mecanismo de janela continua oferecendo
transferência confiável
• Garante a ordem da entrega das mensagens
Redes de Computadores I – Prof. Mateus Raeder
TCP – Janela variável
• TCP permite que o tamanho da janela varie com o tempo
• Cada confirmação de recebimento contém uma informação
sobre quantos pacotes o receptor está preparado para aceitar
• Assim, o remetente atualiza o tamanho da sua janela de acordo
com a capacidade informada pelo receptor
– Aumento da capacidade do receptor, aumento da janela
– Diminuição da capacidade do receptor, diminuição da janela
• Fornece melhor controle de fluxo e transferência confiável
• Controle de fluxo é essencial para redes e hosts heterogêneos
– Cada um com sua velocidade e capacidade
– Melhor utilização da rede
Redes de Computadores I – Prof. Mateus Raeder
Pacote TCP
• A unidade de transferência entre dois hosts com TCP é chamada
de segmento ou pacote
• Pacotes são trocados para estabelecer conexões
– Piggybacking (carona): permite envio de controle junto dos dados
• Em uma mensagem, pode ser enviado um ACK anterior
• Ameniza o overhead
• Cada pacote TCP é dividido em duas partes
– Cabeçalho
– Dados
Redes de Computadores I – Prof. Mateus Raeder
Pacote TCP
0
31
16
Porta Origem
Porta Destino
Número de sequência
Número ACK
Tamanho
cabeçalho
Não
usado
U A P R S F
R C S S Y I
G K H T N N
Checksum
Tamanho da janela
Ponteiro de urgência
Opções (0 ou mais palavras de 32 bits)
Dados
Redes de Computadores I – Prof. Mateus Raeder
Pacote TCP
• Portas destino e origem
• Número de sequência: do pacote do remetente
• Número ACK: número de confirmação que identifica
o próximo número de sequência esperado pelo outro
host (receptor)
• Tamanho do cabeçalho: especifica o tamanho do
cabeçalho do pacote TCP. Tamanho mínimo é de 5
palavras de 32 bits
• Não usado: reservados para uso futuro
Redes de Computadores I – Prof. Mateus Raeder
Pacote TCP
• Bits de controle (identificam a finalidade do
segmento)
– URG: o campo Ponteiro Urgente é válido
– ACK: o campo Número ACK é válido
– PSH: força a entrega da mensagem (push – empurrar)
• Receptor não armazena a mensagem até encher o buffer
– RST: reiniciar a conexão
• Caso tenha ficado confusa devido falhas no host, por exemplo
• Rejeitar uma conexão ou um segmento inválido
– SYN: sincroniza números de sequência (estabelece conexão)
– FIN: remetente não tem dados
Redes de Computadores I – Prof. Mateus Raeder
Pacote TCP
• Tamanho da janela: especifica o tamanho da janela
(em bytes) que será usada na conexão
– Técnica de piggybacking
– Bits todos em 0:
• Interrompe a transmissão por um tempo
• Para receber novamente, basta enviar o Tamanho da Janela
diferente de 0
Redes de Computadores I – Prof. Mateus Raeder
Pacote TCP
• Checksum: similar ao cálculo do UDP, com o pseudo
cabeçalho
• Ponteiro urgente: identifica que o receptor deve
receber os dados o mais rápido possível
– Não bufferiza
– Não depende da sua posição no fluxo de dados
– Por exemplo, abortar conexão antes de chegar ao fim
• Informação deve ser recebida antes do processamento dos
dados
• Seguirá com bit URG ativado
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Options: pode conter 0 ou mais opções
– Cada opção começa com um campo de 1 octeto que
indica o tipo da opção
– Em seguida, 1 octeto que indica o tamanho da opção
• Opção de Tamanho Máximo de Segmento (Maximum
Segment Size – MSS)
– Combina entre as extremidades o tamanho máximo do
segmento a ser transferido
– Permite que receptor diga o tamanho máximo, permitindo
comunicação entre máquinas e redes heterogêneas de
maneira mais eficiente
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Opção de Tamanho Máximo de Segmento (Maximum
Segment Size – MSS) cont...
– Se não estão na mesma rede física, podem tentar descobrir a
MTU (“capacidade da rede”) mínima ao longo do caminho
– Escolha de MSS é crítica
• Muito pequeno: pode causar overhead e sobrecarga na rede
• Muito grandes: podem obrigar roteadores a fragmentar o
pacote diversas vezes, diminuindo o desempenho da rede
– Qual o tamanho de segmento ideal?
• O maior possível sem exigir fragmentação alguma!!
• Prática é muito difícil
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Opção de Janela móvel
– A janela do cabeçalho IP tem 16 bits
• Máximo do tamanho é 64Kbytes
– Para acomodar janelas maiores, a opção de Escala de Janela
apresenta campos que permitem informar o tamanho real da
nova janela
• Opção de estampa de tempo
–
–
–
–
Ajuda o TCP a calcular o atraso na rede
Valor de tempo e um de estampa de tempo de resposta de eco
Remetente: coloca a hora no estampa ao enviar um pacote
Receptor: copia o tempo para o campo resposta de eco e
manda confirmação
Remetente sabe o tempo total gasto
desde o envio do segmento
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Retransmissão Seletiva
– Substituir o Go-back-N
– No Go-back-N, quando o receptor recebe um defeituoso
seguido de vários perfeitos, todos os perfeitos deverão ser
retransmitidos
• Na Retransmissão Seletiva, o receptor reconhece
individualmente todos os pacotes recebidos
corretamente
– Armazena em um buffer conforme necessário para entregar
em ordem à camada superior
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Retransmissão Seletiva
– O remetente deverá retransmitir os pacotes que não
receberam confirmação (ACK)
• Temporizador para cada pacote sem ACK
– Janela existe no remetente
• Com os números de sequência consecutivos
• Limita quantidade de pacotes enviados sem reconhecimento
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Retransmissão Seletiva
Redes de Computadores I – Prof. Mateus Raeder
TCP – Abertura de conexão
• As duas extremidades da conexão (diferentemente do
UDP) devem concordar em participar da transmissão
• A aplicação em uma extremidade realizará a abertura
passiva:
– Indica que aceitará uma conexão que irá chegar em uma
determinada porta
• Na outra extremidade, a aplicação realiza a abertura
ativa
– Indicará que deseja estabelecer uma conexão com
determinada porta em determinado host
Redes de Computadores I – Prof. Mateus Raeder
TCP – Controle da conexão
• Três fases
– Estabelecimento da conexão
– Transmissão de dados
– Encerramento da conexão
• Flags
–
–
–
–
SYN: indica solicitação de conexão
FIN: indica finalização da conexão
RST: indica o reset da conexão
ACK: indica um reconhecimento de recebimento de pacote
Redes de Computadores I – Prof. Mateus Raeder
TCP – Estabelecimento da conexão
• Handshaking de 3 vias
– Primeiro handshake: bit SYN marcado
– Segundo handshake: SYN e ACK marcados
– Terceiro handshake: somente uma confirmação
Origem A
Destino B
SYN
SYN + ACK
ACK
Redes de Computadores I – Prof. Mateus Raeder
TCP – Números de sequência iniciais
• Handshaking realiza 2 funções importantes:
– Garante dois lados prontos para transmitir
– Permite que os lados saibam os números de sequência inicial
• Máquinas escolhem números de sequência iniciais
aleatoriamente
• As extremidades devem conhecer os números de
sequência umas das outras
– A envia SYN junto com seu número de sequência (x) para B
– B recebe o SYN, guarda o número de sequência do fluxo de
A, e responde com seu número de sequência (y), dizendo que
espera o número de sequência x+1 agora de A
- A guarda o número de sequência de B
e confirma dizendo que espera por y+1
Redes de Computadores I – Prof. Mateus Raeder
TCP – Números de sequência iniciais
Redes de Computadores I – Prof. Mateus Raeder
TCP – Fechando uma conexão
• O término da conexão deve ser realizado de maneira
controlada
– Conexões são full duplex, e vão nos dois sentidos
independentemente
• Quando um aplicativo TCP não possui mais dados
para enviar, fecha a conexão em uma direção
– Somente a sua “metade”
• Quando um lado recebe um pedido de
encerramento, deve avisar a aplicação
– Entretanto, a aplicação poderá continuar enviando dados
pela sua “metade” de conexão
Redes de Computadores I – Prof. Mateus Raeder
TCP – Fechando uma conexão
Host A
Host B
FIN
ACK
Dados
ACK dos dados
FIN
ACK
Redes de Computadores I – Prof. Mateus Raeder
TCP – Fechando uma conexão
• A conexão estará encerrada quando os dois sentidos
da conexão estiverem desativados
• São necessários, de modo geral, 4 segmentos TCP
para encerrar uma conexão
– FIN e ACK em um sentido e FIN e ACK no outro sentido
• Pode ocorrer com apenas 3 segmentos?
– Sim!! O primeiro ACK e o segundo FIN podem ser enviados
pelo mesmo segmento (de “carona”)
– Somente 3 segmentos
Redes de Computadores I – Prof. Mateus Raeder
TCP – Reinício da conexão
• Algumas vezes condições anormais forçam a
interrupção da conexão
– Um lado inicia o término com o bit RST setado
– O outro lado responde imediatamente com outro segmento
de reset, abortando a conexão
– O TCP informa ao programa aplicativo que houve um aborto
Redes de Computadores I – Prof. Mateus Raeder
TCP – Política de transmissão
• Vamos supor que o receptor tem um buffer de 5000
bytes
• Se o remetente enviar um segmento de 3000 bytes, o
receptor confirmará o recebimento
– Porém, até que alguma aplicação retire do buffer, o buffer
possui 2000 bytes restantes
– Esta informação (2000 bytes) vai para a janela do remetente
• O remetente envia mais 2000 bytes, e são confirmados
– Receptor anunciará janela 0, pois não cabem mais dados
(buffer cheio)
– Assim, o remetente deve parar de enviar mensagens até uma
janela maior ser anunciada
Redes de Computadores I – Prof. Mateus Raeder
TCP – Política de transmissão
Redes de Computadores I – Prof. Mateus Raeder
TCP – Síndrome da janela boba
• Um problema que pode diminuir muito o
desempenho do TCP
• Dados repassados para o remetente são muito
grandes, mas uma aplicação consome os dados
um byte por vez
• Buffer do lado receptor fica cheio, e o remetente
sabe disso (janela é 0)
• A aplicação então lê 1 caractere do fluxo TCP
• O que acontece?
– Receptor fica bem faceiro e envia a janela de tamanho 1
Redes de Computadores I – Prof. Mateus Raeder
TCP – Síndrome da janela boba
• Qual a solução?
– Evitar que o receptor envie uma atualização de janela
para 1 byte
– Ele é forçado a aguardar até que haja espaço
considerável para anunciar sua janela
• Mas, qual é o espaço considerável?
– Difícil de prever
– É definido que o receptor não pode enviar uma
atualização de janela até que ele possa lidar com o
tamanho máximo do segmento (MSS) anunciado no
começo da conexão, ou até metade da capacidade do
seu buffer (o que for menor)
Redes de Computadores I – Prof. Mateus Raeder
Download

Janelas deslizantes (Go-back-N)