1 / 33

TCP (Transmission Control Protocol)

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

grant-miles
Télécharger la présentation

TCP (Transmission Control Protocol)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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

  20. Opções TCP • Retransmissão Seletiva Redes de Computadores I – Prof. Mateus Raeder

  21. 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

  22. 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

  23. 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

  24. 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

  25. TCP – Números de sequência iniciais Redes de Computadores I – Prof. Mateus Raeder

  26. 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

  27. TCP – Fechando uma conexão Host A Host B FIN ACK Dados ACK dos dados FIN ACK Redes de Computadores I – Prof. Mateus Raeder

  28. 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

  29. 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

  30. 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

  31. TCP – Política de transmissão Redes de Computadores I – Prof. Mateus Raeder

  32. 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

  33. 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

More Related