There are various ways of sending data over IP – TCP, UDP, DCCP, SCTP, RSVP and more. We will focus our attention on the two that are most used – the UDP (User Datagram Protocol) and the TCP (Transmission Control Protocol).
UDP and TCP
Both protocols are used to send packets of data over the internet. They do that on top of the IP protocol, which means that they direct the packets to IP addresses. They are treated very similar on their way from the users’ computers, through the routers and all the way to the end destination.
TCP is a widely used protocol. When you make a request for a website from your browser, it will most probably use exactly TCP protocol to send the data packets to the server. For every request you send (every action you take on the web page like click, sign in, etc.) you will receive TCP packets back.
TCP is orientated to the reliability. All the data sent over TCP is tracked, and no data gets corrupted or lost on the way. The protocol numbers the packets and does error checking by pushing the receiver to confirm that it got the data.
This protocol is all about speed. All those checking of the packets slow down the communication and create latency. By using UDP, the receivers don’t need to confirm the packets; the sender just continues sending without wasting extra time to receive feedback. In this communication, the receivers lose some of the packets, but it doesn’t stop the communication. This makes it perfect for live streaming or online games, even if the connection stops for a bit and the screens of the receivers freeze, in a moment they will receive the next packet, and everything will continue.
Why does DNS use UDP?
As you just read, the UDP is unreliable but a lot faster than TCP, but don’t panic just yet. DNS requests are very tiny, so they have no problems fitting into the UDP segments.
It doesn’t use a time-consuming three-way hand-shake procedure to start the data transfer like TCP does. The UDP just transmits the data and save plenty of time.
UDP can support many more client at the same time thanks to the lack of connection state. The TCP has Receive and Send buffers, Sequence and Acknowledge Number Parameters and congestion-control parameter.
Don’t think it is so dangerous using UDP, you can add extra protection on the application layer. An application can use it and it can be reliable by using timeouts and resend at the application layer.
In the DNS world, we are trying to cut the resolving time as much as possible. Seconds is an eternity, we want to reduce the time to just a few milliseconds. TCP is more secure, but it just can’t keep up with the UDP, and about protection, there are extra ways of adding it. So, in the end, you get them both – speed and protection.