A host CPU runs a network protocol processing stack that provides
instructions not only to process network messages but also to allocate
processing of certain network messages to a specialized network
communication device, offloading some of the most time consuming protocol
processing from the host CPU to the network communication device. By
allocating common and time consuming network processes to the device,
while retaining the ability to handle less time intensive and more varied
processing on the host stack, the network communication device can be
relatively simple and cost effective. The host CPU, operating according
to instructions from the stack, and the network communication device
together determine whether and to what extent a given message is
processed by the host CPU or by the network communication device.