The Urgent Pointer is used when some information has to reach the server ASAP. When the TCP/IP stack at the other end sees a packet using the Urgent Pointer, it is duty bound to stop all it's doing and immediately send this packet to the relevant server. Since the packet is plucked out of the processing queue and acted upon immediately, it is known as an Out Of Band (OOB) packet and the data is called Out Of Band (OOB) data. The Urgent Pointer is usually used in Telnet, where an immediate response (e.g. the echoing of characters) is desirable.
When an IP stack receives a TCP Segment, its purpose is to hand data or commands up the OSI model. In other words, TCP data has session, presentation, and applications commands and/or data. So the IP stack separates this data from the TCP and IP information (headers) and passes this to the process that is associated with the TCP port. In many instances this is not done on every segment for performance reasons. Some times a few segments can queue up and be handed to their associated application or process at one time. This reduces resource load. However with some applications, the data needs to reach the associated process immediately. This is when the urg field should be set.
Thanks Conwyn and Paul for the wonderful explanations.
Say when the segments are queued,PUSH flag in the tcp header is what indicates to handover to their associated application or process at one time?
The urgent pointer points to the last byte of the urgent data.
I couldn't understand what's the idea behind this. What could this be used for? I think that begining of the urgent data might be more useful as it would help TCP know where exactly the urgent data begins and ends.
Please help me out here.