-
UDP Hole punching
Bonjour,
Je cherche un mettre en place un UDP Hole punching.
Il s'agit d'une technique qui permet d'établir une connexion directe entre 2 clients situé derrière leurs NAT et FireWall respectifs sans utiliser de relais.
Un serveur est quand même là pour informer les clients de l'existance de l'autre client.
Je ne trouve que peu d'information à ce sujet et aucun code source.
Je tiens à le faire en C avec winsock2 si possible.
Si quelqu'un à déjà mis un tel mécanisme en place, je serais ravis qu'il m'explique comment est-ce qu'il a fait.
Merci.
-
cest une astuce relativement simple a comprendre, quest-ce qui te bloque?
il faut savoir que ce nest pas une solution miracle, que ca ne marche pas toujours (pour tout un tas de raisons compliques) et que je trouve ca franchement crade
-
Lorsqu'un client A envoi un paquet UDP à un client B, cela provoque le perçage du routeur du client A.
Le paquet arrive au niveau du routeur du client B. Celui-ci n'attendant pas de paquet du client A, envoi un paquet provenant du client B vers le client A avec le protocole ICMP indiquant que le port de destination n'attend pas de paquet.
Ce paquet referme le perçage du routeur du client A faite précédament.
Ensuite, lorsque le client B envois une fausse réponse au client A, il se retrouve dans le même cas vu que le routeur n'est pas percé.
Je ne vois pas comment est ce qu'il est possible d'établir la connexion entre 2 clients situé derrière derrière leur routeur respectif.
Si quelqu'un a un code source qui fonctionne, j'aimerais bien le voir.
-
en faisant intervenir un server tiers.
le client A envoie un paquet au server Tiers C : "le routeur de A est percé"
le client B envoie un paquet au server Tiers C : "le routeur de B est percé"
le Serveur C informe les clients A et B qu'ils peuvent se mettre en relation
A deviens serveur et B client en utilisant les trous fait précédemment.
maintenant de plus en plus de routeurs bloquent ces "attaques"