分开通信责任

一次网页访问涉及本地链路、跨网转发、端点传输和资源请求等工作。分层把这些责任分给不同机制,让某一层通过约定接口使用另一层提供的服务。实现者可以改变链路技术或上层应用,而不必每次重新定义整个通信系统,从而使跨设备互通成为可分解的问题。

参考:[1]

封装承载上层数据

上层数据可以成为下层报文的内容:TCP把应用字节组织成报文段,IP再以数据报承载报文段,本地链路继续包裹它。每层添加自己需要的控制信息,接收端按相应规则解析。一个字段属于哪层,会决定谁应理解和修改它,以及哪一部分错误由哪种机制处理。

参考:[2]

模型不是唯一层数

互联网主机规范讨论链路层、IP层、传输层,并由配套规范讨论应用协议。教学中也使用其他层数的参考模型,帮助整理功能。层数本身不是网络设备必须机械复制的实体数量,实际软件可能合并实现;关键在于把服务边界、所需状态和互操作规则说明清楚。

参考:[1]

分工仍需端到端配合

下层可靠性不能替上层完成全部任务。本地链路成功发送,不代表远端应用已经提交一项业务;TCP确认也不等于应用给出成功结果。分层设计需要把每项保证放在适当位置,并检查层间重复工作和额外开销,让独立改进与完整通信语义能够同时成立。

参考:[2]