This preview shows page 1. Sign up to view the full content.
Unformatted text preview: the TCP header to obtain the sequence number of the last byte of urgent data.
There is continuing debate about whether the urgent pointer points to the last byte of urgent data, or to the
byte following the last byte of urgent data. The original TCP specification gave both interpretations but the
Host Requirements RFC identifies which is correct: the urgent pointer points to the last byte of urgent data.
The problem, however, is that most implementations (i.e., the Berkeley-derived implementations) continue
to use the wrong interpretation. An implementation that follows the specification in the Host Requirements
RFC might be compliant, but might not communicate correctly with most other hosts. TCP must inform the receiving process when an urgent pointer is received and one was not
already pending on the connection, or if the urgent pointer advances in the data stream. The
receiving application can then read the data stream and must be able to tell when the urgent
pointer is encountered. As long as data exists from the receiver's current read position until
the urgent pointer, the application is considered to be in an "urgent mode." After the urgent
pointer is passed, the application returns to its normal mode.
TCP itself says little more about urgent data. There is no way to specify where the urgent
data starts in the data stream. The only information sent across the connection by TCP is that
urgent mode has begun (the URG bit in the TCP header) and the pointer to the last byte of
urgent data. Everything else is left to the application.
Unfortunately many implementations incorrectly call TCP's urgent mode out-of-band data.
If an application really wants a separate out-of-band channel, a second TCP connection is
the easiest way to accomplish this. (Some transport layers do provide what most people
consider true out-of-band data: a logically separate data path using the same connection as
the normal data path. This is not what TCP provides.)
The confusion between TCP's urgent mode and out-of-band data is also because the predominant
programming interface, the sockets AP...
View Full Document
- Spring '12