开始重新阅读潘爱民翻译的计算机网络,有机会看一下英文的版本,毕竟英文水平对学计算机的做程序设计的人来说是一种必备的工具或者说是技能。
本来打算好好看看第一章关于物理层的设计,结果依然草草过了一遍,暂时也就略过。
说说数据链路层,数据链路层,计算机层级模型中的第二层,位于物理层的上层,网络层的下层。一下是书中对数据链路层的设计做的概括。
数据链路层是使用物理层提供的服务在通信信道上发送和接收比特,它要完成一系列的功能:
- 向网络层提供一个定义良好的服务接口。
- 处理传输错误
- 调节数据流确保慢速的接收方不会被快速的发送方淹没。
为了实现这些目标,数据链路层从网络层获得数据包,然后将这些数据包封装成帧(frame)以便传输。帧的管理成为了链路层工作的核心。
像互联网分层设计这是一种经典的抽象设计。这种设计的影响是久远深刻的,很多地方也可以给我们对系统的设计带来参考。以后或许会写一篇随笔帮助自己梳理一下层次结构设计。今天只是从数据链路层的设计目标来写一点思考。
数据链路层是建立在底层物理层的。所以它是物理层服务的对象,所以他必须要解决物理层的一些问题,倘若不能解决问题,那么还要他干嘛呢?物理层单个比特的传输是有可能出现错误的,并且容错能力比较有限,同时物理层的传输中信道速率必然是有限的,速度的变化也会造成混乱。所以,维护比特传输的顺序保持不变,防护混乱的出现需要制定一些简单的协议,这些协议就是运行在数据链路层上。 在研究问题的时候,我们需要考虑业务需求,或者是实际的考量。这里说的比较马虎,以后需要更详细的总结。
第二我归纳的是作为底层,一般对服务于上层,所以对上层一般提供接口。对接口的设计,如何提供良好的接口,怎么设计良好的接口是一门学问,需要我们很好的思考,这也是以后可以专门写下总结帮助学习。一般分层设计都是各做各事,类似于流水线的设计,减少耦合的设计。所以相互之间接口联系,其他的最好没有相互影响。上下分层的时候,底层需要对上层透明。
多思考,才会掌握思考的技术,才会习惯思考。多思考,才会思考得深!
我希望下次再回过来看得时候对设计,对接口,对网络,对链路层有更深的理解,更好的掌握。。