The layers do not reflect reality. The higher up you go, the less obvious the mapping to the things that really exist gets, and the mapping is getting fuzzier over time (or, phrased another way, the OSI model is not only unrealistic, but increasingly unrealistic).
This is as opposed to possible meanings of the phrase, like "impractical". It is probably theoretically possible to write something that really would have seven clear layers, though I have to hedge; a lot of really high-performance stuff is even fuzzier than the consumer stuff. The recent trend towards userland-level networking at the highest performance end pretty much collapses layer 3 and above into one application. But it would at least ship bytes from here to there, it's certainly not an impossible design. It just isn't the real one. (And I'd have grave concerns about its performance at the top end.)
I have to admit this is another trend in programming that I just Do Not Get. This bizarre insistence on taking some inappropriate model, then with malice aforethought deliberately squinting at things that manifestly do not fit into the model until your vision is so fuzzy that they do seem to fit together, then yelling at anyone who dares point out you've damn near closed your eyes and probably aren't seeing clearly. See also every web framework's desperate need to insist that they are MVC, even as the lines that must be drawn between the various components to show where the M, V, and C are wildly and drunkenly veer hither and yon in a terrifically convoluted manner, criss-crossing dozens of components, instead of simply explaining what they actually are. I just don't get it. Models aren't blueprints, let alone the very definition of virtue. If they don't work, dispose of them.
The layers do not reflect reality. The higher up you go, the less obvious the mapping to the things that really exist gets, and the mapping is getting fuzzier over time (or, phrased another way, the OSI model is not only unrealistic, but increasingly unrealistic).
This is as opposed to possible meanings of the phrase, like "impractical". It is probably theoretically possible to write something that really would have seven clear layers, though I have to hedge; a lot of really high-performance stuff is even fuzzier than the consumer stuff. The recent trend towards userland-level networking at the highest performance end pretty much collapses layer 3 and above into one application. But it would at least ship bytes from here to there, it's certainly not an impossible design. It just isn't the real one. (And I'd have grave concerns about its performance at the top end.)
I have to admit this is another trend in programming that I just Do Not Get. This bizarre insistence on taking some inappropriate model, then with malice aforethought deliberately squinting at things that manifestly do not fit into the model until your vision is so fuzzy that they do seem to fit together, then yelling at anyone who dares point out you've damn near closed your eyes and probably aren't seeing clearly. See also every web framework's desperate need to insist that they are MVC, even as the lines that must be drawn between the various components to show where the M, V, and C are wildly and drunkenly veer hither and yon in a terrifically convoluted manner, criss-crossing dozens of components, instead of simply explaining what they actually are. I just don't get it. Models aren't blueprints, let alone the very definition of virtue. If they don't work, dispose of them.