Most things don't use the entire stack.
TCP/IP needs to be seperate layers because you don't want to use TCP for everything.
Everything on the internet has an IP address, so that is the universal internet layer. You can put TCP or UDP or any number of more obscure layers on top of that.
Most applications squish the sesson,presentation,application layers into one, keeping them seperate is optional, there isn't a separate encapsulation header for each just a session flag to keep track the individual connection.
Under the IP layer (network) you have the data-link and physical layer. data-link is your MAC address (this is neccesary) and physical is your wire, there isn't a protocol there generally, though there is for WIFI for example which doesn't use wires.