Ir para conteúdo

TCP Handshake com python socket


Visitante gnoo

Posts Recomendados

Saudações,

o objetivo deste tópico é consolidar conhecimentos aumentando as minhas competências pessoais, e também deixar alguma informação a outros utilizadores que muito provavelmente fazem uso da biblioteca socket do python, e executam um handshake cada vez que criam uma conexão e muito provavelmente nem dão por isso.... eu não vou aprofundar muito a questão com promenores tecnicos porque não tenho competências nem conhecimentos para tal, mas fica uma explicação bastante genérica e concisa com o pouco que sei que para alguns pode ser um ponto de partida para que possam alargar horizontes.

De uma forma grosseira podemos dizer que um handshake ocorre no protocolo TPC resultado de uma negociação  entre dois dispositivos podendo dar como exemplo um cliente e um servidor, onde ocorre um troca de pacotes entre eles, esses pacotes estão associados a um cabeçalho que contém um campo com informação de uma flag que é enviada, essas flags indicam o inicio de comunicação, a aceitação da comunicação neste caso do cliente com o servidor, e também são definidas flags para que seja terminada essa sessão.

Cabeçalho TCP

cab_flag.png.878ceb4230afb2eac8fb55b557baf6c3.png

 

Os requisitos para este exemplo são a idle do python ou um editor de texto a vossa escolha, e o wireshark para observar essa troca de pacotes com as respetivas flags.

Código python

521703863_Capturadeecr_2018-11-10_14-15-43.png.ff2fed4fac14dadb1b3d834931a045cb.png

 

Em seguida devem iniciar o wireshark e escolher a interface da placa de rede que está em uso, e escolher como filtro o TCP, ele vai capturar apenas os pacotes que se deslocam nesse protocolo.

Quando executam o código anterior podem ver que o wireshark capturou alguns pacotes entre o cliente e o servidor, onde podem ser vistas as flags que foram trocadas entre eles para que a conexão fosse efetuada.

1093787160_Capturadeecr_2018-11-10_14-18-28.png.73152ecb3e91bd6df5bd0fde071c3864.png 

 

O que estas flags nos dizem ...

179039267_Capturadeecr_2018-11-10_15-33-36.thumb.png.07f62d6979c6d5f675ee2df1e856d08a.png

 

O que isto mais ou menos nos diz é que o cliente ao enviar a flag SYN pede para iniciar conexão, o servidor envia resposta SYN+ACK como reconheicmento para que a conexão seja efetuada e o cliente envia finaliza com a flag ACK em que reconhece a  resposta enviada pelo servidor.

 

Isto é um handshake efetuado com python mas poderia ser com outra linguagem qualquer.

Se viste algum erro já sabes o que tens que fazer :)

Cumprimentos.

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...