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