This paper extends the traditional socket interface to
TCP/IP communication with the ability to seek rather than
simply receive data in order. Seeking on a TCP socket allows
a user program to receive data without first receiving
all previous data on the connection. Through repeated use
of seeking, a messaging application or library can treat a
TCP socket as a list of messages with the potential to receive
and remove data from any arbitrary point rather than simply
the head of the socket buffer. Seeking facilitates copyavoidance
between a messaging library and user code by
eliminating the need to first copy unwanted data into a library
buffer before receiving desired data that appears later
in the socket buffer.