琐碎的想法(二)网络协议——人们给计算机的一组“约定”

网络协议学习方式一

学习网络协议的入门多种多样,若是是从术语上来说协议,大概是这样的。安全

  1. 协议的做用意义
  2. 协议的定义。
  3. 协议的发展。
  4. 协议的特色。
    ...

这是一种靠强记,经过实践来加深印象,最后不自知地了解网络协议的过程。有效但趣味寥寥。网络

网络协议学习方式二

这一次,我想从开创者的角度来分析,如何让两台计算机的应用进行通信。
试想,若是咱们抛弃全部现有的网络协议思惟,把本身当作一个科研人员,那么如何才能让两台计算机的软件进行通信呢?
这就须要咱们发明一种机制可以实现通信。
可是,作事最好不要从头开始,应该多借鉴前人的思想,回忆一下最初信息是如何传递的。tcp

烽火对照计算机

还记得历史课本讲过的烽火台(敌人白天来临时就燃烟,夜间来犯就点火)吗?学习

假设,只有一个烽火台,给一个城传递信息。
咱们能够从这个具体事务中提取他可以传递信息的几个最基础的要素。设计

要素名 对应物
信息发布者 烽火台的士兵
信息接收者 城的士兵
信息 烟、火
信息传递的规则 敌人白天来临时就燃烟,夜间来犯就点火

而咱们把几个基础要素转化到两台计算机上。事务

要素名 对应烽火台 对应计算机
信息发布者 烽火台的士兵 计算机A的软件a
信息接收者 城的士兵 计算机B的软件a
信息 烟、火 数据
信息传递的规则 敌人白天来临时就燃烟,夜间来犯就点火 两台计算机之间的“约定”

邮寄对照计算机

前三者都是实体,第四点须要咱们好好理解,烽火台的士兵和城的士兵应该是在以前都清楚“敌人白天来临时就燃烟,夜间来犯就点火”这个规则,那么咱们要实现通信也须要实现一个规则,而且让双方事先清楚。入门

总结:通信是须要双方默认都事先理解的一套“约定”table

这时候,咱们能够参考最多见的通信方式之一的邮寄。基础

若是将一封邮件的构成要素和计算机的概念进行对比软件

信的构成 计算机元素
收信人地址(城市、门牌号) 计算机A的地址
收信人姓名 计算机A中的a应用的位置
寄信人地址(城市、门牌号) 计算机B的地址
寄信人姓名 计算机B中的a应用的位置
邮件 数据

若是咱们对每台计算器进行编号,并对咱们使用的应用,也进行编号,记在一个记事本中。
若是这两台计算机都存着这个记事本,那么它们就能够区分,每一台电脑的每个应用。
由此,咱们就设计出一个可以实现数据传输的协议了。

计算机对照TCP协议

而现实中的协议也是如此,下面引用TCP协议来对比咱们上面所描述的各个基本元素。(注意:事实上TCP不单单是实现了基本的数据传输,还处理了可靠性、流量控制、多路复用、链接数、优先与安全等问题,是一个值得深刻学习的协议。)

信的构成 计算机元素 对应协议中的专业术语
收信人地址(城市、门牌号) 计算机A的地址 A计算机的地址(IP地址加MAC地址)
收信人姓名 计算机A中的a应用的位置 a应用在A计算机中占用的端口
寄信人地址(城市、门牌号) 计算机B的地址 B计算机的地址(IP地址加MAC地址)
寄信人姓名 计算机B中的a应用的位置 a应用在A计算机中占用的端口
邮件 数据 数据包

以上内容仅仅涉及到了基本的数据传输,若有兴趣,能够想一想以下的问题。

  1. 如何保证数据传输正确?须要涉及到数据校验的问题。
  2. 如何保证数据的可靠性?须要涉及到三次握手、四次挥手机制。
  3. 数据量过大怎么办?涉及数据拥塞控制(Reno、BBR)。 ...
相关文章
相关标签/搜索