Handshake
Este artigo não cita fontes confiáveis. (Março de 2014) |
Handshake ou aperto de mão é o processo pelo qual duas ou mais máquinas afirmam que reconheceram umas às outras e estão prontas para iniciar a comunicação. O handshake é utilizado em protocolos de comunicação, tais como: FTP, TCP, HTTP, SMB,SMTP,POP3 etc.
Assim você consegue fazer uma conexão entre duas ou mais máquinas só esperando o serviço a ser disponibilizado.
handshake triplo:
Um handshake triplo é necessário porque os números de sequência não são vinculados a um relógio global na rede e os protocolos TCP podem ter mecanismos diferentes para captar o ISN (Initial Sequence Number). O receptor do primeiro SYN não tem meios para saber se este é um segmento antigo atrasado, a menos que tenha registrado o último número de seqüência usado na conexão. Nem sempre é possível lembrar esse número. Assim, o receptor deve pedir ao remetente que verifique esse SYN.
O host (A) inicia uma conexão enviando um pacote SYN para o host (B) indicando que o seu ISN = X: A —> B SYN, seq de A = X
B recebe o pacote, grava que a seq de A = X, responde com um ACK de X + 1, e indica que seu ISN = Y. O ACK de X + 1 significa que o host B já recebeu todos os bytes até ao byte X e que o próximo byte esperado é o X + 1: B —> A ACK, seq de A = X, SYN seq de B = Y, ACK = X + 1
A recebe o pacote de B, fica sabendo que a sequência de B = Y, e responde com um ACK de Y + 1, que finaliza o processo de estabelecimento da conexão: A —> B ACK, seq de B = Y, ACK = Y + 1