The idea of layering:
用postal service来类比
一个client和另一个client之间的信件交流中, they don't care how the letter gets to the other.
Lower layers abstract details away from the clients, 比如how the mailman delivers or which mailbox he puts the envelope in.
Benefits: Layer只和自己的上层和下层交流, 因此可以improve independently
Breaking the boundaries of layers is costly, and do so only when really have to.
应用layering的原因:
1. Modularity: it breaks down the system into smaller and more manageable modules.
2. well-defined services: each layer provides a well-defined service to the layers above.
3. reuse: a layer above can rely on all hard work put in by others by implementing layers below.
4, separation of concerns: each layer does its own job, and doesn't need to worry about others.(The network layer doesn't need to worry about changes on the transport layer such as TCP).
5. continuous improvements
6. Peer-to-peer communications