今天在得到 APP 上的「罗辑思维」栏目里读到一篇文章,叫做「同构学习法」。那么究竟什么是「同构学习法」呢?文章里是这么说的:一个领域的方法,可以对应解开另一个领域的问题。从一个领域入手,可以帮我们理解另一个领域的规律,这就叫同构学习法。说得直白点就是举一反三,触类旁通。
为什么同构学习法有效呢?因为这个世界绝大部分知识领域,都可以分成两类。一类是天然世界,一类是人造世界,也就是自然科学和人文学科。这两个世界内部,往往都是同构的。我们再深看一层。其实「同构学习法」不仅是可以用一个领域解释另一个领域,它还有一种更大的作用:就是用一个领域的知识,去揭开另一个领域被刻意隐藏的东西。
正好最近看到 TCP 建立连接需要经过三次握手的原理,为什么要进行三次握手呢?这是为了防止已失效的连接请求报文段,突然又传送到了服务端而产生错误。
具体例子:「已失效的连接请求报文段」的产生在这样一种情况下:client 发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达 server。本来这是一个早已失效的报文段。但
server 收到此失效的连接请求报文段后,就误认为是 client 再次发出的一个新的连接请求。于是就向 client 发出确认报文段,同意建立连接。假设不采用「三次握手」,那么只要 server 发出确认,新的连接就建立了。由于现在 client 并没有发出建立连接的请求,因此不会理睬 server 的确认,也不会向 server 发送数据。但 server 却以为新的运输连接已经建立,并一直等待 client 发来数据。这样,server 的许多资源就白白浪费了。采用「三次握手」的办法可以防止上述现象发生。例如刚才那种情况,client 不会向 server 的确认发出确认。server 由于收不到确认,就知道 client 并没有要求建立连接。更多的 TCP/IP 的知识请看这里:关于 TCP/IP,必知必会的十个问题。
这段解释不算难懂,但是好多人并不能清楚地解释原因。我们可以用 RSS 邮件订阅的例子来说明,这两个事例虽然属于不同的领域,但是原理是相通的,这就是同构学习法吧。
你看,当我想要订阅某个网站上的精选文章时,它首先让我输入邮箱,然后向邮箱发送一封确认邮件,等我点击确认订阅后,网站服务器才会定期给我推送文章。在这个过程中,用户和服务商之间就进行了三次的交互:请求订阅→发送确认→确认订阅,是不是和 TCP 三次握手建立连接大同小异。如果有的用户输错了邮箱,他就收不到确认邮件。而且服务器也收不到用户的确认,它就会认为这个用户的操作有问题,不予以提供订阅服务。试想一下,如果服务器没有要求用户确认订阅会发生什么,它会直接向用户首次输入的错误邮箱推送订阅,一方面会给错误的收件人带来干扰,另一方面会浪费服务器的资源,带来额外的运营成本。看来,三次握手在这里同样是适用的。通过这么简明易懂的例子,让普通人也能理解 TCP 建立连接的原理,可见同构学习法的妙处。
孔子这位伟大的教育家就曾对他的学生说过:「举一隅,不以三隅反,则不复也。」意思是说:「我举出一个方面,你们应该要能灵活的推想到另外几个方面,如果不能的话,我也不会再教你们了。」所以,我们学一件东西,要可以灵活地思考,运用到其他类似的事物上。
得到 APP 提供了非常棒的知识服务,在这里可以升级你的大脑,提高认知水平,每天都有进步。特别推荐大家使用~