Required reading: Implementing network protocols at user level


Why talk about networking in an operating system class? Networking modules are sophisticated users of operating system functions, and do require some special support:

A major issue in implementing protocols is managing concurrency. The network, user programs, and protocols all generate packets, and potentially concurrently while sharing state.

Possible architectures:

The other major issue is protection. The network device is shared and the network module needs to be involved in demultiplexing the packets to the right destinatin process. Possible organizations to solve this problem:

UNIX networking

Socket abstraction:

Socket implementation:

Paper discussion