4比3好

1比0好

1998年之前某一天我正在准备高考,语文老师在带领我们做试题。老师说他不相信题海战术,但是相信熟能生巧。当时我认为高考语文的阅读理解比英文的阅读理解还难。

老师正在给我们讲的一篇语文的阅读理解文章是爱因斯坦在一个大学的演讲。其中有一段话,“我倒想起一个娶了不称心的妻子的小伙子。当人家问他是否感到幸福时,他回答说:‘如果要我说真心话,那我不得不扯谎了’ ”。试题中其中一道题要求我们解释小伙子说这话的意思。

记得当时同学们的回答五花八门。老师后来说,小伙子的意思是有老婆比没老婆强。我将信将疑,同学们也大都有不同的意见。此事至今过去了17年,我记忆犹新。现在看到周围都有剩男剩女,我想老师说的是对的。归纳一下就是有比没有强,1比0好。

1998年我考上了大学,语文成绩没有太拉我后腿。

2比1好

大学我不是计算机系,但我们也开计算机文化课程,我知道了2进制。想象一下原始人怎么计数?不管是结绳或在山洞壁上划线,都只能说是1进制。1进制如果表示大数那将会“长长长长长长长……”比长江还长。所以,不管是一小时60分的60进制,还是半斤等于八两的16进制,不管是我们掰着指头算的10进制,还是表示阴阳八卦的2进制,对1进制来说都是相当大的进步。

计算机采用2进制,因为电子元器件容易区分两个状态,而不容易区分多于两个状态。据说2进制的发现者从中国的阴阳八卦中找到了灵感,八卦图中的 “–” 可以和2进制的0对应,“一” 可以和2进制的1对应。2进制是计算机的基石,计算机是改变世界的发明,使人类进入信息社会。可以说没有2进制就没有现代计算机。

2015年中共十八届五中全会决定,全面实施一对夫妇可生育两个孩子政策,而取代之前的一孩政策。这对中国人民来说,是个好事。之前人口的4-2-1结构,长期下去,明显是会导致绝种的。现在变成4-2-2,比之前有进步。“只是对中场球员来说,压力更大了。”这对如我一样处于中场的大多数人来说应该深有感触。对这个政策,我看国外有网友评价说,他们也需要更多的人生产苹果手机(iPhone)。可见这是对世界人民也都有好处的事。由此推出2比1好。当然没有限制也许更好。

3比2好

大学后,我考取了计算机系的研究生,学了计算机网络与互联网。计算机使人类进入信息社会,互联网使人类获取信息更方便,在信息面前平等。互联网更是个伟大的发明。我们浏览的网页都是由超文本传输(HTTP)协议传输的,它是个应用层协议,它的下一层是传输控制协议(TCP)。可以说TCP是应用最广泛的传输层协议。TCP是采用三次握手建立连接的。为什么要采用三次握手呢?为了使传输可靠。

想象我给你发短信,我怎么知道你收到了呢?收到后你回我发给你的短信。

你怎么知道我收到了你的回信呢?我回你回我发给你的短信。

然后你回我回你回我发给你的短信。再然后我回你回我回你回我发给你的短信……

当然协议的设计者不会这样让我们回来回去的。你或我发一条短信各算一次握手。规定时间内,如果我没有收到你的回复,则我重新发短信。规定时间内,如果你没有收到我回复你的回复,则你就认为我没有收到回复,我们之间的联系有问题。通过这种方式,三次握手就能保证可靠传输,而二
次不行,一次更不行。可见,3比2好。

4比3好

哪里有压迫,哪里就有反抗。哪里有自由,哪里就有人滥用自由。TCP的三次握手方式简单地实现了可靠传输,可容易受人攻击。下图是TCP三次握手的示意图。

tcp three way handshakes

TCP第一次握手的消息名是SYN(Synchronize),有一种网络攻击方式就叫SYN洪水(SYN flood)攻击。就是用户不停地发SYN消息,但从来不发回复。这样会导致服务器会处于等待状态一段时间。服务器保存这样的状态需要耗费内存(memory)资源,资源消耗光,就会导致服务器不能正常服务。

我研究生毕业后相当长时间从事通信行业软件开发。通信行业发信令消息会用到SCTP协议,它能解决SYN洪水式的攻击。SCTP采用4次握手。下图是SCTP 4次握手示意图。

sctp 4-way handshakes

在服务器端收到第一条握手请求的时候,它计算一个神秘数字(cookie),然后响应。响应过后它不需要保存任何状态。只有在它再次收到对方的带有服务端生成的cookie的请求后,它才会根据cookie信息来恢复连接信息。现在对方即使一直发首次握手请求,在服务器端因为不保存状态,所以只耗费处理器(CPU)资源,而不耗费内存(memory)资源。如果对方一直发首次握手请求并且也会跟着发带cookie的握手请求,那对方也要保存状态,那就相当于对方在攻击服务器端的时候自己也受到攻击。4次握手解决了3次握手的问题。这又显示了4比3好。

除了4次握手之外,相比TCP,SCTP还有其他特性如多归属(multi-homing)和多管道(multi-path)等。但它在通信行业外用得不多,有历史原因也有经济上的原因,换一种传输协议要成本的嘛。现在IETF组织想学习SCTP的特性来改进TCP(参见RFC6824),从而使其具有SCTP的优点又降低改造成本。而谷歌公司也在设计QUIC(Quick UDP Internet Connections)协议来实现部分SCTP类似的功能。

n+1比n好

1比0好,2比1号,……,n+1比n好,这多像数学归纳法啊。数学归纳法就像我要上一个房,我不知道它多高,但我有个梯子通向房顶。我只要上第一阶,上第二阶,然后下一阶,这样一阶一阶下去,最终我就能上房揭瓦了。n+1比n好是个美好的愿望,我希望这个命题永远为真,因为我希望明天会更好。

参考资料

爱因斯坦讲话原文

爱因斯坦讲话中文翻译

讲TCP协议的演进的

2比1好也是一首歌

一篇介绍2进制的文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值