4
Bubbles
5y

Okay so anyone experienced working with networking or VOIP applications are welcome to try to help me figure out a few questions I have.

1.) How do VOIP applications like Discord and Skype not have to require you to port forward before use?

2.) If I wanted to do stuff with sockets over the internet the user of the application would have to configure a static IP Address. but when Im using Discord, or a multiplayer game, or literally anything that requires connecting to people I dont have to configure a static IP for those applications but I do for mine?!?

3.) Is there any additional information I should learn about whilst trying to make my networking application (File Transferring application) work? or any links/PDF's I should check out?

These are kinda just things I haven't found answers to, and I didn't know where to ask.

Comments
  • 0
    @FrodoSwaggins I’m gonna need a little more detail xD
  • 0
  • 2
    1) Look up UPnP. It's basically an automated port forwarding setup feature that pretty much any router has (can be disabled).

    2) You don't need a static address, strictly speaking. It's just that if your IP were to change while you're in the middle of a TCP connection, the connection would temporarily break and you'd have to reset it. UDP packets, on the other hand, would simply get lost (or reach whatever new target got assigned your ip).
    Of course, it's uncommon for your ip to change randomly while the connection is in active use - typically it might change after, say, a modem restart.

    When you're connecting to Discord you're always a client connecting to their servers. The fact that you have admin rights within the chatroom at the application level has nothing to do with the network topology.

    3) Look up how TCP (and UDP) work, their features, and the logic behind them
  • 1
    Forgot to mention: the reason why servers want static addresses is that it's a pain in the ass to track ip changes quickly and reliably. Even if you're using a domain and you're constantly updating its DNS records, it's still generally bad.
    Plus, changing ip mid-connection would cause existing connections to break, which is always bad for performance.
    It's like trying to send letters to someone while they're constantly moving house without knowing where they're moving next.
  • 1
    @endor okay a few questions,

    So I know that the discord client connects to the discord servers, and it’s not me actually being an admin, but it’s more I don’t understand how discord configures that computer or even allows itself to do what it can do, while I make a simple version of a networking application that apparently needs all this stuff discord somehow already has taken care of.

    I don’t ever notice my 192.168.x.x IP change and I haven’t set up a static IP, does it change without my knowing?

    I’ve heard the 192.168.x.x IP can’t be used for over internet socket communication, is that true?

    And are there ways to preform these configurations or get the permissions with the program or will the computer automatically know when it needs to give it said permissions/configurations?
  • 2
    @Bubbles the 192.168.x.x IP address is common for local network addresses (within your own home network for example. You can only send messages to other local IPs on your network. Local addresses usually don't change as your router manages them). You also have a public ip address. That one is used for everything going outside your home. It usually doesn't change. Mine changed once in the past 10 years. But some friends of mine get a new one like every day.

    Permissions: you want your user to login with their credentials and then assign and send them a key that they can use in further requests to authenticate. Then you know what user sent the request by their key and find out what permissions they have.
  • 0
    @SuwakoMmh is there a way I can implement UPnP or NAT forwarding into my project? I hate when I have to leave something to the user to configure on their machine/network when I’ve seen all these other apps do the stuff I want to implement without me having to do squat.
  • 0
    @b3b3 my problem is on the whole communication between two sockets over the internet and getting my application to possibly even set up what it needs on its own.
  • 0
    @SuwakoMmh okay I’ll have to look into that thank you :D
  • 1
    Like @FrodoSwaggins mentioned
    There are STUN / TURN public servers that do it for you.
    You can easily find some examples on github.
  • 0
    @vane the application is peer to peer so there’s no server involved
  • 1
    @FrodoSwaggins ok but I know that google for hangouts, apple for facetime and sony for their playstation services are doing it using STUN as voip is all STUN also PBX support stun. Question was about voip and that is basically standard for voip.

    @Bubbles yeah I know what you asked. Read what STUN is.
  • 1
    @vane okay I’ll look into it.
  • 1
    I just leave it here for reference.

    https://stackoverflow.com/questions...
    Edit:
    Also be aware of what MTU limit is.
Add Comment