Reasons for Layering
Simplifies networking by dividing it into less complex components.
Enables programmers to specialize in a particular layer.
Provides modularity which allows upgrades to a specific layer to remain separate from the other layers.
Encourages interoperability by promoting balance between different networking models.
Allows for standardized interfaces to be produced by vendors.