TCP (Transmission Control Protocol)

33
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

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

Transcript of TCP (Transmission Control Protocol)

Page 1: TCP (Transmission Control Protocol)

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

Page 2: TCP (Transmission Control Protocol)

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)

Page 3: TCP (Transmission Control Protocol)

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

Page 4: TCP (Transmission Control Protocol)

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

Page 5: TCP (Transmission Control Protocol)

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

Page 6: TCP (Transmission Control Protocol)

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

.

.

.

Page 7: TCP (Transmission Control Protocol)

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

Page 8: TCP (Transmission Control Protocol)

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

Page 9: TCP (Transmission Control Protocol)

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

Page 10: TCP (Transmission Control Protocol)

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

Page 11: TCP (Transmission Control Protocol)

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

Page 12: TCP (Transmission Control Protocol)

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

Page 13: TCP (Transmission Control Protocol)

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

Page 14: TCP (Transmission Control Protocol)

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

Page 15: TCP (Transmission Control Protocol)

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

Page 16: TCP (Transmission Control Protocol)

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

Page 17: TCP (Transmission Control Protocol)

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

Page 18: TCP (Transmission Control Protocol)

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

Page 19: TCP (Transmission Control Protocol)

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

Page 20: TCP (Transmission Control Protocol)

Redes de Computadores I – Prof. Mateus Raeder

Opções TCP

• Retransmissão Seletiva

Page 21: TCP (Transmission Control Protocol)

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

Page 22: TCP (Transmission Control Protocol)

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

Page 23: TCP (Transmission Control Protocol)

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

Page 24: TCP (Transmission Control Protocol)

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

Page 25: TCP (Transmission Control Protocol)

Redes de Computadores I – Prof. Mateus Raeder

TCP – Números de sequência iniciais

Page 26: TCP (Transmission Control Protocol)

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

Page 27: TCP (Transmission Control Protocol)

Redes de Computadores I – Prof. Mateus Raeder

TCP – Fechando uma conexão

FIN

ACK

ACK

FIN

Dados

ACK dos dados

Host A Host B

Page 28: TCP (Transmission Control Protocol)

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

Page 29: TCP (Transmission Control Protocol)

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

Page 30: TCP (Transmission Control Protocol)

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

Page 31: TCP (Transmission Control Protocol)

Redes de Computadores I – Prof. Mateus Raeder

TCP – Política de transmissão

Page 32: TCP (Transmission Control Protocol)

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

Page 33: TCP (Transmission Control Protocol)

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)