Introducing the guacamole

Guacamole implementation and architecture

Guacamole is not a stand-alone Web applications, but is composed of many parts. Web applications are actually the entire project in the amount of the smallest and lightest, most functions rely on underlying components Guacamole to complete.

  1. Guacamole user connects to the server through a browser. Guacamole client is written in javascript, Guacamole server to provide services to users through a web container (such as tomcat). Once loaded, the client and server carrying the communication protocol defined by their Guacamole http.

  2. Web applications are deployed Guacamole server side, and resolves to Guacamole protocal, speak to the agent guacd Guacamole's, the proxy (guacd) is actually parsed Guacamole protocal, for users to connect to a remote machine

  3. Guacamole protocal agreement itself and the presence of guacd to achieve a transparent protocol: Guacamole client (browser running js) and Web applications do not need to know which specific agreements with Remote Desktop (VNC, RDP etc)

Guacamole protocal agreement

Web applications are not aware of any remote desktop protocol. Application does not contain support for VNC, RDP and other protocols Guacamole module. Applications need only understand Guacamole protocal protocol that supports rendering and display messaging. Although Guacamole protocal of these functions with a remote desktop protocol similar, but the design principles of Remote Desktop Protocol and Guacamole protocal behind is not the same: Guacamole protocal is not to achieve a particular function remote desktop environment.

Guacamole protocal as a remote display and interaction protocols to achieve a superset of the existing remote desktop protocol (superset). To make Guacamole support a new Remote Desktop Protocol (such as RDP), need to write an intermediate layer (middle layer) to achieve the conversion Guacamole protocal and this new agreement. Achieve the realization of such a conversion mechanism and local clients remote access to the desktop makes no difference, the only difference is that this conversion is to be rendered remote display (browser), instead of the local client (such as real vnc).

Yes, this intermediate layer to achieve mutual protocol conversion is guacd.

guacd

guacd Guacamole is the "heart" of a dynamic plug-in support for Remote Desktop Protocol, Remote Desktop to connect to Web applications according to instructions sent by.

guacd and Guzcamole is being installed with the machine in order to reside in the form of background processes to provide agency services, receives Tcp connections from Web applications. guacd also do not know the specific Remote Desktop Protocol, it just needs to decide to load the plug-in and transfer certain parameters to the plug. (This plugin is used to resolve specific Remote Desktop Protocol) Once the plug-in is loaded, plug-in guacd independent operation, with absolute control over the Web applications and conversation between himself (conmunication), until the plug is closed.

Web Applications

Dealing with the user in Guacamole is a Web application.

Said before, Web applications, it does not implement any of the Remote Desktop Protocol. Web applications rely guacd, concerned only with the beautiful interface and certification authority.

Web applications written in the Java language, yes, if you want, can use other language. Because, in fact, Guacamole is designed to API, we encourage developers to use the API to develop their own applications.

VNC Client

Once in contact with the developers of HTML5 canvas tag, you will find this label Firefox and Chrome already support, and began to replace what VNC client called Javascript implementation of the end.

Fully achieved using javascript java client server plus components, working principle is based on the VNC protocol converted to the same version of XML. Such an implementation is limited by the characteristics of the VNC, a connection can not be transmitted to the plurality of users. Project conceptual need a good online environment, though the development of a little lag, VNC client a HTML5 has to "Guacamole" name registered on SourceForge.

When Guacamole slowly evolved to become more than just a product on the concept, rapid growth in demand, as in the past, like RealMint take long polling XML solution was slowly abandoned.

Because Websocket at this time can not be completely trusted, Java servlets there is no standard Websocket of an alternative solutions have emerged based on HTTP tunnel.

Remote Desktop Gateway (Remote Desktop Gateway)
a faster text-based protocol is proposed, it can support most of the existing remote desktop protocol, not just VNC. The entire system has been redesigned into a standard daemon process (guacd) and a number of public libraries (libguac), can be extended to support Remote Desktop Protocol.

This project from a full VNC client expanded into a high-performance HTML5 Remote Desktop Gateway and Universal API. Currently, Guacamole is used as a central gateway can support any number of connections, remote desktop machine running different protocols. Certification system to provide scalable, so you can do some specific adaptation, Guacamole also provides a common API Html5 remote user connections.

Guess you like

Origin www.cnblogs.com/yanghehe/p/12308239.html