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.