Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between UDP and TCP packets? What do you use them for?

I was configuring IPtable yesterday. My colleague just asked me this question, and I couldn't anwser. I realized that I'm a much better developper than sysadmin and need to improve that.

So what are they? What are they for? Cons/Pros (if it's relevant).

like image 762
e-satis Avatar asked Feb 03 '11 09:02

e-satis


2 Answers

These are like basic questions.

UDP :: User Datagram Protocol

1) No end to end Connection between to machines (may be in local network or somewhere in the internet).

2) The data received at the receiver end is not in stream as in TCP but as a complete block of data.

3) At the transport layer no packet order check is performed. That is in case of any error in the received packet, the receiver will not ask for resending the same packet to the sender.

4) Because of the above behaviour no sending buffers are required at the sender's end.

5) As no end to end connection is estld. and there are no handshakings required, UDP are pretty much faster but less reliable than TCP. Thus mostly used in gaming and DNS etc..

6) No acknowledgement required to be sent after recieiving packets.

TCP :: Transmission control Protocol

1) End to end Connection is maintained between to machines (may be in local network or somewhere in the internet).

2) The data received at the receiver end is a stream in TCP. Thus, when we do network programming for servers we first parse the header first and then depending upon the size mentioned in the header we obtain that much more number of bytes from the buffer.

3) Error checking and sequence number are all done. Thus in case any packet is received out of order (rarely) or is erred than that packet is made to resend. Also, lots of other protocols are involved for flow control (end to end flow control).

4) As connection establishment , handshaking and acknowledgement is to be done TCP are basically slower in operation than UDP.(Not significantly I believe)

5) Lots of protocols uses TCP as underlying transport protocol. HTTP,FTP,TELNET etc..

6) The communication procedure involves:

Server:: 1) Socket Open 2) Socket Bind 3) Socket Listen 4) Socket Accept 5) Socket Send/Recv Client :: 1) Socket Open 2) Socket Connect 3) Socket Send/Recv

There are lots of other differeces also..but the above being the most common ones.

like image 184
Arunmu Avatar answered Oct 21 '22 05:10

Arunmu


TCP is a reliable protocol which ensures that your packets reach their destination and is used in applications where all data must me trasfered accurately between parties. TCP requires both parties to negotiate a connection before data transfer can start and it is a resilient protocol since it will repeatedly resend a packet until that packet is received by the intended recipient.

UDP is unreliable in a sense that it allows some packets to be lost in transit. Some applications of UDP are found in movie streaming where you can actually afford to lose a frame and not jeopardize movie quality. UDP does not need binding between the two parties and is often looked at as a light alternative to TCP.

A nice table is found here:TCP vs UDP

like image 44
Pepe Avatar answered Oct 21 '22 03:10

Pepe