一本书读懂TCP/IP
上QQ阅读APP看书,第一时间看更新

2.5 信息大脑——主机

主机从来都觉得自己是IP世界的主人,IP世界所有其他元素都是为它服务的。

没错,站在自己的角度看世界,谁都会认为自己是绝对的主角。

TCP/IP世界的信息,是在主机之间进行交互的。PC、服务器、工控机,这些都是主机!还有人会问,上网本是不是主机?各种PAD是不是主机?智能手机是不是主机?这些问题的确让我们有点难以回答。广义点讲,具有计算、存储能力的通信终端,都可以归为主机,本书并不打算过多地纠缠于这些概念的严肃厘清(其实再严肃也很难厘清),这方面的似是而非无伤大雅。

我们说“互连”,其目的就是为了把所有的主机连接在一起,其他元素,路由器、交换机、防火墙、网线、无线电频率,似乎都是陪衬。主机不但有存储功能,还要接收、发送、生成、处理IP包,并将IP包中的信息通过外设呈现出来,使人的感官能感受到,也就是听到或者看到(未来可能会有“闻到”)。

TCP/IP世界的主机除了CPU、内存、用于等硬件连网的网络硬件卡外,通常具备以下的几类部件与IP有直接联系:以太网卡、操作系统、协议栈、数据库、应用软件。

1.PC

PC(个人计算机)这个名词我们就不解释了,就是那个你办公桌上摆着的,每天都要面对的,干什么工作似乎都离不开的、让你又爱又恨的家伙。

1981年8月,国际巨头IBM在纽约曼哈顿华尔道夫饭店的会议厅展示了一款小型计算机。在此之前,计算机是普通用户难以企及的庞然大物。IBM公司为它的新产品命名为IBM PC(Personal Computer,个人计算机)。

尽管之前已经有几家公司在做类似的产品,但因为IBM的实力和它准确的价格、性能定位,使其迅速成为个人计算机业的霸主。

图2.10 PC

1982年,美国《时代》周刊评选这台PC的老祖宗为“年度封面人物”,在随后的两年时间里,IBM卖出了20多万台PC,这可是它当初确定的未来5年的销售目标!

《时代》周刊当时还预测“2000年将会有8 000万台PC投入使用”,但实际上21世纪初全球个人电脑总数已达5亿台!更重要的是,PC给人们生活带来了无法逆转的改变。

我们有必要了解一下IBM,这家1911年创立于美国的企业(刚成立时候叫作CTR公司,1924年改名为IBM,即“国际商用机器公司”),总部位于纽约阿蒙克市,目前拥有全球雇员30多万人,是全球最大的信息技术和业务解决方案公司。

然而在IBM创立之初,该公司的主要业务是商用打字机、员工计时系统、磅秤(雷倒!)、自动切肉机(再次雷倒!),而后转为文字处理机、穿孔卡片设备等。第二次世界大战期间,IBM甚至还造过武器。

今天的IBM是一艘工业企业的超级航母,在多个领域都有很高造诣。

在计算机产业,它是长期的领导者,在大型机/小型机和便携机方面的成就举世瞩目。当年与国际象棋世界冠军卡斯帕罗夫对战的超级计算机“深蓝”以及“更深的蓝”就出自IBM。

软件方面,IBM是除微软外的世界第二大实体,整合有五大软件品牌,包括Lotus、WebSphere、IOD、Rational和Tivoli等,在各自方面都是领先者或强有力的竞争者。

2005年,IBM出售桌面计算机与笔记本电脑业务给中国IT企业——联想集团。自此,Thinkpad易主Levono。

2009年,IBM的CEO彭明盛提出了一个庞大的近乎疯狂的“智慧地球”计划,这将成为未来10年蓝色巨人IBM战略发展的核心,每年将投入30亿美元用于此计划的实施。

这个计划的定义大致是:将感应器嵌入和装备到电网、铁路、大坝、建筑等各种现实实体中,形成物物相联,然后通过超级计算机和云计算将其整合,实现社会与物质世界的高度融合。在此基础上,人类可以更加精细和动态地管理生产和生活,达到“智慧”状态,提高资源利用率和生产力水平,改善人与自然界的关系。

在第10章的“物联网”一节,我们将会重新开启这一话题。

2.服务器与工控机

服务器是一种运行管理软件以控制对网络或网络资源(磁盘驱动器、打印机等)进行访问的计算机,并能够为在网络上的计算机提供资源,使其犹如工作站那样地进行操作。

工控机(Industrial Personal Computer)是一种加固的增强型个人计算机,它可以作为一个工业控制器在工业环境中可靠运行。

我们知道,在工业现场,一般都有强烈的震动,灰尘特别多,还有很高的电磁场干扰,并且一般工厂都是连续作业的,工人三班倒,计算机极少关机。

在这样的环境下,一般的PC机和服务器是支撑不住的,这就要工控机大显身手了。

工控机的机箱采用钢结构,有较高的防磁、防尘、防冲击的能力,机箱内配置有专用电源,抗干扰能力很强。最为重要的一点是,工控机连续工作的能力很强,很多工控机都连续工作达数年之久!

早在20世纪80年代初期,美国AD公司就推出了类似工控机的MAC-150工控机,随后IBM公司正式推出工业个人计算机IBM7532。

3.虚拟主机

一台服务器,只提供一种资源,这种资源对硬件和带宽的要求并不高,无论是CPU、内存还是硬盘,都是一种浪费。能不能在这台服务器上运行多个应用呢?

虚拟主机将在这样的应用中大显身手。

虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点和应用组件,提供必要的站点功能与数据存放,以及必要的传输功能。

CPU和内存,可以同时处理多个进程;硬盘是文件系统,多个应用之间并不冲突,甚至还互相有关联。

这一方案的出现,对IP世界产生了重大贡献!由于多台虚拟主机共享一台真实主机的资源,每个用户承受的硬件费用、网络维护费用、通信线路费用均大幅度降低,互联网真正成为人人用得起的网络,这对中小企业而言意义重大。

每一个虚拟主机都具有独立的域名和完整的互联网服务器(支持WWW、FTP、电子邮箱或其他互联网服务)功能。从用户角度根本看不出他们在同一台服务器上。

当然,虚拟主机不是万能的,它也会受到性能限制。一台主机只能够支持一定数量的虚拟主机,具体数量视主机性能而定;当超过这个数量时,性能急剧下降。

虚拟主机暂时介绍到这里,在云计算一节里,我们还会提到一个与此类似的概念——虚拟化。

4.以太网卡

以太网卡是一块能插在计算机上的卡,一般它们都被插到计算机的PCI插槽上。这张卡一般至少有一个以太网接口(一般是RJ45的接口)。以太网卡的驱动程序会与操作系统中的协议栈接驳。

以太网卡上有自己的地址——MAC地址,以太网卡在诞生之日就被写死了MAC地址,当然,黑客高手们有办法修改这些地址。

目前大量的计算机主板已经集成了以太网卡,用户无需单独购买,即可连接以太网线。而在10多年前,网卡曾被认为是计算机的高级外设。

图2.11 计算机装上了以太网卡,就不再是“信息孤岛”

5.操作系统

操作系统是控制程序运行,管理系统资源(尤其是磁盘、内存、接口和外设),并为用户提供操作界面的系统软件的集合。

自计算机诞生以来,人类创造了至少100种操作系统,而真正能否发扬光大被人们广泛使用的,除了之前提到的UNIX和LINUX,还有微软的DOS和Windows、苹果的MAC等,以及后面我们会介绍的手机操作系统。

为什么会出现“操作系统”这一概念?应用软件不能直接运行在计算机硬件上吗?加上中间这个“系统”,会不会对性能造成影响?

图2.12 操作系统是计算机硬件和软件之间的“桥梁”

我们知道,计算机的外设种类繁多,在一台计算机上安装外设,最关键的是需要让计算机的CPU能够有效管理此外设,而这种管理,是通过“驱动程序”进行的。驱动程序下对硬件外设,上对应用程序,它是这两者之间的桥梁和纽带。

很容易理解,应用程序必须能够调用这种驱动程序,才能对此外设进行操作。假如没有操作系统,应用程序必须直接与外设的驱动程序打交道,会让社会分工变得混乱:做应用程序的软件人员,必须了解硬件;做硬件的人,不得不去学习应用程序的内核——这是严重的资源浪费。操作系统就是基于这样的背景下诞生的。

不可否认的是,当前主流的操作系统都包含了大量的应用程序,Windows就自带各种游戏、记事本、写字板、网页浏览器(Internet Explorer)等,这些都是商业运作的需要,而非操作系统的初衷。

第一部计算机ENIAC没有操作系统,其更像是一个机械算盘,这种计算机的建立方式与效能,不足以执行任何一种操作系统。1947年,晶体管发明,接着,莫里斯·威尔克斯发明了微程序方法,使得计算机不再是机械设备,而是电子产品。系统管理工具以及简化硬件操作流程的程序很快就出现了,且成为操作系统的鼻祖。

20世纪60年代,商用计算机制造商开始制造所谓“批次处理系统”。这种系统可将工作的建置、调度以及执行序列化。此时,厂商为每一台不同型号的计算机创造不同的处理系统,因为为某个特定型号计算机而写的程序无法移植到其他计算机上执行。如果这种状况持续下去,就根本不可能有计算机高度普及的今天。

计算机界大腕IBM深喑其道,锐意改革,于1964年推出了一系列用途和价位都不同的大型计算机——IBM System/360。这是大型主机的经典之作。他们都共享代号为OS/360的操作系统,这是一次伟大的尝试!System/360系列大获成功,直接导致其成为IBM以后大型系统的祖先。

接着发生的故事,我们之前已经讲过,UNIX于20世纪60年代末呱呱坠地,LINUX于1991年横空出世。

就在UNIX出现后的1975年,一个后来曾经成为全球市值最高的企业诞生了。这家公司开始非常低调,连起名字都非常“弱势”——Micro(微小)-soft(柔软),没错,Microsoft,微软。他们开发的软件,系统庞大;他们的行事风格,足够的强硬,这与“微软”二字完全不符。

图2.13 微软公司的标志变迁

19岁的哈弗大学辍学生比尔·盖茨和他的高中校友保罗·艾伦建立了微软公司,总部设在华盛顿州的雷蒙德市,注意,华盛顿州和华盛顿市完全是两回事。华盛顿州位于美国西部,与汽车城西雅图毗邻。

像所有刚刚创业的年轻人一样,他们首先得找到能填饱肚子的家伙事儿。于是他们根据自己的特长,开卖当时流行的BASIC解译器,也顺手做点其他小生意。

由于微软是少数几个BASIC解译器的商业生产商,很多家庭计算机生产商在其系统中采用微软的BASIC解译器。很快,微软BASIC解译器成为公认的市场标准。但是BASIC再成功,也无法让微软变成一家世界级的大公司。这让雄心勃勃的盖茨很苦恼。

1980年,一个重大事件改变了微软和这对高中好友——IBM选择微软为其新PC机编写关键的操作系统软件!促成这件事儿的,很可能是盖茨的母亲——当时她是IBM的董事。

俗话说“背靠大树好乘凉”,这可是千载难逢的好机会!如果运气好,说不定能成为IBM的永久合作伙伴,这个凉如果不乘,那岂不太傻了?如果盖茨先生这么想,他也许会成为IBM的一个部门经理,成为一名高级白领,年薪300万或者500万美元,并于某年某日光荣退休,荣归故里,诸如此类。

然而盖茨先生不是这么想的,因为他不仅仅是个技术高手,更是个绝顶聪明和富有雄心(也许是野心)的商人。

他以5万美元的价格从西雅图一位程序编制者手中买下了一个操作系统——QDOS的使用权,在进行部分改写后提供给IBM,并将其命名为Microsoft DOS。IBM-PC的普及使MS-DOS取得了巨大的成功,因为其他PC制造者都希望与IBM兼容。

1984年,微软公司的销售额超过1亿美元。随后,微软公司继续为IBM、苹果公司以及无线电器材公司的计算机开发软件。但随着微软公司的日益壮大,IBM愈发感觉到,微软虽然是自己的供应商,但其野心似乎太大了!因为微软已经在许多方面与IBM成为竞争对手!

终于,在1991年,IBM和苹果分别与微软解除了合作关系。但IBM与微软的合作关系从未间断过,两个公司保持着既竞争又合作的复杂关系——一个软硬件兼顾的帝国,一个纯软件大鳄,唇齿相依,唇亡齿寒,谁都清楚,做自己最擅长的事情,方为正道!

在随后的30年间,在各自的主营业务方面,IBM和微软从未大规模正面相撞。而苹果公司,在著名的Apple II过气后就沉睡了,直到21世纪,苹果公司才在乔布斯的带领下重振雄风。有关苹果公司和乔帮主的故事,第8章给读者详细介绍。

1998年,盖茨的个人资产总值超过了500亿美元大关,据福布斯统计,他连续十多年成为全球首富。

Windows操作系统(中文翻译为“视窗”)是微软公司最著名的产品,它在高峰时曾占据全世界90%以上的个人计算机桌面。

北京奥运会前1个多月,比尔·盖茨正式退休,淡出微软日常管理工作。现任CEO是盖茨的大学好友——史蒂芬·鲍尔默。

又一个同学!看来做盖茨的同学,真是一件幸运的事。

按照中国人起小名的传统,给孩子起个“烂”名字好养活,这在微软身上获得了应验。因为在今天看来,虽然微软一直致力于软件开发,却既不“微”又不“软”,它已经成为全球历史上最强大的软件帝国!

6.数据库

无论是金融行业、教育行业,还是零售、卫生、公共安全、运输业,从业人员都要面对庞大的数字集合,他们需要对这些数字进行记录和存储,需要随时查询,经常性地分析。

任何一个天才都不可能用大脑记录这所有的数字,必须借助于计算机,我们也无须记录这些庞大数量的数字。在计算机里面,如果我们安装一类软件,它专门负责对数据信息进行存储、查询、调用和分析,看来是十分必要的。

这类软件,就是数据库。今天我们对数据库这个东西都不会陌生,它为人类海量数据的处理提供最基本的支持能力。

而在60多年前,人们对数据的管理还处于初级阶段。那时候的数据管理,都是通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行,并将运行结果在纸上打印出来或者制成新的穿孔卡片。而数据管理,则是对这些穿孔卡片进行物理的存储和处理。

1951年,美国雷明顿兰德公司Univacl计算机推出了一种一秒钟可以输入数百条记录的磁带驱动器,数据管理的革命就此开始。

手笔最大的还是蓝色巨人。1956年,IBM制造了一款“海量存储器”,这个驱动器有50个盘片,每个盘片直径2英尺,可以存储5MB的数据!别笑,这在当时已经是非常大的信息量了!250万汉字的书,也就占用5MB的存储量,这难道不算海量吗?想想一部《辞海》也才只有2 200万字!也就是说,9张这样的驱动器就可以存储整个《辞海》了。

数据库系统的萌芽出现于20世纪60年代。当时计算机开始广泛地应用于数据管理,对数据的共享提出了越来越高的要求。传统的文件系统已经明显落后于时代。这时,能够统一管理和共享数据的数据库管理系统(DBMS)降临人间。

数据库系统的核心和基础是数据模型,各种数据库管理系统软件都是基于某种数据模型建立起来的。所以通常,人们按照数据模型原理,将数据库系统分成网状数据库、层次数据库和关系型数据库三类。

有趣的是,最早出现的网状数据库的所有者,是今天以医疗、金融、塑料、飞行器引擎和杰克·韦尔奇闻名于世的GE公司,他们在1961年开发成功的IDS系统,是最早的网状数据库系统。这也是第一个数据库管理系统——集成数据存储。

在当时,IDS得到了广泛的应用。它具有数据模式和日志的特征,但只能在GE主机上运行,并且数据库只有一个文件,数据库所有的表必须通过手工编码来生成。

之后,GE的一个客户——古德里奇公司重新写了这个系统,并命名为集成数据管理系统(IDMS)。1973年,一家叫作Cullinane公司开始出售古德里奇公司的IDMS改进版本,并逐渐成为当时世界上最大的软件公司。后来,Cullinane改名为Cullinet。

Cullinet是大名鼎鼎的Powerbuilder的最早规划和开发者。Powerbuilder是基于PC的图形化数据库开发工,目前归Sybase公司所有。

层次型数据的鼻祖,还是那个蓝色巨人——IBM。

1968年,IBM推出了全世界最早的层次型数据库系统——IMS,一种适合其主机的层次数据库。从20世纪60年代末至今,已经发展到第6版本,提供群集、N路数据共享、消息队列共享等一大堆先进特性的支持。这个具有40多年历史的数据库产品在如今的WWW应用、商务智能(BI)应用中仍然扮演着重要角色。

网状数据库和层次数据库很好地解决了数据的集中和共享问题,但是在数据库独立性和抽象级别上仍有很大缺陷。用户在对这两种数据库进行存储时,仍然需要明确数据的存储结构,指出存取路径。而后来出现的关系型数据库,则没有这些麻烦。

1970年,IBM研究院的科德博士最早提出了“关系模型”的概念,奠定了关系模型的理论基础,后来这位仁兄又多次发表论文,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系型数据库的基础。

1974年的一次技术研讨会,开展了一场以科德博士为首的支持关系数据库的派系和反对关系数据库的派系的大辩论。这次著名的辩论推动了关系数据库的发展,使其最终成为现代数据库产品的主流。

关系模型建立之后,IBM公司在圣何塞实验室增加了更多的研究人员研究这个项目,这个项目就是著名的System R。

System R的目标,是论证一个全功能关系数据库管理系统的可行性。该项目结束于1979年,完成了第一个实现SQL的关系型数据库。然而令人遗憾的是,IBM对IMS的承诺阻止了System R的投产,一直到1980年,System R才作为一个产品正式推向市场。

1976年,霍尼韦尔公司开发了第一个商用关系数据库系统——Multics Relational Data Store。关系型数据库系统以关系代数为坚实的理论基础,经过几十年的发展和实际应用,技术越来越成熟和完善。其代表产品有Oracle、IBM公司的 DB2、微软公司的MS SQL Server以及Informix、ADA等。

1974年,IBM的博伊斯和金柏林将科德关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了今天在关系数据库领域最最基础的一个指令语言——SQL语言。

SQL语言的功能包括查询、操纵、定义和控制,是一个综合的、通用的关系数据库语言,同时又是一种高度非过程化的语言,只要求用户指出做什么而不需要指出怎么做。

SQL集成了数据库生命周期中的全部操作,提供了与关系数据库进行交互的方法,它可以与标准的编程语言一起工作。

自产生之日起,SQL语言便成了检验关系数据库的试金石,而SQL语言标准的每一次变更都指导着关系数据库产品的发展方向。

图2.14 数据库的应用

这里又有一个小插曲。

当科德博士发表题为“R系统:数据库关系理论”的时候,一个技术敏感人士,劳伦斯·埃里森非常仔细地阅读了这篇文章,被其内容震惊,这是第一次有人用全面一致的方案管理数据信息!

震惊之余,埃里森敏锐意识到在这个研究基础上可以开发商用软件系统。而当时大多数人认为关系数据库不会有商业价值。埃里森认为,他的机会来了。很快,一款通用商用数据库系统 “Oracle”诞生了——这个名字来源于他们曾给中央情报局做过的项目名。

不过,Oracle 1.0版本仅仅是一个“玩具”,除了完成简单关系查询外,做不了太多的事情,他们花相当长的时间才使Oracle变得可用,维持公司运转主要靠承接一些数据库管理项目和做顾问咨询工作。

IBM醒得早,却起得太晚,这给埃里森了一个时间差。1985年,当IBM发布DB2时,Oracle已经家喻户晓。

经历过网状、层次型和关系型数据库系统后,有人提出了新的面向对象数据模型的数据库系统,其特征是数据模型更加丰富,数据管理功能更强大,能够支持传统数据库难以支持的新应用。比较典型的有IBM的db4o、EyeDB等。

7.应用软件

应用软件是主机中与业务关系最为密切的组成部分,是人机交互的主要介质之一。无论是我们玩的网络游戏,还是即时通信软件,以及CRM系统的服务器端软件,都属于应用软件的范畴。

单机版的应用软件并不在我们本节的讨论范畴。我们讨论的应用软件一定是基于IP应用的。

在IP世界中,用户端的应用软件和服务器端的应用软件进行交互,其交互信息采用TCP/IP协议。根据用户端应用软件的界面形态,我们将两者之间的关系分为Client/Server和Browser/Server两种类型。

Client/Server(简称C/S)是指用户端采用专门的GUI(图形用户界面)软件。最典型的是即时通信软件和邮件处理软件,QQ、MSN、Skype都有自己的客户端软件,Outlook、Foxmail也都是独立的用户端GUI软件。自己设计客户端软件,可塑性强,个性化强,并可灵活添加各种增值功能。

Brower/Server(简称B/S)是指用户端采用浏览器访问服务器,WWW服务是其中最常见的应用,越来越多的OA系统、呼叫中心坐席软件采用B/S结构。

图2.15 C/S和B/S结构

关于两种模式的争论,从来都没有停止过。

C/S模式有以下特点。

◆客户端实现与服务器的直接连接,没有中间环节,响应速度比较快,客户端界面设计个性化,直观、简单、方便。

由于开发是针对性的,因此操作界面漂亮、形式多样,可以充分表现客户自身的个性,但缺少通用性的特点,业务变更或改变的灵活度不够,需要重新设计和开发,因此维护和管理难度较大,进一步的业务拓展门槛很高。

◆对于客户而言,每次新安装计算机,都需要重新安装客户端软件,分布功能弱,不能实现快速部署安装和配置。最为重要的是,C/S的兼容性差,对于不同的开发工具,相互之间很难兼容,具有较大的局限性,这就造成开发成本高,需要具有一定专业水准的技术人员才能完成。

B/S结构具有很强的分布特点。

可以随时随地进行业务处理。

业务拓展简单方便,通过增加网页即可增加服务器功能,维护简单方便,只需要改变网页,即可实现所有用户的同步更新。开发简单,共享性强。

个性化特点明显降低,无法实现具有个性化的设计要求。

以鼠标为最基本的操作方式,无法满足快速操作的要求。要知道,键盘快捷键还是比鼠标操作要快得多,而B/S结构几乎不能支持快捷键的使用。

页面动态刷新,响应速度明显降低。功能弱化,难以实现传统模式下的特殊功能要求。

专用性打印输出难以实现,尤其对票据等打印,难以实现套打输出,无法实现分页显示,给数据库访问造成较大的压力。这就是为什么营业厅使用的软件都是C/S结构而非B/S结构的原因。

当前,移动互联网APP模式的应用越来越多,这些具体的应用更类似于C/S结构。

最后需要给各位介绍全球Web服务器软件排名第一的“Apache(阿帕奇)”系统。这里的“Apache”,既不是一款武装直升机,也不是那个著名印第安部落的名字,而是可以架构在几乎所有正被广泛使用的计算机平台上的开源代码。

这是一款自由软件,取名自“a patchy server”的读音,意思是“充满补丁的服务器”。的确,给它打补丁的人很多,他们开发新的功能、特性,并修改原来的缺陷,使Apache使用简单、速度快、稳定性强。

Apache拥有多个著名项目,而最被人熟知的是HTTP Server。如果你在公网服务器上(比如安装了LINUX或者UNIX操作系统)运行了Apache软件,这台服务器就可以当做一台HTTP Server来使用。