ICA is a flexible and extensible protocol. The protocol is designed to accommodate varying degrees of client capability. During handshaking, the ICA client communicates information including screen resolution, color depth, and cache size. The ICA server re-ceives these parameters from the client and adjusts to this information by providing the appropriate drivers and other settings to make the application perform as though it’s running on a local workstation. This communication allows for a wide variety of ICA clients, ranging from fixed-function monochrome terminals to high-end workstations.
Through its virtual-channel architecture, ICA can be extended to include new data types, such as sound and video. Virtual channels can also be used to support auxiliary client devices such as badge readers, wands, and scanners.
The modular design of the ICA protocol allows the supporting layers below it to be expanded. For example, the existing encryption layer can be augmented with RSA (Rivest-Shamir-Adleman) encryption or DES (Data Encryption Standard) encryption. Converters, such as those converting an ICA protocol to X.11, can be added in, and new transport protocols, such as ATM, can easily be supported.
You can augment ICA with encryption, new transports, and new protocol extensions from third parties.