TCP/IP详解卷1概述

2022-05-06  本文已影响0人  撸代码的大白

    最近因工作需要,不得不捧起这本圣经来。写文章的目的不在于照本宣科,而在于分享感悟。

    首先提个问题,为什么要有协议?

    第二个问题,什么是协议?

    第三个问题,为什么要分层?

    第四个问题,怎么合理分层?

    第五个问题,标准和各种协会存在的意义是什么?

     窃以为,原理重要,细节也重要,原理在于设计,细节在于实用,如果非得要有侧重,还是先重原理,因为重细节为匠,重原理为师。

    言归正传,这些问题怎么解答呢,我们发现,这些问题不只是在网络这个领域有,其他领域也一样。我们先从要解决什么问题入手。

    那要解决什么问题呢?当然是互联和通信的问题。

    如果一个游戏,它是你自己创造的,你也只是自己玩,那么不用有协议,你自己不用约束你自己。如果你想跟别人一起玩,那就得先说明白规则。比如最简单的石头剪刀布的游戏,你要约束有几种手型,也要约束要同时出手等等。犹记得葛优通过一个套筒,解决石头剪刀布的公平性问题,获得巨额回报的电影情节。事实上,在技术领域,能解决具体问题的设计,哪怕是简单的也是非常有价值的。

    我们回答第一个问题,为什么要有协议。原因就是有多方参加,需要有统一的规则。

    然后我们回答第二个问题,协议是什么。协议其实是一种设计,为了解决问题,而设立的一些规则。比如解决全国人民沟通问题,所定的协议就是说普通话,而普通话的各种发音细节,就是协议的细节。而网络协议,说到底就是规定有多少字节是干嘛用的,就这么简单。

   第三个问题,为什么要分层。我们发现所有的架构设计到最终总会殊途同归的,因为人类解决问题的思路并没有什么新奇之处。写代码要求业务与能力分离,逻辑与组件分离;做微服务要做合理的服务拆分和公共能力沉淀;系统架构要分展现层、负载均衡层、网关层、业务层、公共服务层、持久化层等等。分层的意义可以从几方面来考虑。第一将一个复杂的问题拆解,要解决的问题一堆一团,解决难度大,实现也会复杂,分而治之,就都变得干净而简洁了;第二相互干扰的问题,层与层之间做好互相之间的沟通约束,其他细节则不需要关心,这样每一层负责每一层的事儿,分工明确;第三个是各层可以在不破坏层次关系的前提下,做更专业的深入。第四个是方便能力沉淀和复用。

    第四个问题,怎么合理分层。合理分层看需求和各层的职能。如果越来越多的互相干扰,或者不同的职责在一层,那么就有必要分开。

    第五个问题,标准和标准组织,有点像小区物业,就是负责修修补补维持一个大型的体系的正常运行和合理升级的。

上一篇下一篇

猜你喜欢

热点阅读