Quem conhece o three-way handshake
:
Mas aí eu tenho uma dúvida, nas 3 etapas, o Host A(Client) e o Host B(Server) vão pegar recurso? Quero dizer o recurso de CPU e o recurso de memória.
se houver recurso, qual passo detalhado será necessário?
Ouvi dizer que criará variável, qual etapa de detalhe irá criá-la? tal como, está entre Host B SYN recebido e Enviar SYN, ACK criar variável ?
Ambos os hosts consumirão alguma memória para rastrear a conexão semiaberta assim que o handshake começar. No entanto, o cliente também consumirá alguma memória assim que o programa inicializar o "soquete" que representa a conexão, mesmo antes de qualquer pacote ser enviado.
Da mesma forma, assim que o servidor receber o pacote SYN, ele alocará alguma memória para acompanhar os parâmetros da conexão.
Enviar um grande número de SYNs para esgotar os recursos do servidor é, na verdade, um ataque comum chamado SYN flood . Em resposta a isso, alguns servidores possuem um modo "SYN-cookie" que não mantém os recursos alocados após o envio da resposta SYN+ACK; ele pode descartar as informações até que o ACK do cliente chegue, momento em que o servidor começa a rastrear a conexão normalmente.
Do ponto de vista da programação, todo o handshake acontece em uma única etapa. No entanto, quando você está escrevendo um cliente, a variável que representa essa conexão é atribuída antes de solicitar ao sistema operacional que execute o handshake.
Ao escrever um servidor, é o oposto. O soquete de "escuta" é configurado primeiro, mas cada conexão individual recebida é primeiro aceita pelo sistema operacional (realizando o handshake) e só então fornecida ao programa.