Instead
of relaying messages, we can relay connections. This way the relay is
completely agnostic to whatever the service is doing, which is good because
that will allow a wide range of services to be relayed without being known or modified
at all. Case in point could be Remote Desktop. We couldn’t possibly change
remote desktop, or we are interested in knowing the details of the protocol.
But if we relay the whole connection, we can make it possible to relay any
service on top of TCP.
With
just a tiny twist from above, this can be easily done.
Step
1) The relay client service, live in the internal network, make a TCP
connection to the Azure relay server service.
Step
2) The Azure relay server service make itself available to the Internet.
Step
3) When Azure relay server service receives a connection, it sends to the relay
client service through the connection it established.
Step
4) The relay client service connects to the internal service
Step
5.1) If the Azure relay server service receive a message, it sends to the relay
client service and the relay client service send to the connection.
Step
5.2) If the relay client service receive a message, it sends to the Azure relay
server services and the Azure relay server services send to the client.
Step
6.1) If the Azure relay server service receive a connection close, it sends to
the relay client service and the relay client service close the connection.
Step
6.2) If the relay client service receive a connection close, it sends to the
Azure relay server service and the Azure relay server service close the
connection.
That
is something I wanted to build.
No comments :
Post a Comment