I want to know How does Adobe Stratus work? to get an idea of how to do something like it on my own. So what net hack Stratus uses to work like it works?
How does Adobe Stratus work?
2.8k views Asked by Rella AtThere are 3 answers
I'm not familiar with adobe stratus, but as far as I can tell this is very equivalent to the way normal NAT traversal works in for instance SIP. You can have a look at the STUN article on wikipedia to get started. In short, you set up one naming server and use keepalive client-initiated connections to a mediating server or UnPnP to open up ports for the clients. Situations where both clients are NAT:ed are tricky, although UnPNP would work for these situations.
EDIT: A description of the Skype protocol is available here
Adobe calls Stratus a "rendezvous" service. The story goes like this, Version 10 onwards Flash player instances can directly connect to each other (peer-to-peer) using a proprietary protocol called RTMFP.
However for one flash app instance to connect to another, it needs the address of the flash app instance. Every flash app instance can get its own address / fingerprint / nearId by connecting to Adobe stratus. Once a client gets its own nearId, it needs to share it with other clients. Once a flash app instance has another flash app instance's nearId, it can connect and listen in to the other flash app instance stream.
A common hack used by P2P software is a method called holepunching. This is used to bypass NAT.
When a network uses NAT, you are unable to connect to a computer within the network, from outside of the network, thus making it impossible to make P2P connections.
Say you have two computers, A and B, located in different parts of the world, both behind NAT. To establish a P2P connection A and B will connect to a Stratus server. This connection will open a port in A and B's routers. The stratus server will know these port numbers and will share this information with A and B. A and B can then make a connection to each others open ports thus establishing the P2P connection.