330 likes | 427 Views
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
E N D
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 ACK 1 recebido: 1 2 3 4 5 6 7 8 9 ... N Janela desliza ACK 3 recebido: 1 2 3 4 5 6 7 8 9 ... N 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 Janela desliza ACK 7 recebido: 1 2 3 4 5 6 7 8 9 ... N Janela desliza Não enviados Enviados Confirmados Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante Remetente Receptor Envia PCT 0 Recebe PCT 0 Envia ACK 0 Envia PCT 1 Envia PCT 2 (espera) Recebe PCT 2 (descarta) Recebe ACK 0 Envia PCT 3 Timeout PCT 1 Recebe PCT 3 (descarta) Envia PCT 1 Recebe PCT 1 Envia ACK 1 Envia PCT 2 Recebe PCT 2 Envia ACK 2 Envia PCT 3 . . . 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 31 0 16 Porta Origem Porta Destino Número de sequência Número ACK Tamanhocabeçalho Não usado URG AC K P S H R S T S Y N F I N Tamanho da janela Checksum 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