TCP vs UDP Explained // Lab Example with Wireshark

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Welcome back to the channel packet  people it's great to have you back.   So today we're going to talk about another  topic in the "How TCP Works" series. I realized   something that I hadn't covered looking over this  playlist is the difference between TCP and UDP.   I know that's something that a lot of people  need to know for various certifications   or if they're just getting into packet  analysis and they want to know the difference.   But really, what's the difference between these  two protocols? When would an application use them?   and How can I analyze them in  Wireshark? So stick around. Now if you'd like to follow along with me in  this video, go ahead and click the link in the   description down below and you can download that  trace file, open it up in Wireshark and follow   right along. Now TCP and UDP. You're going to hear  a lot about these two protocols in networking but   what's the difference, when would they be used,  and how do we analyze them? Now there's a lot that   we could go over in these two protocols but just  to keep it simple oftentimes the thing that you're   going to need to remember for that certification  or that interview that you're trying to ace is   that TCP or the transmission control protocol  that's a connection oriented protocol and the user   datagram protocol, UDP, is connectionless. Well  what does that really mean and why do I care? Well   let's get into it in the packets so we can really  see at the packet level what the difference is.   So first of all you can see here I have a couple  of packets here this is just DNS here's my DNS   conversation, and then after that I start up with  the TCP stream. So let's go and take a look at the   DNS first of all. Now if i come down here I can  see I got my layer 2 stuff that's ethernet then   I got my layer 3 stuff so layer 2 ethernet, layer  3 IP, and then layer 4. I'm sitting in the user   datagram protocol. So just clicking this protocol  header over here on the right you can see the   associated bytes that are highlighted and really  UDP is a very simple protocol and that's why an   application would use it: when they don't need  that layer 4 protocol to do a lot of thinking. UDP   is very efficient it's two ports - if we expand  this out - source port, destination port, length,   checksum, that's it. So quick delivery we're not  worried about whether the traffic got there or not   we're not worried about congestion control or how  fast we're transmitting. We just let this packet   go hope it gets to the other side and if we get a  response great. So here we can see a very common   application or service you could say that uses  UDP and that's DNS. So very simple we send our   DNS request over UDP and we wait for our reply to  come back and there we go. Very simple there's no   connection here there's no protocol set up,  very simple. But that doesn't mean that UDP   is just a bad protocol that nothing should  ever use, obviously we're running DNS over it,   and as a matter of fact right now you're  likely watching this very video over UDP.  And that's because UDP is also being used by other  applications that are upstairs that have a lot of   re-transmission smarts and other types of data  recovery features built in. For example QUIC.   So QUIC sits on top of UDP - simple eight byte  header - in order to be able to get into that   kernel on the other side and just make a simple  use of that stack. Okay so UDP connectionless.   Very simple, only eight bytes in the header,  just a source, destination, length, and checksum   and that's it. Now let's flip to TCP. A whole lot  more is going on under the hood with TCP and it's   a whole lot more than just that one certification  answer. It's a "connection-oriented protocol".   While that's true, let's take a look at how  much is going on with TCP. So here we can see   a simple tcp connection, let's go back to our  packets. So here we have a TCP SYN, SYN/ACK,   ACK, three-way handshake. Now why do we need these  three packets? Well TCP unlike UDP is stateful and   what that means it maintains a state on each end.  Each end is aware of this connection, it dedicates   resource to it, and there's a lot of things that  happen on each endpoint, more than just a simple   send and receive. So for example when we establish  a connection, take a look at that SYN. We're not   just opening a port but we're also dedicating  other resources to this connection. So for example   we're beginning to count our sequence numbers, we  have a tcp window which is dedicated resource to   be able to receive tcp data, and also we can see  the other options that a lot of times we'll talk   about in this channel some of the options that are  exchanged in that handshake. Now on the opposite   side as well, we have port numbers, sequence and  acknowledgement numbers so data is being sent data   is being acknowledged, and then we can see also  window size and other options as well. But TCP   is way more than just a handshake. Every single  byte that I transmit is tracked, if you will,   by something that I call a sequence number. If I  send you 100 bytes, you're going to acknowledge   it and let me know that you got each one of those  100 bytes. If something was missed you can let me   know by that acknowledgement number. I can analyze  it and then I can re-transmit any missing data.   Another huge thing that makes TCP different  than UDP is also congestion control. What this   means is I don't want to send data so fast that  I actually cause my own congestion on the network   and basically muscle everyone else out of the  way and cause my own packet loss, which would   make me need to re-transmit. Remember that TCP  it doesn't know what network it's going over.   It could be that we're going across an ocean  with a very very large amount of latency,   or it could be that you're sitting right  next door to me on the same switch with very   low network latency. In addition to latency,  also the amount of bandwidth that's available.   So TCP is not aware of any of those things when  it begins to transmit. So in many cases what   TCP will do is it will be conservative when it  begins to transmit. It'll go through something   called slow start, as data successfully makes it  to the other side and acknowledgments come back,   it'll gradually increase the amount of  data that it's putting out on the wire   as successful acknowledgements come back. So  that's a whole other facet of TCP that we need   to think about that makes it different than  UDP - congestion control - and that's where   TCP will limit how much data it puts out on  the wire and gradually increase the amount as   it successfully is able to send data to the other  side. Now there's a whole lot of algorithms that   control that but let's just leave it at that  for now. Now at the end of the TCP connection,   we have to tear the connection down. So what makes  that happen? Well two ways so we can either FIN   the connection to tear it down or we can send a  reset in order to tear down the TCP connection.   But either way, eventually we don't want  that TCP connection to live on forever,   so TCP being stateful, both sides are going  to dedicate resource to that connection   for as long as it's alive. That's the reason why  we don't want TCP connections to run on forever,   because both sides are going to maintain that  state. Okay so whoa we just talked about a lot   of things but let's just keep this very simple.  What's the difference between TCP and UDP? Again,   connection-oriented, connectionless. UDP best  effort. It will transmit and hope for the best.   It does not resend data, and it does not  do any kind of congestion control. TCP is   connection oriented. It first has to establish  that three-way handshake. It maintains state.   It tracks every single byte that's sent in  order to re-transmit any missing data and it   also implements congestion control so it doesn't  overwhelm the network by being too aggressive   by sending. So I hope this video was useful to you  and understanding the difference between these two   very core protocols at the transport layer TCP and  UDP. Thanks for stopping by I'll see you again! you
Info
Channel: Chris Greer
Views: 5,874
Rating: undefined out of 5
Keywords: intro to wireshark, wireshark, how to use wireshark, tcp/ip analysis, introduction to wireshark, chris greer, wireshark course, free wireshark training, free wireshark course, getting started with wireshark, wireshark for beginners, network troubleshooting, wireshark tutorial, wireshark tutorial 2021, wireshark training, wireshark tips, tcp/ip, tcp vs udp, udp analysis, how tcp works, ccna tcp, network+ tcp, ccna, tcp
Id: V1CxV6Vg7_U
Channel Id: undefined
Length: 8min 17sec (497 seconds)
Published: Tue Oct 12 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.