What is the difference of TCP, UDP and ICMP?

TCP (Transmission Control Protocol) is the most commonly used protocol on the Internet. The reason for this is because TCP offers error correction. When the TCP protocol is used there is a “guaranteed delivery.” This is due largely in part to a method called “flow control.” Flow control determines when data needs to be re-sent, and stops the flow of data until previous packets are successfully transferred. This works because if a packet of data is sent, a collision may occur. When this happens, the client re-requests the packet from the server until the whole packet is complete and is identical to its original. TCP is not the recommended protocol to use on a VPN specially if your internet connection is unstable and slow.

UDP (User Datagram Protocol) is another commonly used protocol on the Internet. UDP is commonly used for streaming audio and video. Streaming media such as Windows Media audio files (.WMA) , Real Player (.RM), and others use UDP because it offersspeed! The reason UDP is faster than TCP is because there is no form of flow control or error correction. The data sent over the Internet is affected by collisions, and errors will be present. Remember that UDP is only concerned with speed. This is the recommended protocol to use for a VPN since it is much faster and has no problem like the TCP’s retransmission algorithm. Any collisions and errors that occurs on the transmission is not a problem on UDP since those will be properly handled by the IP stack. 

ICMP or Internet Control Messaging Protocol is a network protocol useful in Internet Protocol (IP) network management and administration. ICMP is a required element of IP implementations. ICMP is a control protocol, meaning that it designed to not carry application data, but rather information about the status of the network itself. The best known example of ICMP in practice is the ping utility, that uses ICMP to probe remote hosts for responsiveness and overall round-trip time of the probe messages. When you ping a remote computer you are actually sending a message called echo request, the remote computer then replies to your message which is called echo reply. 

PD-Proxy’s ICMP VPN tunneling (VPN over ICMP) works by injecting arbitrary data into an echo packet sent to our server. The server replies in the same manner, injecting an answer into another ICMP packet and sending it back. The client performs all communication using ICMP echo request packets, while the PD-Proxy server uses echo reply packets. This is the second recommended protocol if pings are allowed on your network since ICMP behaves more like UDP.