Mind map
Transmission Control Protocol (TCP): aprofundamento

Map content
Transmission Control Protocol (TCP): aprofundamento
Conexão TCP
- Estabelecimento de conexão
- Utiliza o protocolo 3-way-handshake
- Sequência de mensagens
- Sinalização de abertura de conexão da origem – FLAG SYN (Origem)
- Confirmação de abertura e Sinalização de conexão do destino – FLAGS SYN e ACK (Destino)
- Confirmação de abertura da conexão pela origem – FLAG ACK (Origem)
- Para o devido estabelecimento da conexão, necessariamente deverá ocorrer a troca das três mensagens
- Para o devido estabelecimento das conexões, utiliza-se soquetes (sockets) nos dispositivos
- Soquete = ENDEREÇO IP + PORTA
- O estabelecimento da conexão então ocorre quando há a efetiva e explícita conexão entre os soquetes do nó transmissor e do nó receptor
- Quanto um dispositivo qualquer está fornecendo algum serviço na rede, este dispositivo mantém a porta do respectivo serviço no estado LISTENING ou LISTEN
- Neste estado, a porta está aceitando conexões de clientes
- Quando há o estabelecimento da conexão, a porta passa para o estado ESTABLISHED
- Encerramento de conexão
- Utiliza o protocolo 4-way-handshake
- Sequência de mensagens
- FLAG FIN (1) - utilizada para requisitar o encerramento da conexão (origem)
- Reparem ainda que não mais é enviado um pacote com dois tipos de flags como ocorria na abertura (SYN + ACK)
- Utiliza-se as FLAGS ACK (2) e FIN (3) em mensagens separadas (destino)
- Há, porém, a possibilidade de condensar as mensagens ACK e FIN no destino, como no estabelecimento da conexão, utilizando apenas 3 mensagens
- Esse modo é conhecido como encerramento Simétrico
- FLAG ACK (4) - Por fim a origem confirma o encerramento
- Outro método utilizado é o envio de um único segmento com a FLAG RST, implicando um encerramento imediato
- Independe mensagens FIN sendo conhecido como modo assimétrico
- FLAG FIN (1) - utilizada para requisitar o encerramento da conexão (origem)
- Após o estabelecimento da conexão, passa-se então à troca de dados propriamente ditos
- Os pacotes deverão ser sequenciados para que os dispositivos reconheçam os pacotes e respondam de forma adequada
- Estabelecimento de conexão
Segmentação na camada de transporte
- Camada de transporte possui a capacidade de realizar segmentação dos dados recebidos das camadas superiores
- A segmentação objetiva evitar futuras fragmentações pela camada de rede
- Dessa forma, avalia-se o MTU suportado na rede e partir desse valor, define-se o tamanho de cada segmento
- Essa unidade é conhecida como MSS (Max Segment Size), ou seja, tamanho máximo do segmento
- Na maioria das redes, temos o protocolo Ethernet, o que nos leva a um MTU padrão de 1500 bytes
- Como esses 1500 bytes correspondem ao cabeçalho e área útil da camada de rede, na perspectiva da camada de transporte, deve-se descontar o tamanho do cabeçalho da camada de rede
Sequenciamento e controle de fluxo
- Motivação
- Pelo protocolo TCP/IP comutar pacotes através do protocolo IP, não há garantia de entrega na devida ordem dos diversos pacotes
- Cada um pode seguir rotas distintas
- Além da possibilidade de ocorrência de perdas
- Para que tal situação seja devidamente controlada, utiliza-se o recurso de marcação dos pacotes com números de sequência
- Isso permite que o destinatário tenha condições de remontar a informação original
- Além disso, como vimos, utiliza-se o recurso de confirmação de recebimento através do envio de pacotes do tipo ACK
- Pelo protocolo TCP/IP comutar pacotes através do protocolo IP, não há garantia de entrega na devida ordem dos diversos pacotes
- Funcionamento da troca de mensagem
- Confirmação de cada segmento
- HOST A envia mensagem com número de SEQ = X, ACK = Y
- SEQ = X indica que o segmento X é transmitido
- ACK = Y solicita o segmento Y confirmando a chegada do Y-1
- O HOST B, para confirmar, manda uma mensagem com ACK=X+1, informando que está esperando uma nova mensagem na sequência
- O HOST B, no mesmo pacote de resposta anterior, gera um novo número de SEQ = Y
- O HOST A, sabendo que o pacote foi recebido, manda o pacote seguinte com SEQ=X+1 e confirma o recebimento da resposta com ACK=Y+1
- HOST A envia mensagem com número de SEQ = X, ACK = Y
- Janela deslizante
- Busca otimizar a troca de dados em um meio estável e com pouquíssimas perdas
- Nesse cenário, enviar apenas um segmento por vez e aguardar a confirmação gera uma grande perda de tempo
- Portanto, na prática, envia-se diversos segmentos com quantidade prevista no campo WINDOW do protocolo TCP
- Supondo que um cliente Web browser informe uma janela = 3000 e ACK = 1000, isso significa que ele solicita o próximo segmento 1000 até o limite de 3000
- Técnica da partida lenta
- No início da transmissão, o protocolo define o tamanho inicial de 1MSS [RFC 3390] para o tamanho da Janela
- Consiste em incremento do tamanho da janela deslizante de 1 MSS para cada ACK recebido
- De forma prática, o protocolo duplica a janela a cada conjunto de segmentos enviados e recebidos corretamente
- Caso haja uma perda, o valor da janela é restaurado a 1 MSS e recomeça o procedimento de incremento
- Entretanto, tem-se definido um valor que chamaremos de LIMIAR sendo, por padrão, o seu valor de 64kbytes
- Uma vez que se atinge este valor, o incremento passa a ser de 1 MSS
- Esse procedimento é conhecido como a técnica de prevenção de congestionamento
- Para cada perda, o algoritmo redefine esse valor de limiar como sendo a metade do tamanho da janela deslizante corrente quando houve a perda
- Isto é, se a janela estava em 40kbytes, o novo valor do LIMIAR será de 20kbytes
- Uma vez que se atinge este valor, o incremento passa a ser de 1 MSS
- Técnica da partida lenta
- Dessa forma, o web server enviará as sequências solicitadas começando de 1000 até 3000
- Tendo recebido todos os segmentos sem erros, o cliente solicita o próximo segmento (4000) podendo inclusive aumentar o tamanho da janela
- Há uma dinamicidade do tamanho da janela em relação ao comportamento da rede
- Supondo que um cliente Web browser informe uma janela = 3000 e ACK = 1000, isso significa que ele solicita o próximo segmento 1000 até o limite de 3000
- Busca otimizar a troca de dados em um meio estável e com pouquíssimas perdas
- Confirmação de cada segmento
- Erros na transferência de dados
- Para toda mensagem enviada, em caso de confirmação por segmento, inicia-se um timer de controle interno
- Caso esse tempo expire e não haja o recebimento da confirmação, envia-se novamente o pacote
- Mesmo que uma mensagem seja recebida, existe a possibilidade de perda do ACK
- Como o emissor não tem ciência do recebimento do segmento por causa da perda do ACK, há o TIMEOUT e este envia novamente
- Tem-se um caso de duplicação da informação no destino
- Nesse cenário, a informação duplicada é descartada e o receptor envia novamente um ACK para avisar do recebimento
- Retransmissão de pacotes em caso de erros com transmissão com janela
- Go-Back-N: a nomenclatura N é utilizada de acordo com o tamanho da janela
- Havendo uma perda de qualquer pacote na sequência, todos os demais pacotes posteriores recebidos serão descartados
- Obrigando o transmissor a retransmitir as informações a partir do pacote perdido
- Retransmissão seletiva: conhecido também como SACK (Selective ACK)
- Nesse modelo, caso haja perda, os pacotes recebidos posteriormente, serão armazenados em buffer aguardando a retransmissão apenas do pacote perdido
- Entretanto, caso haja a perda de um pacote intermediário, o transmissor não enviará mensagens indefinidamente
- Ele preencherá apenas o tamanho da janela, sendo que o início da janela estará “preso” ao recebimento do pacote perdido
- Go-Back-N: a nomenclatura N é utilizada de acordo com o tamanho da janela
- Para toda mensagem enviada, em caso de confirmação por segmento, inicia-se um timer de controle interno
- Motivação
Stream Control Transmission Protocol (SCTP)
- Características
- Surgiu como alternativa intermediária aos protocolos UDP e TCP
- Não é tão burocrático como o TCP, porém implementa alguns métodos de controle, coisa que o UDP não faz
- É um protocolo confiável, uma vez que utiliza recurso de reconhecimento das mensagens transmitidas
- Muitas falhas de segurança do TCP foram corrigidas em sua implementação
- Possui suporte à mobilidade em termos de transporte
- Além disso, é um protocolo orientado a conexões com alto nível de eficiência na transferência dos dados
- Implementação de novos recursos
- MultiHoming – Múltiplos endereços IP podem ser acessados para um mesmo destino
- MultiStreaming – Em uma mesma conexão, pode-se ter diversos fluxos independentes de dados
- Características
Images and files in the map
Information
- Description
- Redes de computadores (Camada de Transporte) Mind Map on Transmission Control Protocol (TCP): aprofundamento, created by Michel Souza on 19/05/2018.
- Created by
- Michel Souza
- Views
- 0
- Rating
More on TCP e transferência confiável de dados







