网络协议传奇(二):横空出世TCP

网络 网络管理
本节内容将正式进入网络协议内容。但是在网络协议种类已达几千种之多的今天,显然我们无法逐个详细追溯它们的发生发展,所以本节内容以当今应用最广的网络协议族TCP/IP为例,借以管窥网络协议技术史之一斑。

本节内容将正式进入网络协议内容。但是在网络协议种类已达几千种之多的今天,显然我们无法逐个详细追溯它们的发生发展,所以本节内容以当今应用最广的网络协议族TCP/IP为例,借以管窥网络协议技术史之一斑。

《圣经·旧约·创世记》里的“巴别塔”讲述的是语言多样性消解人类生产力的故事,而网络从诞生到后来的不断完善,其实就是持续消除“巴别塔”问题的过程。

[[251011]]

(图片来源:包图网)

网络协议原始版

阿帕网的创立者们面对的一个现实情况是:不同企业推出的不同型号的计算机都有着一套独特的控制语言和文件组织方式,而这些结构性差异使任何两台不同型号的机器都无法展开合作,也就是现在所说的互联互通。如果要形成计算机网络,怎样才能把不同型号的电脑连在一起呢?最初,他们通过一个由BBN研制、被命名为接口信号处理机(IMP)的设备解决了这个问题——IMP被安装于大型主机与网络之间起到中介作用,其任务有两个:接受远程网络传来的信息并转换为本地主机使用的格式;负责线路调度工作。这样一来,计算机系统间的不兼容问题得以规避。1969年11月21日,具有4个节点的阿帕网搭建完毕并正式投入运行。

1969年11月21日,具有4个节点的阿帕网搭建完毕并正式投入运行

但是,新的问题接踵而至。当时的阿帕网由分布在美国西海岸不同区域的四台大型机构成,四大主机通过专门的IMP和专门的通信线路相互连接。阿帕网运行后才发现各个IMP连接的时候,需要考虑用各种型号计算机都认可的信号来打开通信管道,数据通过后还要关闭通道,否则这些IMP不会知道什么时候应该接收信号,什么时候该结束,这就是我们所说的“通信协议”的概念。

1970年12月,一种叫做“网络控制协议”(Network Control Protocol,NCP)的协议被用于阿帕网,该协议由史蒂夫·克拉克(S.Crocker)领导的网络工作组(NWG)完成。但随着阿帕网用户的增多,NCP逐渐暴露出一些缺陷,如:不能互连不同的操作系统,未给网络中的每台电脑设置唯一的地址、缺乏纠错功能等,导致数据在传输过程中一旦出现错误,网络就可能停止运行。这些问题使得网络的实用性大打折扣。

TCP/IP横空出世

在1970年代,大量新的网络已经开始出现,包括计算机科学研究网络(CSNET,Computer Science Research Network)、加拿大网络(CDnet,Canadian Network)、因时网(BITNET,Because It's Time Network)和美国国家自然科学基金网络(NSFnet,National Science Foundation Network)。但是阿帕网无法做到和其他计算机网络的交流,而随后的实验也验证了现有阿帕网协议并不适合跨越多个网络运行,这个结果触发了更多有关协议的研究工作,并最终发明了“传输控制协议”(TCP,Transmission-Control Protocol)和“因特网协议”(IP,Internet Protocol),即TCP/IP模型和协议。

[[251013]]

鲍伯·卡恩                                                            温顿·瑟夫

TCP/IP协议由供职于DARPA的鲍伯·卡恩(Bob Kahn)和斯坦福大学副教授温顿·瑟夫(Vinton G.Cerf)联手完成,1974年12月,他们的第一份TCP协议详细说明正式发表。TCP/IP是最早出现的网络协议之一,也是最早出现的互联网协议。

事实上,TCP/IP协议解决的是另一个“巴别塔”问题。前面我们遇到的是不同型号计算机因控制语言和文件组织方式的不同而无法连接合作,现在面对的则是不同局域网络之间因有着不同的网络结构和数据传输规则而造成的连接通信障碍。如果将这些局域网络连接起来,各网络之间就要通过相应的规则来传输数据。TCP/IP协议很好地解决了这个大问题,它的里程碑意义在于建立了网际间的开放互连模型,统一了网际间的交流语言,进而为真正互联网(Internet)的诞生打下了技术基础。

TCP/IP协议首先着眼于给每台电脑都分配一个唯一的确定的地址,就像住宅的门牌号一样,有了它快递员才能把包裹准确投递到位——这就是IP。而TCP则负责监督传输过程,一出现问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地——这套思想也直接导致了路由器的出现。思科应该感谢一下这两位技术先驱,因为它就是从路由器起家,继而一度成为了网络基础设施的代名词。而其后的历史也证明,TCP/IP协议和路由器的发明和使用,大大加速了互联网的普及。

政府的角色:金主、保姆、推销员与独裁者

当时为了鼓励采用新协议,美国国防部高级研究计划署给斯坦福大学、BBN公司和伦敦大学学院各一份合同,以开发不同硬件平台上TCP/IP协议的运行版本,包括IBM、DEC和HP系统等。结果由温顿·瑟夫领衔的斯坦福大学团队捷足先登,首先制定出了通过详细定义的TCP/IP协议标准,并在大约一年时间里,实施了三个可以互操作的独立TCP(TCP/IP协议的前两个版本以TCP命名,从第三个版本开始以TCP/IP命名)。

1977年11月22日,一辆载有一个无线传输器的厢式货车沿着旧金山南部某处的一条公路行驶,它发出了一个数据包信号,这个信号将在无线网络和阿帕网之间传输,同时它还将在一个卫星网络上传输,这个网络将阿帕网与欧洲连接到了一起。这个信号从加利福尼亚州跳跃到波士顿,然后又传输到挪威和英国,接着回到西弗吉尼亚的一个小镇,最后回到了加利福尼亚州。这次试验使得TCP/IP协议首次在三个独立的计算机网络之间完成了信号传输,行程9.4万英里,没有丢失一个比特! TCP/IP协议的技术能力得以证明。“那是真正的互联网活动。”瑟夫在后来的回忆中说道。

为了推广TCP/IP协议,美国国防部高级研究计划署以低价出售TCP/IP的方法,并资助BBN公司和加州大学伯克利分校,以推动将BBN公司开发的TCP/IP加入BSD UNIX操作系统。BSD(Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统,BSD UNIX当时在多数大学中流行,它由加州大学伯克利分校开发和发布。计划署的目的很简单,就是要让TCP/IP借势进入主流。

比尔·乔伊(Bill Joy,曾担任Sun的首席科学家)当年在伯克利求学时主持开发了最早版本的BSD。1980年初,当美国国防部高级研究规划署向BBN公司和伯克利提出上述需求时,还是研究生的比尔·乔伊断然拒绝把BBN TCP/IP加入BSD,因为在他看来BBN的TCP/IP写得并不好。结果是比尔·乔伊另起炉灶,很快就写出了高性能的伯克利版TCP/IP,它能够让TCP/IP更高效地融入Unix系统和内核。在后来的一次会议上两方相遇,BBN的人问:你怎么写出来的?比尔·乔伊答:简单,你读协议,然后编程就行了。曾经承建了阿帕网的BBN竟然输给了一个研究生,这的确令人难堪。不过,事实证明,TCP/IP与流行操作系统Unix的结合是其成功的一大源泉,这也是美国国防部做出的另一个高明之举。

1983年,伯克利推出内含TCP/IP的第一个BDS UNIX,项目组用一种新的编程接口重写了TCP/IP,这个编程接口就是随着Berkeley UNIX4.2BSD一起发布的著名套接字(socket),他们还编写了许多应用程序、工具以及管理程序,以便展示通过套接字使用网络有多么的容易。

机缘巧合的是,那个时候许多大学刚刚得到了第二台或者第三台DEC公司的VAX计算机以及连接它们的局域网,但是他们却没有联网软件。当4.2BSD横空出世,TCP/IP、套接字编程接口以及许多网络工具等整个软件包被立即采纳。而且,通过TCP/IP把局域网连接到阿帕网非常容易,许多局域网也的确这样做了。由此,TCP/IP逐步升级为主流网络协议。

接下来,大一统时刻终于到来!根据美国国防部长办公室的“命令”,1983年1月1日联入远程网的所有计算机都必须采用TCP/IP,NCP将被停止使用。如同带队者喊出“齐步走”的口令,1983年1月1日的这一天,所有的主机都要同时转换,否则它们就不得不通过临时机制进行通信。当然,此项安排早在前几年就已经进行了精心策划,所以这次转换的过程十分顺利。至此,这个以阿帕网为主干网的网际互联网被人们称呼为Internet,而TCP/IP协议也正式开启了它的传奇之旅。

时间进入到1986年,互联网的另一个重要推手出场了,它依然是一家美国政府机构——美国国家科学基金会NSF(National Science Foundation)。那一年,NSF建立了6大超级计算机中心,为了使全国的科学家、工程师能够共享这些超级计算机设施,NSF建立了自己的基于TCP/IP协议族的计算机网络NSFNET。其间的种种细节自不必说,到了1990年6月,NSFNET彻底取代了阿帕网转而成为Internet的主干网。

到了上世纪90年代,美国政府意识到仅靠政府资助,难以适应互联网应用的发展需求,所以开始鼓励商业部门介入。1992年,美国IBM、MCI、MERIT三家公司联合组建了一个高级网络服务公司(ANS),建立了覆盖全美的T3(44.746M)主干网ANSNET,并成为继NSFNET之后的又一条Internet主干网。随后,美国国防部高级研究计划署和美国国家科学基金会撤销对阿帕网、NSFNET的资助,因特网由此开始进入商用。

这俨然是一场规模空前的接力赛,纵观互联网发生发展的前20年,美国政府不仅选对了赛道,还押对了选手。其间的种种决策和变革,都实质性地推动了互联网的发展。对于初期的互联网而言,美国政府机构无疑是充当了孵化器的角色,其间有实质性的资金支持,也有精准的推广普及策略,还有强制性的“命令”行为,更有适时地引入商业资源,最后又适时地功成身退。在成长期呵护备至,在长大之后果断放手,进退取舍之间自有气象。其间美国政府的面目角色也多有不同,它是保姆、金主、推销员、合作伙伴,甚至是“独裁者”,可谓刚柔并济,多管齐下,但目的只有一个——引导互联网向正确的方向发展。我们甚至可以设想一下,如果当初政府角色缺位,互联网将会怎样?

参考资料:

  • 揭开数据中心网络协议家族史
  • 互联网怪谈9:没有阿帕网,就没有互联网
  • 百度百科 TCP/IP协议
  • 网络的基本概念和分类
  • 阿帕网:“冷战”催生的传奇作者:刘洋 发布时间:2012-05-17 来源:环球财经
  • 回顾互联网的前身——“阿帕网”
  • TCP/IP协议维基百科/百度百科
  • 技术往事:改变世界的TCP/IP协议
  • 从计算机和计算机网络的发展看TCP/IP协议的重要性 陈中炜
  • 网络安全协议在计算机通信技术当中的作用与意义
  • 计算机通信技术当中网络安全协议的作用剖析
  • 施乐的悲剧 环球财经 杨涛编译
  • 《连线》杂志文章《TCP/IP设计者卡恩与互联网的第一次“圣餐”》
  • 《计算机网络(第5版)》
  • 互联网简史
  • 拜读一下计算机界牛人前辈们
  • 百度百科:BSD
  • IPv6的未来
  • 第9章 网络安全协议(https://wenku.baidu.com/view/cd6d092b647d27284b7351ec.html)
责任编辑:赵宁宁 来源: 51CTO
相关推荐

2010-03-25 10:04:10

UbuntuOne M

2021-12-17 07:00:56

ESMongoDBRedisJson

2010-12-09 09:09:37

2016-10-08 23:30:58

Power8云计算

2013-11-01 09:07:15

2022-05-12 15:25:16

恶意软件网络攻击

2009-05-07 18:50:35

四核Nehalem服务器

2016-04-27 11:01:11

SparkStormApache Apex

2023-04-19 07:34:21

AutoGPT程序员GitHub

2023-02-21 21:48:29

2014-01-17 14:08:45

移动os国产软件

2011-05-04 15:09:56

激光打印机奔图科技

2020-10-12 14:47:25

芯片半导体技术

2014-11-13 16:37:50

2020-10-28 11:54:05

AI 数据人工智能

2015-06-19 09:21:52

JointForce解放号

2010-06-23 16:19:15

华硕KM-91

2017-10-16 15:36:07

零售

2014-01-17 17:27:05

QNAPvNAS虚拟机

2023-07-27 16:53:10

点赞
收藏

51CTO技术栈公众号