How VirtualHere communicates via the Network

VirtualHere essentially takes the USB signals from a USB device and converts those signals into data packets that are sent over an IP network to a remote client. The USB signals are then recreated on the remote client transparently, giving the effect of direct access to a remote USB device. Once the USB signal is captured by the VirtualHere server it is converted to data packets and sent out to clients via one (or more) of the methods described here:


TCP


The TCP/IP protocol is a very common transmission protocol used for network communications. It will provide a reliable way (no signal errors) when sending data over a network. The VirtualHere server by default will listen on TCP port 7575 for incoming client connections. Once the client connection is established the USB signals are placed into TCP packets on port 7575 to the remote client. The TCP protocol generally provides good performance, however it wont prevent eavesdropping, and a connection may not work over the internet if one or both of the peers are behind a NAT.


SSL



This connection type is similar to TCP however it provides an extra layer of security by encrypting the TCP packets on the network. It encrypts these packets using a Public/Private key and certificate which is generated or purchased from a Certificate Authority. When the connection is made between the client and server the session will be initiated by signing packets with a private key on the server. The client also has a copy of the server's public key only, to verify the server is indeed who it claims via its certificate. An encryption token is negotiated between the two sides and all further communicate is done using this token, thereby preventing evesdropping of the signal between the client and server. You can read more about setting up SSL here


UDP (EasyFind)



This connection type is good for high latency or error prone network conditions or peers behind a NAT or without a static IP address. The VirtualHere server can use this protocol via the EasyFind system and will provide a reliable communication channel via this protocol. This protocol is much better at connecting peers behind a NAT or a basic firewall because the UDP protocol does not use permanent network connection between the peers. It works by the virtualhere server and client both connecting to the VirtualHere EasyFind server on the internet and then asking for the address of the other peer. Once the address is obtained then the server and client negotiate a direct connection between each other and the EasyFind internet server plays no further part. To read more about the EasyFind system go here

If you have any questions please post them below