The best answer is all of them are required, but the question is really meaningless.
The OSI model is a conceptual model, i.e. it represents all that is needed to create a complete communication network between applications.
Lets take an OSI modeled application using the serial protocol (RS-232 or a derivative):
The serial protocol defines either the first layer or the first two layers (depending on whether you consider the 7 or 8 bit serial packet a frame or not); however in order to communicate, a networking stack using the serial protocol needs to define the rest of the layers:
- It needs to state how applications communicate with the networking stack.
- It needs to define how application data is represented in the network
- It needs to define how a communication session is started and terminated, etc. etc.
Some of these definitions might be trivial, e.g. if the network consists of just two nodes connected with a single serial link then all the routing and addressing definitions in layers 3 and 4 amount to: there is none only two nodes can communicate.
The best you can ask is whether a networking stack conforms or not to the OSI model.
The answer to this, as EJP commented , will most probably be no.
One of the reasons the OSI model is taught is that it underlines a very important aspect still in use in communications today: that of modularity.
Another one is that it provides a good list of concerns/features a communication stack must support.
The OSI model was meant to describe an architectural model where each layer was modular, i.e. as long as the implementations followed the model you could mix and match them to create your networking stack: need more security - change your presentation layer to one using encryption, more reliability use a transportation layer with ECC, etc.
But none of the layers were optional.
Echoes of this allowed (allow?) computers to connect to file servers whether using TCP/IP, IPX or NetBios; allow you to access the internet by ethernet or wifi, using ADSL or cable and once IPv6 rolls out you'll still be using the same HTTP communicate with Stackoverflow servers.