I always had a doubt why cant i simultaneously run my wifi and my data from my phone to increase my speed if not doing the same tasks i can maybe download an app while simultaneously uploading something on dropbox with another network Is it possible there is only one path in all devices which acts as an interface in data transfer? If thats the case why isnt research and innovation being done to achieve this so that we can simulataneously run tasks and increase speed. I had no idea on which stackexchange site to ask this so if an admin wants to shut this down please also tell me where to post this query
Say there are 2 ISPs (Internet Service Providers) viz XYZ and ABC.
When your gadget connects to XYZ, it establishes connection to the ISP via modem, ISP then assigns an IP address to your gadget, and data packets are sent to & fro to XYZ's servers.
But this is not that simple as mentioned above in 2 sentences. There are a whole lot of procedures running under the hood.
If you wish to switch connection to ABC, then connection to XYZ has to be disconnected, connection to ABC has to be established and the above mentioned procedure is carried out pragmatically by OS.
Further, there are different modems for different connections.
In case you wish to use same modem for another connections, you need to alter the settings inside it.
The whole set of parameters are different for different connections.
So, obviously the 2 connections can't be clubbed.
To give a crude example, if there are 2 trains running parallel, we can't take advantage of combining their speeds and making it double and reaching our destination in half time. We can board only 1 train at one time; of course, both trains need to be stopped for switching between; else jump like a typical hollywood movie ;-)
I believe the problem can actually be split in two.
a) two (many) parallel tasks over different channels (as in your question)
Forcing incoming data to take different paths (channels, interfaces, etc.) is not a hard problem I think. You just need to make requests from different interfaces. To site A with LTE and to site B with Wi-Fi, for example. That will results in sites seeing different source addresses and reply using different paths. But AFAIK there is no mechanism to load balance source address choice in Linux (on which most popular mobile OS is based). Source address choice controlled by /etc/gai.conf, which conform to RFC6724. But, there are some proprietary mechanism which can do some tricks to use both channels for some downloads, see this. Same applies to outgoing traffic of course.
There probably can be some weird situations when one path failed and you got half working network access, and it will be not apparent whats broke. And your device probably need to remember what addresses was used to connect to site A, to not stuck with captchas, firewalls, etc.
b) one task over different channels
That's kinda solved problem. Solved because there are a solution - MP-TCP, kinda beacuse it's not in mainline kernel. You need to build custom kernel and put it in both server and client by yourself. But developers working to put it in vanilla Linux. In MP-TCP hosts exchange available addresses and can multiplex different sessions into one. If you want to learn more about it, this podcast is awesome.