When we download a movie from the Internet, we don't care about, say, packet sizes. However, even ifwe are not aware of howlow-level details of networks are implemented, our data is actually being sent as lots of small packets, some of which might be lost or arrive out of order. Therefore, it is important that the protocols we use guarantee that we won't have to deal with any of these problems. In other words, all we want is a simple interface that solves our problem; this interface for network programming will be provided by the operating system. Some of these abstractions are:
process-to-process communication
remote function calls
security
hosts have human-readable names
ordered, reliable communication
streams of bytes, instead of discrete packets
support for large messages
routing to ?nal destination
independence from the low-level network and hardware details