
Seed: Plan 9 network architecture and the /net device driver interface.
Central fact: opening a network connection in Plan 9 is not a distinct system call with its own semantics; it is opening a file in a drawer, and the drawer happens to be labeled tcp.
Under /net, each protocol presents itself as an ordinary directory tree: /net/tcp holds a clone file and a growing set of numbered subdirectories, one per active connection. Opening clone does not connect to anything — it allocates a fresh, empty protocol control block and hands back a number, a new drawer folder with nothing in it yet. Writing a line into that folder's ctl file is the entire verb vocabulary a connection needs: connect [an address]!80 dials out, announce *!80 opens a listener, bind attaches an interface. No connect(), no bind(), no ioctl waits behind these strings — they are sentences written into a file that happens to be listening.
Once open, the data file inside that same numbered directory carries the payload exactly as a disk file would carry bytes: read drains what arrived, write sends what you hand it. A program moving bytes across a socket and a program moving bytes across a local pipe are, from the code's point of view, doing the identical thing to two files that happen to differ in what lies on their other end.
Because /net is a namespace like any other, one machine's whole network stack can be mounted bodily into another's — a client dials in with almost no networking code at all, borrowing not a connection but an entire directory tree of them, exported over 9P from wherever the real wire happens to terminate. The protocol was never the point; the directory always was.