Jump to content

TCP Handshake com python socket


Guest gnoo

Recommended Posts

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 to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...