Category Archives: Packet Analysis

Packet School 101 – Part 3.5

** Disclaimer to all new readers – This blog post is VERY old and not really representative of my current work. I’ve just left it up here for historical purposes. If you are interested in learning more about packet analysis I’d reccommend reading some of my newer posts or looking at my book, Practical Packet Analysis. **

I just wanted to make a couple of quick notes before I published the next section in Packet School 101. I have been in touch with Gerald Combs, who as many of you know is the original developer of Ethereal, and he has informed me that due to copyright and legal restrictions that Ethereal HAS been rebranded as the Wireshark project. I had heard this from several sources but wanted to make sure it was legitimate before I posted anything about it. This being said, Wireshark is basically the same program as Ethereal so all of the previous tutorials I have posted should still be valid. Also, from here on out I will no longer refer to the program as Ethereal, and all of the screenshots will also reflect the Wireshark program. You can learn more about Wireshark at

Also, I want to thank you guys for all of the comments anad questions you have sent. Towards the end of the series I am going to devote one whole section to nothing but questions, so keep sending them my way.

Be sure to check back in the next couple of days for Packet School 101 – Part 4!

Packet School 101 – Part 3

** Disclaimer to all new readers – This blog post is VERY old and not really representative of my current work. I’ve just left it up here for historical purposes. If you are interested in learning more about packet analysis I’d reccommend reading some of my newer posts or looking at my book, Practical Packet Analysis. **

The response from this series has been tremendous! As of yesterday I have managed to make the front page of and make #2 on the list of the most linked sited on I have seen my bandwidth grow exponentially and have logged over 5 GB of traffic in the past 24 hours. I have also had a lot of great comments regarding the first two parts that I hope to address later on in the series. I plan on ending with a Q & A so if you have any major questions feel free to e-mail me.

Troubleshooting a Slow Router

Download the sample trace file by clicking here (<1 MB)

In this section we are going to look at a client who is trying to connect to a website but it experiencing all kinds of network slowness issues. Opening the sample trace file, the first thing you will notice is a lot of ARP broadcast packets. These are typical in a lot of network environments for layer 3 to layer 2 address resolution. For the purpose of what we are doing here, we are going to remove these from out trace file so that they don’t clutter things up. You can do this by typing “!arp” in the filter text box near the top of the Ethereal window.
Getting on Time

At this point in our learning it is pertinent to take notice of the “Time” column in the main Ethereal window. You will see a time listed next to each packet, and by default, this shows the time the packet was recieved in relation to the beginning of the packet capture. This type of view has its purposes in some settings, however, for troubleshooting a slow network you will want to change this setting to display the time relative to the packet recieved previously. You can do this through by going to View > Time Display Format, and selecting “Seconds Since Previous Packet”. In this new time view you will notice that the times are now displayed as the amount of time since the previous packet was captured. For example, packet 4 was recieved 1.728522 seconds after packet 3. This will be much more handy to us in our troubleshooting of the slow network communication.

Looking for the Source of the Latency

Now that we have our time column set to display data to us in a much more helpful way, scrolling down through the trace file we see our first major network activity at packet 18 where the client ( makes an HTTP request to get the website Typically, the next packet we see should be the dns servers response to the client. In this case however, the server does not respond back to the client, so the next packet we see is over a second later and is the client attempting to request the webpage a second time. After this second request we finally see a response from the DNS server pointing us to the IP address of the web server in packet 20. In an ideal situation, as soon as this dns query is completed the client and server should begin a standard TCP/IP handshake (SYN, SYN/ACK, ACK), and in our case the client does its part sending it’s initial SYN packet out within 4 milliseconds (third place from the decimal point is milliseconds) of recieving the DNS response. The server on the other hand responds an incredible amount slower taking over half a second to send its SYN/ACK reply. At this point we can definitely begin to see that it is something other than the client causing the network latency.

Interestingly enough as we continue down into the trace, in packet number 26 we see a second DNS reply from the server. This the reply to our second DNS request that we made initially. The only problem is that it is about 5 seconds too late! Given that our client computer has already established a connection with the server there is no real need for this second connection, and it throws up an ICMP destination unreachable packet immediatly following the reciept of the DNS response.

Going back to our already established connection to the server, we begin to see problems sprouting up. After making our initial TCP/IP handshake the client requests the actual content of the webpage at packet 25. Quite some time goes by and then in packets 29 and 32 we see two TCP Retransmission packets. In this case, the client has requested the webpage, not gotten a response, waited a certain amount of time, and sent a retransmission to the server in order to make another attempt at getting the data. After the third retransmission we finally see a response from the server in packet 33. Now if you add up the times from packets 25 to 33 you will see it has taken us nearly 9 seconds to get the first bit of data from the webpage we are requesting. It doesn’t take a packet analyzing expert to realize this is entirely unacceptable.

Fixing the Problem

Given the information we have just seen we know that the client is not at fault for the slow communication. The principal rule of thought for figuring out the problem location is to move upstream along the network. In this network, the next step would be to look at the router to see if it is malfunctioning in any way. Upon rebooting the router on this particular network, the speed of data communication increased tremendously and the problem was solved. However, if the problem had not been the router then you would need to move upstream to the router of the network in which the web server you are connecting to is behind. Unfortunately when that is the case you typically do not have the power over the remote network to do anything about it.


In our next installment we are going to look at a spyware infection and its effects on a workstation. Now that you understand the concept of restransmissions and latency you may be asking yourself what exactly is a good time for something such as a website request to take place? The best thing to do in this case is to sniff the packets on your own network whenever you are not having any issues. Ideal communication times are going to vary for each and every network you are on so this is another case in which you will want to sniff your own network. Getting to know what the packets look like in your network when it is healthy will SURELY pay off in the future.

Packet School 101 – Part 4�



With the help of Internet technology, you can find wide range of available online IT courses and certifications. You can search out online schools that offer certification for MS 70-296. Online instructors help you in grasping the tricky concepts of MS 70-620. Free and fast registration for MS 70-554 is also available for business professionals. 

Packet School 101 – Part 2

** Disclaimer to all new readers – This blog post is VERY old and not really representative of my current work. I’ve just left it up here for historical purposes. If you are interested in learning more about packet analysis I’d reccommend reading some of my newer posts or looking at my book, Practical Packet Analysis. **

If you are reading this then it means you probably enjoyed the first part of my series on packet analysis, so if that is the case, welcome back! In this installment we are going to analyze our first trace file to learn some more packet analysis basics. I am going to assume that you have played around with Ethereal a bit and am going to forgo the explanation of all the different windows within it and things of that nature. Before we start you are going to need to download the sample trace file we will be working from. I obtained this trace file as well as a lot of others I will be using from Laura Chappell, Sr. Protocol Analyst for the Packet Level Protocol Analysis Institute (

Our First Analysis – Downloading a File

Click here to download sample trace file (approx. 13MB)

Downloading a file is a pretty basic function when described at the network/transport layer. A client request a file from a server via HTTP and the file responds with this file. This takes the form of several packets as the file downloaded is segmented into various size packets for transport across the networks it must traverse to reach its destination. In our trace file we are going to look at an example of downloading a file from two different servers. The first server we will look at is going to be an extremely slow server so that we can look at some of the various problems that Ethereal will show us. After this we will look towards the end of the trace file for an example of what a healthy file transfer looks like.

The first thing we want to look at is the I/O graph of the packet capture. The I/O graph is customizable with a lot of various options and is a great way to visual interpret some of the data you have captured. To view the I/O graph of this packets capture click “Statistics” on the menu bar and then select “IO Graphs”. Once you have done this you are going to need to look towards the bottom right corner of the screen and change the “packets/tick” option to “bytes/tick”. This will provide the information to us in a form that is much more useful. You may feel free to change any other visual settings in this window.

Looking at the I/O graph for our packet capture we notice that traffic is slightly eleveated near the beginning of the capturing before flattening out. Then towards the end of the capture traffic spikes to a new high with a slight drop in the middle. Knowing that we are looking at an example of a fast and slow download we can easily distinguish where the two downloads take place just by looking at this graph. Let’s look at the packet capture and see what else we can determine about these downloads.

Scrolling through all of the packets you will see a lot of various information. The biggest portion of this is normal traffic and is therefor uesless to us as we are only looking for abnormal traffic. In order to filter this abnormal traffic out we are going to use a new feature in Ethereal called the expert info window. To open this window you can simply click on “Analyze” in the menu bar and select “Expert Info”. By default, the expert info window is going to show us all warning, error, note, and chat communication. Chat communication does not really constitute abnormal traffic, therefor we are going to change this settings to show only warnings, errors, and notes by changing the appropriate setting under the “Severity filter” heading.

Anatomy of a Slow Download

Looking at the expert information window there are a few things we want to discuss right away. The first thing you will see in abundance are TCP Window Update packets. If you are familiar with TCP/IP you know that the transmission rate of data is determined by the size of the TCP recieve window. When transferring data between clients they will constantly send TCP Window Update packets to each other as there ability to recieve data speeds up or slows down.

The next thing we want to look at is where we have our first problematic packets. As the download starts you being to see “Previous segment lost” packets. Basically what this is saying is that during the course of data transfer, all of a suddent a packet is dropped. In response to this the client sends what you are seeing as “Duplicate ACK” packets to the server in order to request to packet that was dropped. The client will continue sending these duplicate ACKs until it finally recieves the packet it was looking for. The retransmission of this missing packet is what you are seeing as “Fast retransmission” in the expert info window. At the start of the download you are only seeing one or two duplicate ACKs at once but as the download progresses you begins seeing more and more of them which means you are experiencing more latency. At this point you can browse through the rest of the capture and see that it is riddled with these segment losses and duplicate ACKs. If you browse to the end of the capture file however, you will notice this is not the case. In this instance there are only one or two dropped packets in the successful download.

One last thing we are going to look at is another way to visually represent the packet capture data called the “TCP Stream Graph”. You can access this graph by clicking on a packet related to the stream you wish to analyze (in the case you can select packet number 1023) and going to “Statistics”, selecting “TCP Stream Graph” and clicking on “Round Trip Time Graph”. This graph is not too visually pleasing but is a great way to compare round trip time (RTT) throughout a packet capture. You will notice near the beginning of the capture with the slow download we are seeing RTT of up to one full second. This is complete unacceptable for downloading a file. Even when downloading a file off of the internet you should see times at no more than 0.1 seconds. An ideal RTT for data transfer across the internet is no more that 0.04 seconds (40 milliseconds). Looking at the beginning of the graph as compared to the high speed download at the end of it can produce some draw jopping results.


I would encourage you at this point to try taking some packet captures of downloading various files on the internet. See if you can find a high utilization server somewhere so you can view the packets of a slow download you did yourself. This will help you to better understand what we learned today. In the next installment of Packet School 101 we are going to examine a trace file from a network in which there are router performance problems.

Packet School 101 – Part 3



Several distance learning programs allow people to have professional degrees and IT certifications, without having their tangible presence in scheduled classes. For exam training purposes MS 642-552 study guide available that features Q&A with explanation. Microsoft designed MS 70-536 certification while keeping in view the emerging trends in IT. Today, acquiring new MS 70-553 IT certifications would be a valuable increase in your certifications. 

Packet School 101 – Part 1

** Disclaimer to all new readers – This blog post is VERY old and not really representative of my current work. I’ve just left it up here for historical purposes. If you are interested in learning more about packet analysis I’d reccommend reading some of my newer posts or looking at my book, Practical Packet Analysis. **

Over the course of the next few weeks I am going to be putting out a series on network traffic analysis. This is one of the most important skills any network administrator can have and is absolutely crucial to solving a variety of network related problems.

We won’t get into any actual packet analysis in the introductory article We will, however, go ahead and make sure we have the appropriate software to proceed, along with a brief understanding of how it works and how to use it.

Getting Equipped

The software we will be using for this series is the ever popular Ethereal network sniffing application. This program is distributed freely and can be downloaded at Installing this software is simple enough that I am not going to go through it here, although it is important to note that this software relies on the WinPcap driver which is included in the installation package. As a lot of you may already know, there have been some issues with WinPcap and version skew, as in different versions of the driver being required for different pieces of software to work with it. This being the case, I reccomend you to install the version of WinPcap that comes with Ethereal even if you already have a version of this driver installed. This will help to prevent any possible issues in the future.

There is no actual hardware required for doing this type of analysis, however, it makes things a LOT easier if you have an old 10/100 hub lying around. I will explain why this is here very shortly.

Ethereal Basics

Once you have installed Ethereal along with the WinPcap driver you should be ready to dive in head first. The first thing we are going to do is a simple packet capture. To do this you will first need to select your capture interface by clicking the “List avaliable capture interfaces” button to the far left hand side of the main toolbar.

Once you have done this you will be presented with a window listing all avaliable capture interfaces. Clicking the “Capture” button next to the interface you wish to use will begin capturing packets from this connection.

Wait for a few minutes until a significant amount of packets have been collected and then click the “Stop” button. You should the be returned back to the main screen with a whole bunch of new data. Congratulations! You have just completed your first successful packet capture!

Slipping On To the Wire

Now that you know how to do a basic packet capture in Ethereal it is important to learn how to capture the right traffic. Assuming you are on a switched ethernet network (which most everybody is these days), all of the traffic you just captured was your own. That is, all traffic was either coming to or going from the computer from which you intiated the packet capture. This is basically how a switched network functions. The switch only sends data to those ports in which it is destined. This brings up the question of how do you capture traffic from a computer that packet sniffing software is not installed on?

Remember earlier when I told you that it would come in handy to have an old 10/100 hub lying around? Well this is that time. I am not going to go into great detail on the differences between a switched and a hub network, but put simply, in a hub network every piece of data is sent to every single port. The hub uses a lower level of logic in that it does not know where data is supposed to go, so it sends it to every client on every port and lets those clients accept it if they want it and deny it if they don’t. This means on a hub network when you sniff packets you are seeing the packets of the entire network. So lets say you are trying to troubleshoot a computer on a switched network. What you will want to do is go to the client computer and unplug it from the network, and plug it into your hub, along with the computer you will be using to sniff the traffic. From here you will plug the hub onto the network using its uplink port. This will effectively put the two comptuers you will be using onto a hub network allowing you to read all the traffic you need to. See the diagram below for a visual explanation of the hub setup.


In the next section of this series we will look at some basic packet structure as well as some more features of Ethereal. We will also look into some basic troubleshooting using packet analysis. Between now and then I would highly reccomend playing around with Ethereal and looking at your own networks packets to see if you can try and figure out what some of them are.

Packet School 101 – Part 2

7/5/06 – If you like this series, digg it!


Enjoy Packets School 101? Check out Packet School 201!

As a lot of you may already know, Microsoft introduced several new online courses and issued certificates after successful completion of the programs. You can find various courses like 70-293, that enable you to solve concurrent problems and also 70-294, that will increase your proficiency. Online guides and CDs for Ms 70-296 certifications are also available for students’ assistance.