Upload
grant-miles
View
70
Download
0
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
Redes de Computadores I – Prof. Mateus Raeder
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
• 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
1 2 3 4 5 6 7 8 9 ... N
Janela inicial (tamanho 3)
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
• 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
1 2 3 4 5 6 7 8 9 ... N
Janela desliza
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
1 2 3 4 5 6 7 8 9 ... N
Janela desliza
1 2 3 4 5 6 7 8 9 ... N
Janela desliza
ACK 3 recebido:
ACK 1 recebido:
Não enviados
Enviados
Confirmados
Indica que até o 3 (inclusive)Já chegaram todos corretamente
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
1 2 3 4 5 6 7 8 9 ... N
Janela desliza
1 2 3 4 5 6 7 8 9 ... N
Janela desliza
ACK 7 recebido:
ACK 4 recebido:
Não enviados
Enviados
Confirmados
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela DeslizanteRemetente Receptor
Envia PCT 0
Envia PCT 1
Envia PCT 2(espera)
Recebe PCT 0Envia ACK 0
Recebe PCT 2(descarta)
Recebe ACK 0Envia PCT 3
Recebe PCT 3(descarta)
Timeout PCT 1
Envia PCT 1Recebe PCT 1Envia ACK 1Recebe PCT 2Envia ACK 2Recebe PCT 3Envia ACK 3
Envia PCT 2
Envia PCT 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
Porta Origem Porta Destino
Checksum Ponteiro de urgência
Opções (0 ou mais palavras de 32 bits)
0 16 31
Dados
Tamanho da janela
Número de sequência
Número ACK
Tamanhocabeçalho
Não usado
FIN
SYN
RST
PSH
ACK
URG
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 gastodesde 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
Origem A Destino B
SYN
SYN + ACK
ACK
• Handshaking de 3 vias– Primeiro handshake: bit SYN marcado– Segundo handshake: SYN e ACK marcados– Terceiro handshake: somente uma confirmação
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
FIN
ACK
ACK
FIN
Dados
ACK dos dados
Host A Host B
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)