Layering
Data flows up and down through the stack.
Each layer talks to it's counterpart on
the other end.
In Unix & Linux the top layer is usually
the application and the other 3 layers
are in the kernel.
Transport layer is end-to-end.
Network layer is hop-by-hop.