Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

Developper une application VOIP!

Bonjour!

Je suis sur un projet de creation d'une application de VOIP fonctionnant sur la bse d'un protocole SIP que je dois moi meme implemanter.

Pour le projet, voici les exigences generales:
- L'application doit etre protable sur windows et linux
- le protocole de communication doit etre binaire
- la communication client-client se fera en UDP et client-serveur en TCP
- Je n'ai droit a aucune librairie SIP existante

Alors mon probleme reside au niveau de la gestion des adresses IP natees.

Dna sma conception actuelle, mon serveur permettra l'enregistrement et l'authentification des utiliateurs via une base de donnees interne. Comment puis-je faire pour que :

- Mon serveur situe a un coin du monde et coonnecte a internet , mes clients situes a des zones distantes et diferentes du monde, puissent echanger les informations de maniere a ce que un client puisse etablir une connexion directe a un autre, ou que plusieurs clients puissent echanger a la fois via le mode conference?

- Sur internet les adresses sont natees et je sais que les routeurs/passerelles de chaque reseau sauront rediriger les paquets, mais comment un client se connecte a un autre client distant (sur un autre reseau) avec un port?

- J'ai prevu d'implementer un mode proxy pour serveur, qui permettra de gerer le probleme d'adresses ip natees, afin de permettre l'interconnexion entre clients sur la base d'informations recues du proxy (Adresse ip du destinataire a joindre, port d'ecoute...). Mais quelles adresses ip les clients utiliseront etant donne que chaque client possede une ip prive sur le reseau ou il se trouve?

- Comment je vais gerer mes sockets dans ce projet? De la meme facon que pour les applications fonctionnant en local?

J'espere que je ne suis pas tres difficile a comprendre, si oui mon probleme se resoud a ceci:
Quel protocole puis-je mettre en place pour transmettre la voix, le texte et la video entre clients distants et entre clients et mon serveur sur internet? Quelle architecture logicilelle me proposeriez-vous, avec les contraintes materielles/reseau a respecter cote client et serveur (Comment implementer le mode proxy sur le serveur, gerer les communbications client-client direct sans relai par le serveur, gerer les conferences(communication un a lpusieurs)).

Je n'ai pas encore de probleme au niveau du code, j'ai plutot besoin a travers votre assistance, de peaufiner la conception de mon projet afin de bien le realiser.

Merci infiniment pour votre aide.
Bonjour!

J'avoue que le contenu de mon thread n'était surement pas adapte au forum, qui lui est fait pour les questions de réseau et de non de programmation. Je m'excuse déjà si je me suis mépris dans mon premier post et je vais ici reformuler mon premier message.

En effet je me suis davantage bien penche sur l'architecture du système que je vais mettre en place. Et les choses sont de plus en plus clair en théorie.
Toutefois cote réseau, il y a une question que je ne m'étais jamais réellement posée jusqu'à ce jour, et malgré mes compétences en réseau je n'ai pas pu répondre a ma question.

En effet je me demande comment les communications sont gerees sur internet, en envoie et en reception. Pour ma part j'ai jusqu'ici configure des routeurs pour rediriger des connexion sortantes, faire du NAT... Pour les connexions entrante j'ai souvent fait des redirection sur le routeur en lui indiquant explicitement vers quelle adresse locale rediriger une requete arrivant sur tel ou tel autre port.

Alors la question que je me pose est celle-ci: Comment un paquet/message parvient a transiter sur internet jusqu'à une application spécifique d'un ordinateur spécifique d'un réseau prive distant, sans qu'aucune redirection soit faite sur le routeur d'entrer? Je prends un exemple sur les applications de messagerie instantanée, chat.

Quand le développeur crée son application, il la met a la disposition des utilisateurs qui la téléchargent et peuvent l'installer sur leur machine pour l'utilise sur n'importe quel réseau du monde connecte a internet et communiquer.

A priori un client ne sait pas exactement quelle adresse ip un autre utilise sur internent, il ne connait que son login sur le système qu'ils utilisent, par contre il est évident qu'il y a un serveur de cette application localiser quelque part dans le monde et possédant une adresse publique ou un nom (yahoo par exemple) .

Le serveur possède surement la liste de tous les clients connectés, qui se seraient au préalable enregistrés ou authentifiés auprès de lui. Mais seulement, les clients eux sont sur des réseaux ou ils n'ont forcement pas autorité, ou l'utilisateur a par exemple juste connecté un cable rj45 a un switch et obtenu une adresse par DHCP. et une passerelle par défaut bien sur.

Comment ce dernier (le client) une fois connecte a internet, via le routeur du réseau ou il se trouve, parvient a recevoir des message des autres, alors que administrateur du reseau ou il se trouve n'a fait aucune redirection pour lui sur son routeur (puisqu'il est simple utilisateur du réseau comme tout le reste et n'offre aucun service externe pour ce réseau, il utilise juste la connexion internet)? Comment un message part depuis une application précise de l'hôte source situe sur un réseau prive, jusqu'à une application spécifique sur un hôte de destination?

Qu'est ce qui permet exactement aux routeurs internet, dans les en entête des paquets de déterminer que ce paquet va un hote parmi tant d'autres sur un réseau privé, et vers une application spécifique parmi tant d'autres application tournant en même temps sur l'hote. J'espere que vous ne m'enverrai pas vers les couche OSI, car on passe tous par la a la base, mais la j'ai un problème plus profond qui est de savoir, ce qui rassure un programmeur que lorsqu'il aura bien concu son application, elle marchera sur internet de n'importe quel réseau connecte sur internet, et ce de maniere generique sans contrainte sur la localisation des utilisateurs?

C'est a ce niveau que je cherche le déclic, je veux comprendre comment ca se fait cette communication instantanée entre des clients sur internet (Je parle de clients car pour les serveurs ca se comprend, on peut faire des redirections vu qu'ils offrent des services qui sont connus de l'administrateur, et des fois possèdent des ip publiques ou des enregistrements dns). Je tiens tellement a comprendre le mécanisme client-client a travers internet, je me suis rendu compte depuis quelques jours que je dois moi même permettre a deux personnes de communiquer sur internet sans se connaitre en termes d'adresse, que c'est un cote du réseau qui n'est pas encore bien claire a mon niveau.

J'espère que cette fois ma question est une plus concise et ne mélange pas les domaines, car la je suis vraiment au niveau de la communication sur le réseau internet, et je pense que la bonne compréhension de ce point m'aidera pour les choix que je ferai dans la réalisation de mon projet.

J'espère pouvoir compter sur votre collaboration, et je vous remercie pour votre attention.

Merci et a très bientôt.
Salut!

Je veux juste dire que j'ai fini par trouver les bonne reponses aux questions que je me posais. je ne sais pas si c'est la flemme qui m'a pousser a rester un peu con pendant tant d'heures.

Je m'excuse d'avoir un peu perturbe le forum avec ma question. En fait c'est simple je pense, on pourra tout faire en applicatif, mais pour acceder a un ordinateur en privee derriere un routreur et n'ayant pas autorite sur le reseau ou il se trouve, il faudrait soit que l'on n'ait fait une redirection specifique sur cet ordinateur au niveau du routeur, soit faire du VPN, IP fixe ou autre manip de ce genre, ce qui n'est pas trop le but de mon projet, qui est surtout de pouvoir faire circuler differents types de donnees sur un reseau, et non interconnecter les reseaux a priori.

Pour ceux qui ne sont pas tres experimentes en reseau et que mon post a failli derouter, ce n'etait vraiment pas une question a poser en reseau, ou si oui pas de cette facon.

Je souhaiterai donc qu'on remette le compteur a zero pour ce post, je m'arrangerai a faire marcher les choses d'abord en local, et apres pour l'extension ce sera autre chose, car ca releve exclusivement du reseau dans ce cas et je reviendrai vers vous s'il faut.

Merci pour votre patience et une fois de plus pardon d'avoir perturbe le forum.