提起C语言之父,大家都知道那是贝尔实验室的鼎鼎大名的Dennis Ritchie(丹尼斯·里奇), 他同时也是Unix之父 (另外一位是Ken Thompson)。
C++之父也是贝尔实验室的Bjarne Stroustrup。
Java之父是Sun 公司的James Gosling。
Linux之父则是芬兰学生Linus Torvalds
......
这些技术和系统都有明确的创造者, 但如果我问互联网之父是谁,估计大部分人都要想一想了。
互联网是人类有史以来最伟大的发明之一, 正在深刻改变着人类的生活,但是互联网的建成却远非一两人之力。
1. 分布式网络
实际上互联网的孕育应该感谢当年的美苏争霸。
1957年10月, 苏联发射了人类历史上第一颗人造卫星, 引起了美国人的恐慌, 美国人意识到在全球争霸中,他们已经开始落后了。
受此刺激,美国当时的总统埃森豪威尔提出建立国防“高级研究计划署”(Advanced Research Projects Agency, 简称ARPA), 美国人在二战以后实在是太有钱了,他们给ARPA划拨了520万美元的筹备金,和高达两亿美元的项目总预算,是当时中国国家外汇储备的3倍。
这些钱的一部分,100万美元,被投入了 ARPA的 网络建设, 准确的说,这只是一个小型的实验网络,毕竟一件前人根本没有干过的事情, 这件事情的带头人就是Lawrence Roberts(拉里·罗伯茨)
Lawrence Roberts(拉里·罗伯茨)
ARPA NET一开始就确定了现在互联网的一个重要原则: 分布式网络。 拉里·罗伯茨认为:中心节点是靠不住的,如果建立一个中心节点把所有计算机连接起来,这个中心就会由于网络的扩展,流量过载而崩溃。
未来的网络各个节点应该是平等的,这样网络就可以任意的扩张,并且伴随着节点的增多,网络的能力也越来越强。
还有一种说法是这是为了应对苏联的军事威胁,如果仅有一个集中的军事指挥中心,万一这个中心被原苏联的核武器摧毁,全国的军事指挥将处于瘫痪状态,其后果将不堪设想,因此有必要设计这样一个分散的指挥系统——它由一个个分散的指挥点组成,当部分指挥点被摧毁后其它点仍能正常工作,而这些分散的点又能通过某种形式的通讯网取得联系。
不管如何,分布式的网络是一个伟大的思想, 直接奠定了现在互联网的基础。
2. 分组交换
ARPA NET是一个使用分组交换的网络,这也是现代互联网的一个支撑技术:数据在网络上不是整体传输的,而是把数据切成一块一块的碎片(分组),在网络中自由的选择最快捷的路径,达到目的地以后,自动组合还原成原始的数据。
其实除了分组交换之外,还有一种通过网络链路移动数据的办法:电路交换, 电路交互的的特点是在两个系统通话之前,网络中的各个节点需要分配资源,为该通话建立一个连接,这是个名副其实的连接,要预留资源和传输速率,更重要的是所有的分组数据都会走同一个连接到达目的地, 这一个连接只能被这次通信所使用,如果通信双方有暂停(例如打电话的停顿), 那连接的资源就被浪费掉了。
而分组交换网络中,并不会为每次通信在每个节点建立固定连接, 所以每个分组走的路径可能是不同的,传输链路可以被所有用户之间逐分组的被共享。
创造分组交换原理的人就是Leonard Kleinrock(伦纳德.克兰罗克) 。
Leonard Kleinrock(伦纳德.克兰罗克) 和“小精灵”,也就是日后路由器的前身
3.互联网创世纪
1969年10月, 互联网的前身 ARPA NET终于建成了, 当时只有四个节点:洛杉矶加州大学洛杉矶分校(UCLA)、加州大学圣巴巴拉分校、斯坦福大学、犹他州大学四所大学的4台大型计算机。
选择这四个结点的一个因素是考虑到不同类型主机联网的兼容性。
第一次试验颇具戏剧性, 克兰罗克在UCLA,通过网络向斯坦福发送第一个消息,很明显,这些天才们并没有意识到这是个具有历史意义的时刻, 也没有准备什么豪言壮语,这个消息平淡无奇,只是LOGIN这5个字母。
并不像阿姆斯特朗登月时说的那句很有媒体效应的一句话:这是我的一小步,确是人类的一大步。
每次发一个字母, 克兰罗克就通过电话问:收到了吗 , 确认收到后再发第二个字母。
实际上L 和 O 被网络成功的发到了斯坦福, 当发第3个字母“g”的时候, 网络崩溃了 -- 互联网的前身就是这么脆弱。
巧合的是 Lo 在英语中的意思是: 瞧! 看!(表示惊讶或引起注意), 也算是一条不错的消息
4. TCP/IP
最初的ARPA NET运行的是IMP(Interface Messaging (Interface Message Processor)和NCP(Network Control Program), 注意: 这时候协议(Protocol)一词还没有出现。
IMP/NCP成功了连接了ARPA NET的几个几个节点, 但是要想扩大网络规模, 尤其是面对不同类型和规格计算机的时候,就力不从心了。
让全世界的计算机和网络能够彼此通信,而不管他们使用的是什么样的硬件和软件, 这的确是个艰巨的任务。
这个任务被罗伯特·卡恩和温顿·瑟夫在1973年用TCP/IP率先完成了。
他们用IP协议给每个连上互联网的电脑分配一个地址,就像我们家里的门牌号一样, 然后用TCP协议实现了在一个不可靠的网络里进行可靠传输, 通俗来讲,就是发现数据丢失以后, 重新传送。
(码农翻身注: 参见之前的文章《TCP/IP之大明王朝邮差》)
TCP/IP发明的时候, 个人电脑,工作站, 智能手机还没有出现, 以太网、DSL、Wifi和其他接入网技术也没有出现, 他们俩肯定也不知道后来的Web,社交网站和流式视频。
但是40多年过去了, TCP/IP仍然支配着当今的互联网, 可见这个协议的扩展性和适用性, 我们不能不佩服罗伯特·卡恩和温顿·瑟夫深邃的洞察力, 以及这个协议背后的伟大思想。
2004年,罗伯特·卡恩和温顿·瑟夫由于“联网方面的开创性工作(包括TCP/IP的设计和实现)”获得了ACM图灵奖, 称他们为互联网之父一点都不为过。
温顿·瑟夫, 罗伯特·卡恩 和布什
为什么TCP/IP会这么成功呢?
TCP协议被称为面向连接的协议, 但实际上连接的状态完全保留在通信的两端(端系统), 而不是中间的网络元素(例如路由器和交换机), 中间的网络元素根本不会像虚电路那样维持TCP连接状态, 事实上,中间路由器对TCP连接完全视而不见, 他们只看到IP数据报 。
这样做带来了巨大的弹性, 对网络层施加了最小的要求,例如你想发明Web,只需要把一个新的服务器接入到网络中,定义一个新的应用层协议(例如HTTP), 然后客户端的电脑就可以访问这个服务器了,根本不用考虑网络中的路由器和交换机。
如果采用的是电路交换,那就麻烦了,由于中间节点需要维护连接状态,你想新加一个应用层服务, 不仅仅端系统需要改动, 中间网络也需要改, 这是非常不利的。
5. WWW
到目前为止, 互联网的基础设施完成了,上面也运行着一些像EMail, telnet这样的应用, 但是它仍然是专业科技人士的“玩具”, 和普通人相距甚远。
1984,蒂姆·伯纳斯·李来到了欧洲著名的原子核研究会(CERN), 在这里,他将实现人类历史上的又一大发明。
之前的互联网关注的是如何通过网络把计算机连接起来, 但是蒂姆·伯纳斯·李 在CERN开始了一个新的研究:如何把电脑里的信息连接起来。
这是个很大的需求,因为在CERN工作的科学家有一万多人, 他们使用着各种电脑和软件, 在一台电脑上你用这个系统登录, 换一台电脑就得登录另外一套系统, 在不同的电脑之间交换信息异常困难, 最先进的信息交换方式可能就是用Email了。
蒂姆·伯纳斯·李建议采用超文本技术(Hypertext)把CERN内部的各个实验室连接起来,在系统建成后,甚至可能扩展到全世界!
1989年,蒂姆成功开发出世界上第一个Web服务器和第一个浏览器。
虽然这个Web服务器简陋得只能说是CERN的电话号码簿,它只是允许用户进入主机以查询每个研究人员的电话号码,但它实实在在是个伟大的发明。
1989年12月,蒂姆为他的发明正式定名为World Wide Web,即WWW;
1994年 马克·安德森发明了更加易用的网景浏览器,彻底点燃了普通人对互联网的热情。
蒂姆·伯纳斯·李
更为伟大的是, 蒂姆·伯纳斯·李 没有为他的发明申请专利, 他说: “如果我当时申请了专利,现在WWW也只是众多封闭系统中的一个而已, 不同的系统永远也无法相容, 而我的愿望是每个人都能在WWW上分享信息,这是一项意义重要的活动, 因此我不能向人们要钱。”
我们都要感谢蒂姆·伯纳斯·李, 没有他,就没有普通人可用的互联网。
声明:原创文章,未经授权,禁止转载
你看到的只是冰山一角, 更多精彩文章,尽在“码农翻身” 微信公共号
我是一个线程
我是一个Java class
Javascript: 一个屌丝的逆袭
Java : 一个帝国的诞生
我是一个网卡
我是一个路由器
2016年春季互联网高端人才流动报告
TCP/IP 之 大明王朝的邮差
CPU 阿甘
Basic : 一个老兵的自述
小王的架构师之路
程序员在工作中必备的能力
码农需要知道的潜规则
IE为什么把Chrome和火狐打伤了
Node.js :我只需要一个店小二
假如我是计算机系老师
假如时光倒流,我会这么学Java
学会编程,而不是学会Java
15年编程生涯,资深架构师总结的7条经验
公共号:码农翻身
“码农翻身”公众号由工作15年的前IBM架构师创建,分享编程和职场的经验教训。