Difference Between TCP and UDP Protocol

Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

9/14/2015

9DifferencebetweenTCPandUDPProtocolJavaNetworkInterviewQuestion

T HUR SD A Y , J UL Y 17, 2014

9 Difference between TCP and UDP Protocol Java Network Interview


Question
TCP and UDP are two transport layer protocols, which are extensively used in internet
for transmitting data between one host to another. Good knowledge of how TCP and
UDP works is essential for any programmer. That's why difference between TCP and
UDP is one of the most popular programming interview question. I have seen this
question many times on various Java interviews , especially for server side Java
developer positions. Since FIX (Financial Information Exchange) protocol is also a TCP
based protocol, several investment banks, hedge funds, and exchange solution
provider looks for Java developer with good knowledge of TCP and UDP. Writing fix
engines and server side components for high speed electronic trading platforms needs
capable developers with solid understanding of fundamentals including data
structure, algorithms and networking. By the way, use of TCP and UDP is not limited
to one area, its at the heart of internet. The protocol which is core of internet, HTTP
is based on TCP. One more reason, why Java developer should understand these two
protocol in detail is that Java is extensively used to write multithreaded, concurrent
and scalable servers. Java also provides rich Socket programming API for both TCP and
UDP based communication. In this article, we will learn key differences between TCP
and UDP protocol, which is useful to every Java programmers. To start with, TCP
stands for Transmission Control Protocol and UDP stands for User Datagram Protocol,
and both are used extensively to build Internet applications.

Difference between TCP vs UDP Protocol


I love to compare two things on different points, this not only makes them easy to
compare but also makes it easy to remember differences. When we compare TCP to
UDP, we learn difference in how both TCP and UDP works, we learn which provides
reliable and guaranteed delivery and which doesn't. Which protocol is fast and why,
and most importantly when to choose TCP over UDP while building your own
distributed application. In this article we will see difference between UDP and TCP in
9 points, e.g. connection setup, reliability, ordering, speed, overhead, header size,
congestion control, application, different protocols based upon TCP and UDP and how
they transfer data. By learning these differences, you not only able to answer this
http://javarevisited.blogspot.in/2014/07/9differencebetweentcpandudpprotocol.html

1/6

9/14/2015

9DifferencebetweenTCPandUDPProtocolJavaNetworkInterviewQuestion

interview question better but also understand some important details about two of
the most important protocols of internet.

1) Connection oriented vs Connection less


First and foremost difference
between them is TCP is a connection
oriented protocol, and UDP is
connection less protocol. This means
a connection is established between
client and server, before they can
send data. Connection establishment
process is also known as TCP hand
shaking where control messages are
interchanged between client and
server. Attached image describe the
process of TCP handshake, for
example which control messages are exchanged between client and server. Client,
which is initiator of TCP connection, sends SYNmessage to server, which is listening
on a TCP port. Server receives and sends a SYNACK message, which is received by
client again and responded using ACK. Once server receive this ACK message, TCP
connection is established and ready for data transmission. On the other hand, UDP is a
connection less protocol, and point to point connection is not established before
sending messages. That's the reason, UDP is more suitable for multicast distribution of
message, one to many distribution of data in single transmission.

2) Reliability
TCP provides delivery guarantee, which means a message sent using TCP protocol is
guaranteed to be delivered to client. If message is lost in transits then its recovered
using resending, which is handled by TCP protocol itself. On the other hand, UDP is
unreliable, it doesn't provide any delivery guarantee. A datagram package may be lost
in transits. That's why UDP is not suitable for programs which requires guaranteed
delivery.

3) Ordering
Apart from delivery guarantee, TCP also guarantees order of message. Message will be
http://javarevisited.blogspot.in/2014/07/9differencebetweentcpandudpprotocol.html

2/6

9/14/2015

9DifferencebetweenTCPandUDPProtocolJavaNetworkInterviewQuestion

delivered to client in the same order, server has sent, though its possible they may
reach out of order to the other end of the network. TCP protocol will do all
sequencing and ordering for you. UDP doesn't provide any ordering or sequencing
guarantee. Datagram packets may arrive in any order. That's why TCP is suitable for
application which need delivery in sequenced manner, though there are UDP based
protocol as well which provides ordering and reliability by using sequence number and
redelivery e.g. TIBCO Rendezvous, which is actually a UDP based application.

4) Data Boundary
TCP does not preserve data boundary, UDP does. In Transmission control protocol,
data is sent as a byte stream, and no distinguishing indications are transmitted to
signal message (segment) boundaries. On UDP, Packets are sent individually and are
checked for integrity only if they arrived. Packets have definite boundaries which are
honoured upon receipt, meaning a read operation at the receiver socket will yield an
entire message as it was originally sent. Though TCP will also deliver complete
message after assembling all bytes. Messages are stored on TCP buffers before
sending to make optimum use of network bandwidth.

5) Speed
In one word, TCP is slow and UDP is fast. Since TCP does has to create connection,
ensure guaranteed and ordered delivery, it does lot more than UDP. This cost TCP in
terms of speed, that's why UDP is more suitable where speed is a concern, for
example online video streaming, telecast or online multi player games.

6) Heavy weight vs Light weight


Because of the overhead mentioned above, Transmission control protocol is
considered as heavy weight as compared to light weight UDP protocol. Simple mantra
of UDP to deliver message without bearing any overhead of creating connection and
guaranteeing delivery or order guarantee keeps it light weight. This is also reflected
in their header sizes, which is used to carry meta data.

7) Header size
TCP has bigger header than UDP. Usual header size of a TCP packet is 20 bytes which
is more than double of 8 bytes, header size of UDP datagram packet. TCP header
http://javarevisited.blogspot.in/2014/07/9differencebetweentcpandudpprotocol.html

3/6

9/14/2015

9DifferencebetweenTCPandUDPProtocolJavaNetworkInterviewQuestion

contains Sequence Number, Ack number, Data offset, Reserved, Control bit, Window,
Urgent Pointer, Options, Padding, Check Sum, Source port, and Destination port.
While UDP header only contains Length, Source port, Destination port, and Check
Sum. Here is how TCP and UDP header looks like :

TCP Header Format

UDP Header Format

8) Congestion or Flow control


TCP does Flow Control. TCP requires three packets to set up a socket connection,
before any user data can be sent. TCP handles reliability and congestion control. On
http://javarevisited.blogspot.in/2014/07/9differencebetweentcpandudpprotocol.html

4/6

9/14/2015

9DifferencebetweenTCPandUDPProtocolJavaNetworkInterviewQuestion

the other hand, UDP does not have an option for flow control.

9) Usage and application


Where does TCP and UDP are used in internet? After knowing key differences between
TCP and UDP, we can easily conclude, which situation suits them. Since TCP provides
delivery and sequencing guaranty, it is best suited for applications that require high
reliability, and transmission time is relatively less critical. While UDP is more suitable
for applications that need fast, efficient transmission, such as games. UDP's stateless
nature is also useful for servers that answer small queries from huge numbers of
clients. In practice, TCP is used in finance domain e.g. FIX protocol is a TCP based
protocol, UDP is used heavily in gaming and entertainment sites.

10) TCP and UDP based Protocols


One of the best example of TCP based higher end protocol is HTTP and HTTPS, which
is every where on internet. In fact most of the common protocol you are familiar of
e.g. Telnet, FTP and SMTP all are based over Transmission Control Protocol. UDP don't
have any thing as popular as HTTP but UDP is used in protocol like DHCP(Dynamic
HostConfigurationProtocol)and DNS(DomainNameSystem). Some of
the other protocol, which is based over User Datagram protocol isSimple Network
Management Protocol (SNMP), TFTP, BOOTPand NFS(early versions).

That's all about difference between TCP and UDP protocol. Always remember to
mention that TCP is connection oriented, reliable, slow, provides guaranteed delivery
and preservers order of messages, while UDP is connection less, unreliable, no
ordering guarantee, but fast protocol. TCP overhead is also much higher than UDP, as
it transmits more meta data per packet than UDP. It's worth mentioning that header
size of Transmission control protocol is 20 bytes, compared to 8 bytes header of User
Datagram protocol. Use TCP, if you can't afford to lose any message, while UDP is
better for high speed data transmission, where loss of single packet is acceptable e.g.
video streaming or online multi player games. While working in TCP/UDP based
application on Linux, it's also good to remember basic networking commands e.g.
telnetand netstat,they help tremendously to debug or troubleshoot any
connection issue.

http://javarevisited.blogspot.in/2014/07/9differencebetweentcpandudpprotocol.html

5/6

You might also like