My knowledge of network programming is limited, so all comments are more than welcome. Essentially, my question boils down to the following question:
Q1. Is there really such a thing as a decentralized asynchronous cross-platform peer-to-peer communication?
Let me explain.
If we have two http-servers running on computers with actual IP addresses, then it is clear that yes, assuming that one writes a protocol for interaction.
To take another step, if one of them (or both) is located behind the router, then port forwarding can still be established. However, problems begin here, because if someone wants to run such a server in the background, say, in a mobile phone, an application that relies on this server really works when you have it at home (we canβt rely on it everywhere we go).
But even beyond that
- Q2
. Do mobile phones really get the actual IP address from telecommunications companies when someone is not using Wi-Fi?
- If this is the case, then it is obvious that you can have cross-platform asynchronous peer-to-peer communication through the use of Wi-Fi when starting the http-server on the smartphone. (I understand that this is not convenient, but it is certainly possible.)
In conclusion, two (perhaps more) relevant questions that I can think of are as follows:
According to the answer for Skype, he says: If one of the callers or both of them does not have a public IP address, they send voice traffic to another online Skype node via UDP or TCP. Thus, it seems that there is no direct communication in Skype, because for such a scenario they need to use man-in-the-middle.
As for Viber, I could not find a good answer to this specific question. Do people talk to each other through a centralized Viber server or do they establish a direct connection? Of course, if they establish a direct connection, then I really want to know how they manage this situation, since the mobile phone may or may not have a physical address. How is a Viber message directed to my cellphone from my friend, even when Viber is down, and I'm behind the router?
I think that the response to Viber really causes notifications, but, as I understand it, all push notification options are based on open connections, and then the application servers send notifications to clients through such a connection (c). Thus, this approach gives us the feeling that it is asynchronous, but essentially it is not. We are deceiving, in the sense that there is a constant open connection to the server, and moreover, as I understand it, the application server must push a notification through this server. Schematically:
A> Central application server> Central server with an open connection to a mobile phone> me
Thus, this again is a centralized approach.
Honestly, the only approach I can come up with, both decentralized and asynchronous (on mobile phones), is to run an HTTP server on each platform / device, but this happens due to the use of Wi-Fi and assuming that the telecommunications company really appoints The physical IP address for each mobile phone (which I donβt know is this true?).
What about WASTE, darknets, F2Fs, etc.? Do they offer benefits in terms of more direct asynchronous communication between some stakeholders? Are there real-world applications (including mobile phones) that use such approaches for communication.
Indeed, this is not a real problem that I would like to work on, but I would like to know what the current state is, so that I can understand how I can proceed from there. So, all comments are really more than welcome. If you have links to the prior art, I would like to know about them, but a brief description will also be nice.
I appreciate your time and efforts in advance.