计算机科学导论(5):计算机网络

原文链接:计算机科学导论(5):计算机网络 | 远行的舟

参考:① 纪录片 《互联网时代》 ② 《计算机科学导论》 ③ 《TCP/IP 入门经典》 ④ 维基百科 ⑤ 阮一峰老师博客 ⑥ 哈尔滨工业大学阿里巴巴技术联盟互联网笔试面试整理 ⑦ 《HTTP 权威指南》

1776 年 3 月,瓦特制造的第一台实用性蒸汽机在英国波罗姆菲尔德煤矿点火,照亮了人类生活的一个新时代。成全了瓦特的大英帝国,凭借瓦特们提供的能量,在全球殖民时代称霸两百年。追赶隆隆作响蒸汽机的脚步,欧洲列强们以不同的态度,谱写了自己不同的命运。在人类工业革命的战场上最终凯旋的法国曾经以高于英伦岛数倍的薪金同时雇佣两万名英国技工,创造了弱国跻身列强奇迹的德国不仅开了以国家力量培训新技术人才的先河,也曾经有组织地针对英国盗取图纸和零件,在人类国家竞争史上创生了工业间谍的词汇。高举着哥伦布的风帆,在全球贸易中曾经独占鳌头的西班牙却在拥有人类一半以上黄金和白银的富足中迷醉了,虽然与英伦三岛近在咫尺,却在远隔大西洋的美国铺筑商业铁路二十年后才在巴塞罗那铺下第一根铁轨,始终不曾跨入工业强国的门槛。瓦特的蒸汽机,作为一项划时代的新技术,是试金石,是镜子,它甄别了人类所有生存集团参与竞争的品质,也映照出态度不同的国家此后数百年的兴衰沉浮。20 世纪中期,人类发明创造的舞台上,降临了一个不同凡响的新事物,众多学者认为,这是人类另一项可以与蒸汽机相提并论的伟大发明。这项可能创生新时代的事物,叫作互联网 (internet) ——《互联网时代》

正如我们很难想象计算机从我们身边彻底消失后的情景,我们也很难想象互联网从我们生活中消失后,我们的生活将是怎样的一番场景。计算机网络技术带来的由多个网络互相连接而成的互联网 (internet) 以及作为今天最大互联网的因特网 (Internet),不仅为我们生活的方方面面带来了无尽的便利,也催生了大数据、云计算、物联网等众多新兴概念。一个时代的机遇正在呼唤着我们,我们理应带着自信的笑容拥抱这个崭新的时代,而要成为这个新时代的弄潮儿,计算机网络技术就必须成为我们知识版图中最基础、最重要的一部分。本章,我们将从计算机网络技术的发展历史讲起,依次介绍网络通讯分层协议 TCP/IP 协议族的应用层、传输层、网络层、数据链路层和物理层,展示源主机与目标主机之间通信的基本过程就是:数据通过源主机各层的封装后,经由各种传输介质传送到目的地,再通过目标主机各层的解封装还原成原始数据。值得注意的是:计算机网络技术是一个颇为复杂的系统,本章只能算得上一个初步的介绍,其中的各种技术细节,笔者将在系统学习完计算机网络后于专题文章中再做讨论,而这应该是许久之后的事情了。

5.1 计算机网络技术的历史

北京时间 1957 年 10 月 5 日凌晨 3 时 28 分,人类历史上第一颗人造地球卫星在前苏联的拜科努尔航天中心发射升空,这颗名叫 “史伯尼克”,意为 “旅行同伴” 的八十三公斤的小星星,成为人类居住地第一个人工伙伴。5 天之后的记者招待会上,时任美国总统艾森豪威尔 (Dwight D.Eisenhower, 1890.10.14——1969.03.20) 公开表达了对国家安全和科技水平的严重不安,他说:“这个国家必须在国家生活中给科学技术和教育以优先权。” 两个月后,美国总统向国会提出建立高级研究计划署 (Advanced Research Projects Agency),简称 “阿帕” (ARPA),办公地点设在五角大楼内。新生的 “阿帕” 即刻获得了国会批准的五百二十万美元的筹备金及两亿美元的项目总预算,是当年中国国家外汇储备的三倍。今天,网罗了每一个人的互联网就萌芽在这项拨款中。

1966 年,日后被誉为互联网之父之一的鲍勃·泰勒 (Robert William Taylor, known as Bob Taylor, 1932.02.10——2017.04.13),成为阿帕信息技术处理办公室 (Information Processing Techniques Office, IPTO) 的第三任主任。鲍勃·泰勒当年走进五角大楼三层国防部长旁边的办公室时,他就被他的富有困扰了。阿帕资助每一个科研项目,会为研究者提供功能不同的计算机,它们动辄数十万上百万美元。泰勒的写字台旁,就环绕着三个功能不同的终端,这些庞然大物互不兼容,造成了经费的极大浪费。在纪录片《互联网时代》中,鲍勃·泰勒这样说道:“我想要做的事就是实现这些系统的在线连接,那么你在某个地区使用一台系统时,你还可以使用位于另一个地区的其他系统,就像这台系统也是你的本地系统一样。”

事实上,在这之前,将孤单的计算机连接的念头,在美国科学界酝酿已久了。1945 年,曾经参与发明第一颗原子弹和第一台电子计算机的科学家万尼瓦尔·布什 (Vannevar Bush, 1890.03.11——1974.06.28) 就提出了记忆延伸的概念,展望了关于信息检索、网络建设的可能前景。1960 年,泰勒的前任利克里德 (J.C.R.Licklider, 1915.03.11——1990.06.26) 也在 “Transactions on Human Factors in Electronics” 上发表了题为 “人机共生” (Man-Computer Symbiosis) 的文章,预言人们通过机器的交流,将变得比人与人面对面的交流更为有效。

1966 年春,泰勒迈出了实现这些设想的第一步,他走进阿帕署长赫兹菲尔德的办公室,提出由阿帕出面建构一个小型的实验网络。简短 20 分钟的交谈,泰勒离开署长办公室的时候手中已经握有一百万美元和送行的尾音。

谁来花这笔钱呢,泰勒心中的人选是唯一的,那就是时年 29 岁,虽不善交往却名声显赫的计算机天才拉里·罗伯茨 (Lawrence G.Roberts, 1937.12.21——)。泰勒以优厚的条件发出邀请时,他正在为林肯实验室两台不同的计算机之间的沟通进行实验。拉里·罗伯茨以 “不想做管理,只想搞技术” 为由拒绝了泰勒的邀请,此后的十个月中,泰勒每个月都会给罗伯茨打一次电话,但每次得到的回答都是相同的。后来泰勒逐渐了解到阿帕为林肯实验室提供了 51% 的资助,他请求他的老板打电话给林肯实验室,告诉他们:如果拉里·罗伯茨能来阿帕任职的话,将会为林肯实验室和拉里·罗伯茨本人带来最大的好处。在纪录片《互联网时代》中,拉里·罗伯茨说:“我是被‘胁迫’过来的,但是最后的结果是不错的。”

两周后,被“胁迫”到五角大楼的罗伯茨是这样体现泰勒的眼光的。罗伯茨用秒表对五角大楼内部所有走廊进行了测量,计算出各个办公室间最快的行走路线,人们戏称为“拉里路线”。寻找联结计算机的“拉里路线”,罗伯茨和一个时代的人类精英们在平坦和曲折中跋涉了一年半的时间。唐纳德·戴维斯 (Donald Watts Davies, 1924.06.02——2000.03.28) 保罗·巴兰 (Paul Baran, 1926.04.29——2011.03.26) 和伦纳德·克兰罗克 (Leonard Kleinrock, 1934.06.13——) 带来了作为当今网络通讯重要基础的 “分组交换/包交换” (packet switching) 理论,罗伯特·卡恩 (Robert Elliot Kahn, 1938.12.23——) 和温顿·瑟夫 (Vint Cerf, 1943.06.23——) 带来了后来被确定为网络通讯国际标准的 TCP/IP 协议族 (Internet protocol suite)。这些杰出的大脑,在碰撞中迅速达成了共识,中心是靠不住的,他们必须在革面性的分布中寻找前景,他们描绘自己构想的互联网,来源于人类经验中,存在了数千年的“渔网”。在纪录片《互联网时代》中,拉里·罗伯茨这样说道:“我们的观点是一致的,那就是分布式网络,因为如果你建立一个中心节点,把所有机器连起来,那么中心节点总是会出问题,中心节点会过载并崩溃,因为流量过大,支持不了,我们不能建造那样的网络。如果今天的因特网是中心节点式的,那么我们的中心节点,需要美国整个国家那么大。”

分组交换/包交换 (packet switching):在网络上,信息不是点对点的整体传输,而是把不论怎样规模的信息,分切成一个个轻巧的碎片,让它们在网状的通道里,自由选择最快捷的路径 (如今这个工作由路由器完成),在到达目的地后自动组合汇聚,还原成完整信息。

1969 年 10 月 29 日 22 时 30 分,聪明而辛勤的人们,终于来到了这一历史性的时刻。克兰罗克和助手在加州大学洛杉矶分校 (UCLA) 的房间里落座,另一端,斯坦福研究所研究员比尔·杜瓦在 500 多公里之外等待着他。事实上落座历史关头的人们,表达的雄心极其有限,他们只准备以新时代的方式,从洛杉矶向斯坦福传递一个包含五个字母的单词 LOGIN,意思是 “登录”。克兰罗克说:“我们键入 L,我们对比尔说,L 有了么?他说,有了;输入 O,有 O 了么?有了;输入 G,有 G 了么?死机了。” 仪表显示传输系统突然崩溃,通讯无法继续进行,世界上第一次互联网络的通讯试验仅仅传送了两个字母 “LO”,然而这两个简简单单字母的传递成功却标志着互联网正式诞生了,这不仅是属于分布式和包交换的 “L” 和 “O”,也是孕育大数据和云计算的 “L” 和 “O”,更是开辟人类社会崭新天地的 “L” 和 “O”.

最初的阿帕网,只在四个大学设立了它的节点。一年后阿帕网扩大到十五个节点,众多的计算机跑步般被编织人网,平均每二十天,就有一台大型计算机登录网络。1973年,阿帕网跨越大西洋利用卫星技术与英国、挪威实现连接,世界范围的登录开始了。

人类科学技术的飞速发展,为互联网出现准备了充足的条件,但是整个人类的观念意识,并没有做好迎接未来互联网的心理准备。不同的国家,不同的领域,一个国家内不同的地区,画地为牢的小圈子一个个出现,这些或被称为科研网,或被成为校园网,或被称为法国网英国网的网络们,如同十六世纪的欧洲大陆,公侯遍地,如何让这些操着不同语言,遵循着不同戒条的邦国,敞开门扉,互相接纳,形成统一的网络-互联网,需要一个规范电子设备如何连入,数据如何传输的共同标准。 人的集团之间的协商,总是比人与机器的协商,耗费的成本更高,历时十年,在众多各有坚持的网络通讯协议中,阿帕的 TCP/IP 协议族最终胜出。这里所耗费的时间,是发明计算机互联技术所用时间的三倍。

1983 年 1 月,TCP/IP 协议族 (Internet protocol suite) 成为人类至今共同遵循的网络通讯标准。同一年,原本意义上的阿帕网也寿终正寝,依照美国法律,所有政府出资的项目,因体现着纳税人的权利,都必须由纳税人分享,因此大量年轻科学家们蜂拥而入,担心军事机密安全问题的美国军方,从阿帕网分离出来,建立了自己的军网,去那里从事他们感兴趣的事情。与此同时,阿帕网也更名为因特网,其资金来源变成了美国国家科学基金会。

1987 年 9 月 20 日 20 时 55 分,一封以英德两种文字书写,意为 “跨越长城走向世界” 的电子邮件,依据 TCP/IP 协议从中国传到了德国,中科院高能物理所成为中国第一个接入因特网的机构。

获得了全球共同语言的互联网,在此后相当长的时间里,并不属于普通人,它仍然蜷缩在专业人士的圈子,与普通公众天高地远。带领亿万人跨越山峦的英雄叫蒂姆·伯纳斯-李 (Timothy John Berners-Lee, 1955.06.08——)。拉里·罗伯茨要实现的是不同电脑之间的连接,而伯纳斯-李让电脑连接了所有人。

1989 年,蒂姆·伯纳斯·李发明万维网 (World Wide Web)和超文本传输协议(HTTP),这是一个划时代的创举,网页网站等概念以及网页浏览器随之出现,于是全世界属于亿万普通人的登录开始了。伯纳斯·李没有为他的发明申请专利,2012 年伦敦奥运会开幕式上,伯纳斯·李在他当年发明万维网的电脑上敲了这样一句话:“this is for everyone”,这是献给所有人的。如果伯纳斯·李为他的发明申请专利,他将成为今天世界上最富有的人,他放弃了,他成为了精神上最富有的人。

1994 年 4 月 20 日,中国实现与因特网的全功能连接,成为接入国际互联网的第 77 个国家。

让我们记住这些为计算机网络技术的发明与发展作出杰出贡献的人们,他们是:逝世 1 年的鲍勃·泰勒、现年 81 岁的拉里·罗伯茨、逝世 18 年的唐纳德·戴维斯、逝世 8 年的保罗·巴兰、现年 80 岁的伦纳德·克兰罗克罗伯特·卡恩、现年 75 岁的温顿·瑟夫以及现年 63 岁的蒂姆·伯纳斯-李。正是许许多多如同他们这样的人类精英们以及其他许许多多普普通通的科学家与工程师的共同努力,才有了我们今天如此便利与美好的生活。

5.2 TCP/IP 协议族

在谈论计算机网络时,我们会经常听到一个专有名词:协议 (protocol). 那什么是协议呢?协议就是通信双方以及通信所需的所有中间设备必须遵守的信息加工与还原规则。你可能会问:为什么信息需要加工与还原呢?当两人面对面交流信息时,信息的确不需要被加工,当然也就不需要被还原。然而当两个人远距离交流信息时,比如 A 通过写信的方式与 B 进行交流时,如果 A 不把需要传递的信息写在信纸上,不把信纸封装在信封里,信封上不写上必要的收件人和寄件人信息,如果 B 不去邮局领取这封信件,不拆封信封然后从中取出信纸,不认真读信纸上的文字,上述提到的几个步骤,但凡有一个没有做到,那么 A 与 B 之间的通信就将以失败告终。上述 A 要做的这些事情可以视作对信息的加工,而 B 要做的这些事情可以视作对信息的还原。此外,这些信息的加工与还原必须遵循统一的规则,否则通信也将以失败告终,例如,如果 A 这边的邮局默认信封上应先写收件人信息、后写寄件人信息,而 B 这边的邮局默认信封上应先写寄件人信息、后写收件人信息,那么 A 写的这封信可能在到达 B 这边的邮局后会被自动返回给 A 这边的邮局,于是双方的通信就进行不下去了。

当通信比较简单时,信息的加工与还原只涉及一个步骤,此时只需要一条简单的协议就可以了,然而当通信变得复杂时,信息的加工与还原就会涉及多个步骤,就需要多条协议了。例如如果 A 与 B 希望他们的信件即便被拦截也不会泄露信息的话,那么他们之间的通信将不仅需要规定如何收发信件的协议,还需要一个如何对原始信件进行加密和对加密信件进行解密的协议。多条协议通常对应于信息加工与还原的多个步骤,每个步骤对应一条或多条协议,于是就出现了协议分层的概念,图 5-1 有助于我们理解这一概念。

图 5-1 一个三层协议

计算机之间的通信就是一个涉及多个步骤的信息加工与还原过程,这些过程遵循的协议族自上而下地被分为五层应用层 (application layer)、传输层 (transport layer)、网络层 (network layer)、数据链路层 (data link layer) 和物理层 (physical layer),这些协议族被称为因特网协议族 (Internet protocol suite),这个协议族里面包含有两个基础性的协议:位于传输层的传输控制协议 (Transmission Control Protocol, TCP) 和位于网络层的网际协议 (Internet Protocol, IP),因而因特网协议族通常被人们称之为 TCP/IP 协议族或直接称为 TCP/IP 协议。图 5-2 展示了计算机 A 经由两台交换机、一台路由器与计算机 B 进行通信时各个设备涉及的协议分层。

图 5-2 通过因特网通信

我们将计算机 A 称为源主机,计算机 B 称为目标主机。要实现源主机 A 中应用程序与目标主机 B 中应用程序间通信的任务,大致需要如下几个步骤:

  • 源主机 A 依据应用层相关协议将数据封装为消息 (message),消息由头(header)和数据组成,头中包含应用程序的名称(name)等信息;
  • 源主机 A 依据传输层相关协议将消息封装为 TCP 分段 (TCP Segment) 或 UDP 数据报(UDP Dataframe),TCP 分段 / UDP 数据报由头(header)和消息组成,头中包含应用程序的端口(port)等信息;
  • 源主机 A 依据网络层相关协议将 TCP 分段 / UDP 数据报封装为 IP 数据报 (IP Dataframe),IP 数据报由头(header)和 TCP 分段 / UDP 数据报组成,头中包含 IP 地址
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值