This means that the different protocols are visualized vertically, passing information up and down the stack. It can also be visualized that on two interfaces, two protocols that are at the same level in the stack communicate directly with each other. Here I've shown a telnet session between foo and bar. Of course it has no effect because d1ck is a complete idiot, but I digress. This is all possible because of the miracle of encapsulation.
Encapsulation is the method by which foo's tcp can talk directly to bar's tcp.
Every layer uses a header to keep addressing and other information that is needed by the protocol to deliver the packet. Each layer, upon recieving the packet from the previous layer, treats the entire thing like data and adds it's own header. It is possible to put something besides TCP on top of IP, and it will still work. As the data moves down the stack towards the NIC driver and to the network, headers are added. These headers accomplish different things depending the specific protocols being used.