Out of Band Data in UNIX
Imagine a lineup of people at the bank waiting to cash their paychecks. The line forms a queue, in which people eventually move forward to be served by a teller. Now imagine that a person walks into the bank, bypasses the entire lineup, and then engages a teller with a gun. This person would be viewed as being ''out-of-band" (or quite possibly out of his head). This "bandit" jumps the queue because the gun gives him priority over the people in the queue. The teller also provides her undivided attention to the bandit because she knows the situation is urgent.
Conceptually, out-of-band data over a connected stream socket works the same way. Normally, data flows from one end of the connection to the other, with precise ordering of all bytes of data guaranteed. No later byte is permitted to arrive ahead of bytes that were written earlier. The socket API, however, provides a facility where, conceptually, a bunch of data bytes can be expedited ahead of the normal data to the receiver. This is known as sending out-of-band data.
Technically speaking, a TCP stream cannot send out-of-band data. What it does support is a concept of "urgent" data, which is mapped to the socket API as out-of-band data. This brings about a number of limitations of out of band data.