My book defines queuing delay as the time the packet waits to be transmitted onto the link. It defines transmission delay as the amount of time required to push all of the packet's bits onto the link. It defines processing delay as "the time required to examine the packet’s header and determine where to direct the packet". I do not completely understand the difference. The first two sound very similar and processing delay sounds like it is part of one of the other two. Can anyone explain me the difference?
There's some similarity. In the end, they all get bundled up into one big "delay" factor, but the size of the delays depends on different factors so it makes sense to break them apart.
Transmission delay is a delay based on how long it takes to send the signal down the transmission line. This includes costs like the time it takes for an EM signal (or other signal) to propagate from one side to the other. It also includes costs like training signals that are often put on the front of a packet to help the receiver synchronize clocks. The important factor to transmission delays is that the packet is in motion. Once the transmission period starts, bits have to keep appearing on the wire one after another, without unexpected delays.
Queuing delay is a delay based on how long the packet has to sit around in the router. Quite often the wire is busy, so we can't transmit a packet immediately. In these cases, the packet sits, ready to go, in a queue. These delays are almost entirely defined by the amount of traffic on the network (often queuing delay is the only traffic dependent part of the puzzle!). The more traffic there is, the more likely a packet finds itself stuck behind another packet in the queue, just sitting in memory, waiting.
Processing delay is the delay based on how long it takes the router to figure out where to send the packet. Once it figures it out, it will queue the packet for transmission. These costs are predominantly based on the complexity of the protocol. The router must decode enough of the packet to figure out which queue to put the packet in. Sometimes that's easy, sometimes it's not. Typically the lower level layers of the stack have simpler protocols. If a switch doesn't already know which physical port to send a packet to, it will typically send it to all ports, queuing the packet in many queues immediately. On the other hand, at a higher level such as those which come into play in IP protocols, the processing may include making an ARP request to find out the physical address of the destination before queuing the packet for transmission. One may choose to call that a processing delay.
Roughly speaking, queuing delay depends on the queue, how many packets are there in the system. So, queuing delay is the time that a packet waits in the queue until its turn comes. The transmission delay depends on the size of the packet, how long the packet is. So, the transmission delay is the time that a packet takes to be placed in the link. (After that comes the propagation delay which is the time that a packet takes to move in the link, which depends on the speed of light.) Finally, processing delay is like the time it takes to read the packet. The packet is arrived at destination and is waiting for processing, that's the processing delay.