handshake de conexão TCP

5

Por que o TCP é um handshake de 3 vias usado durante o estabelecimento de uma conexão? Ou seja, por que não é suficiente usar um handshake bidirecional?

    
por Artem Barger 05.07.2009 / 10:14

6 respostas

5

O mecanismo de handshaking usado no TCP é projetado para que dois hosts, tentando se comunicar, possam negociar os parâmetros da conexão de rede antes de iniciar a comunicação. Ambos os lados podem assumir que o outro computador está pronto e começar a enviar dados de forma confiável.

Aqui está um diagrama simplificado dos pacotes enviados em ambos os lados durante o aperto de mão:

        SYN     ->
                    SYN received
Host A          <-       SYN ACK    Host B
        SYN ACK received
        ACK     ->           
                    ACK received

      TCP connection is established

As mensagens SYN (sincronizar) e ACK (confirmar) são especificadas por um bit / número dentro do cabeçalho TCP do segmento.

O processo também é projetado para que ambas as extremidades possam iniciar e negociar conexões separadas ao mesmo tempo.

Para terminar uma conexão entre dois computadores, outra comunicação de 3 vias é executada para derrubar a conexão TCP. O início e desmontagem de uma conexão TCP é parte do que faz do TCP um protocolo confiável.

Veja também: Qual é a diferença entre o UDP e o TCP?

    
por 05.07.2009 / 11:10
8

Para que ambas as extremidades possam ter certeza de que a outra extremidade sabe que a conexão está estabelecida.

EDIT: Dois sentidos não é suficiente, como o destinatário não pode saber que o remetente sabe que o destinatário respondeu ea conexão está pronta para ir e isso faz com que (conexão de handshake de 2 vias) não confiável em comparação com 3 aperto de mão da maneira

    
por 05.07.2009 / 10:16
2

Perceba que é realmente um aperto de mão de 4 vias (dois em cada direção). Existe um SYN - > ACK ee um SYN < - ACK. O Host-B apenas economiza tempo enviando seu SYN ao mesmo tempo que o Host-A do ACK.

Além disso, a Dentrasi comentou que o handshake de três vias impede a falsificação, mas isso não é totalmente verdade.

Veja mais informações no site nmap: link

"TCP Sequence Prediction Systems with poor TCP initial sequence number generation are vulnerable to blind TCP spoofing attacks. In other words, you can make a full connection to those systems and send (but not receive) data while spoofing a different IP address. The target's logs will show the spoofed IP, and you can take advantage of any trust relationship between them. This attack was all the rage in the mid-nineties when people commonly used rlogin to allow logins to their account without any password from trusted IP addresses. Kevin Mitnick is alleged to have used this attack to break into Tsutomu Shimomura's computers in December 1994."

Informações adicionais sobre ataques de predição de sequência TCP aqui: link

    
por 05.07.2009 / 14:52
2

Explicação não técnica-- É necessário um handshake de 3 vias para uma conversa / conexão full duplex. Uma conexão significa acordo entre duas partes. Acordo significa que, quando X enviar, Y recebe e quando Y envia X recebe. Cada um desses acordos de face única requer dois passos cada um, pedir permissão (SYN) e saber que o outro escutará / receberá / receberá (ACK) o que você enviar. Então, dois passos SYN-ACK.

It essentially is a 4-Way Handshake, the step-2 (sending ACK to X by Y) and step-3 (sending SYN to X by Y) are merged (step-3 piggy-backed on step-2), in the end resulting in one step. This is possible since both are send at the same time from Y (same host), and the information is carried in a bit in TCP header (no over-size issues). Thus in total 3-steps from 4-steps.

tech-explanation - O TCP é um protocolo com estado, a maneira como sua máquina de estado opera e altera seus estados é simétrica em ambas as extremidades. O estado estabelecido é atingido quando você recebe o ACK da outra máquina. Para que ambas as entidades atinjam o estado estabelecido de conexão, as máquinas de estados devem receber um ACK. Portanto, o recebimento de ACK é importante e, para receber um ACK, um host precisa enviar um SYN. Bem, mais uma vez, o processo de 4 etapas foi mesclado em 3 etapas, veja a explicação citada.

Rest são detalhes - como escolher um valor SYN aleatório, para que os ataques de previsões possam ser evitados. No que diz respeito a um ataque, o Man-in-the-middle é iminente. ps colocar um comentário se alguém quiser saber como. Eu acho que a maioria de vocês saberia como, é muito óbvio, então eu estou economizando tempo de leitura.

    
por 05.07.2009 / 15:46
1

O handshake de três vias estabelece a conexão. Assim como quando você pega seu telefone, obtém um tom de discagem, disca o número, ouve o toque, e então a outra pessoa diz "olá".

    
por 05.07.2009 / 10:23
1

Houve uma tentativa há muito tempo de reduzir o número de pacotes "administrativos" necessários para configurar e derrubar uma conexão TCP de curta duração. Foi chamado "TCP para transações" ou "T / TCP" e é descrito no RFC1644:

link

O TCP foi originalmente projetado para fornecer um circuito virtual para conexões de longa duração, em que o tempo de configuração e desmontagem não era tão importante. À medida que o modelo cliente-servidor se tornou mais prevalente, a necessidade de algo como T / TCP tornou-se mais evidente.

O T / TCP usa alguns mecanismos de armazenamento em cache do servidor para permitir que o primeiro pacote de uma nova conexão contenha dados. O pedido de desmontagem do lado do servidor também pode pegar o último pacote de dados. Isso reduz o número de pacotes necessários para uma mensagem de payload de pacote único para três.

Infelizmente, o T / TCP nunca atingiu massa crítica.

    
por 05.07.2009 / 14:15