2017-10-05 3 views
0

Je veux écrire une application, qui établit une connexion TCP/IP directe entre deux appareils sur Internet. J'ai un serveur pour échanger des adresses IP et des ports, mais est-ce suffisant pour établir une connexion?Qu'est-ce qui est requis pour une connexion TCP IP directe?

Comment gérer les cas, où les deux périphériques sont sur la même adresse IP (connecté au même point d'accès Wi-Fi)?

En outre, je ne comprends pas comment les ports ouverts sur le périphérique peuvent être accessibles sans paramètres de transfert de port sur hotspot? Y a-t-il une gamme de ports ouverts pour l'utilisation des applications?

Répondre

1

Vous avez raison concernant la redirection de port dans la plupart des cas.

TCP/IP est OSI Layer 4 protocole. Vous devez pouvoir envoyer des données à l'application serveur avec une adresse IP et un numéro de port connus. Maintenant, quand sur Internet, cela peut devenir plus compliqué parce que vous n'interférez pas directement avec l'adresse IP que le reste de l'Internet vous atteint. Ceci est votre adresse IP publique. Le modem que vous avez de votre FAI implémente probablement un NAT , qui transforme votre adresse privée en votre adresse publique. Votre modem va bloquer toutes les requêtes SYN TCP à moins qu'il y ait une règle de transfert spécifique pour cela.

Ceci est juste le cas typique, vous pouvez également regarder dans la configuration de votre modem pour le mode DMZ et même l'implémentation de votre propre proxy inverse comme nginx.

+0

Excellent, mais comment fonctionnent les applications VoIP? Ils ne transfèrent pas toutes les données via le serveur. –

+1

Dépend de l'implémentation. Je crois que VOIP utilise normalement [SIP] (https://en.wikipedia.org/wiki/Session_Initiation_Protocol), un protocole de couche 5. Donc, il ne doit pas utiliser TCP, il peut utiliser n'importe quel protocole de couche 3 qu'il veut. Même avec TCP, il existe de nombreuses architectures différentes, dont certaines sont des serveurs TCP, des clients ou les deux. Jetez un oeil au serveur VoIP Open Source [Asterisk] (https://wiki.asterisk.org/wiki/display/AST/Asterisk+Architecture%2C+The+Big+Picture) pour plus d'informations. –

+0

SIP! C'est le mot que je cherchais! Juste un mot, et maintenant je sais où creuser plus profond! Merci –

0

Je me suis retrouvé avec WebRTC construit sur Firebase.

Donc, réponse réelle à ma question - STUN.