It might be possible to have just one layer, but that would mean that you would have one piece of software that would manage all aspects of your network connection, from providing you with windows in which to edit your e-mail to putting bits onto the network cable running from the back of your computer. Instead, however, tasks are broken down for reasons of modularity, reliability, and efficiency. Modularity means that you can easily replace a particular layer. For instance, if you get a new network card, you simply install it, but you do not have to reconfigure all of the other layers. Finally, if you have a notebook computer, you could plug it into different networks at different places, and you need only reconfigure the layers that bear on the particular network connections.
Reliability comes from the fact that each layer is independent of the others.
If there is a problem with one layer, for instance, your web browser, other applications still can use the other layers. Multiprogramming turns out to be critical in improving the performance of gateways and other computer systems that manage more than one user.