第一章
互联网
全球计算机网络将世界上的大多数人联结了起来,我们称其为互联网。互联网的前身是阿帕网(ARPANET:Advanced Research Projects Agency Network),由美国国防部资助创建,目的是将大学与研究实验室的计算机联系起来实现信息共享。阿帕网建立于1969年,后于1975年投入正式运行。阿帕网解决了计算机之间共享信息时存在的固有难题,也构成了互联网存在的基础。
阿帕网是如何做到这一点的呢?我们可以通过一个类比来说明。乡镇之间主要靠公路相互连接,城市之间则靠高速公路连通,州与州之间则有更宽的州际公路。对一个城市来说,要想融入全国道路交通网络,只需要修一条路将这个城市与高速公路连接起来。这条路能让该市的居民与其他城市的居民相连相通。同样地,阿帕网通过通信线路、卫星和无线电传输实现通信,然后利用广域网的中枢将所有的局域网(LAN)和广域网(WAN)连接起来。其中,广域网的中枢相当于主高速公路,局域网相当于市镇之间的公路,广域网则相当于州际公路系统。
从概念上来讲,互联网是一个由网络组成的网络,那么这些网络是如何实现相互连接的呢?要想创建一个简单的本地网络,你可以使用电线、电话系统或者光纤电缆将数台计算机连接起来,其中,光纤电缆用光代替电力。而要想将多个局域网连接起来使用,你可以使用一台能够充当“连接器”的计算机,也就是路由器来扩展子网的规模,然后将所有的本地子网连接到一条中央电缆上,这样所有的本地网络就连接在了一起,也就形成了互联网。
互联网本质上是一个计算机集群的实体连接,它作为通信线路网络,是如何平稳运行从而实现各项功能的呢?这个问题的答案,正是互联网的技术创新之所在。
分组交换、传输控制协议和网际协议
请务必牢记这一点,科研工作者开始研究网络的原因只有一个,那就是他们需要找到一种方式来实现信息的跨计算机共享。正如高速公路上有出口标志,还有限速等规则,互联网也需要相关规则来引导信息的流通。为了解决这个问题,美国高级研究计划署定义了信息是如何在两个工具的帮助下实现传输的,这两个工具即传输控制协议(TCP: Transmission Control Protocol)和网际协议(IP:Internet Protocol)。它们是互联网软件层的组成部分,在互联网硬件层之上运行,互联网硬件层即组成互联网的电缆和物理设备。
过去,两台电脑通过电缆相互连接,通信具有单向性和排他性。也就是说,计算机A给计算机B发送东西的时候,数据是顺着电线传输的。此时如果有任何其他通信行为加入进来,那么数据就会相撞,导致无人能够获取自己需要的数据。以当时的技术来看,要想创建一个允许数百万人同时进行互动的网络,需要投入大量的电缆。而减少电缆投入量的唯一方法,就是让来自多个渠道的数据能够通过同一条通信线发送至多个目的地。
这种方法就是分组交换(Packet Switching)。研究人员发现,我们可以将所有数据分成小的“数据包”,例如文本、音乐、图像文件。如此,单条电缆就能同时传输来自不同文件的数据。但是这样做也面临两大挑战:如何确保所有的数据包成功发送至目的地?接收者收到数据包之后如何将其重新组合起来?
退一步讲,每个网页都是由人写出来并存在计算机某个地方的文件。当您使用浏览器访问网页的时候,您实际上是在申请查看存在某个计算机里的文件。所以,您想看,这些文件就得发送给您,而TCP和IP就负责帮忙实现这一点。
TCP将文件分成小的数据包,并给每个包都贴上一些标签。首先,TCP会为每个数据包编号,以便可以按正确的顺序重新组合它们。然后,TCP会给每个数据包分配一个“校验和”(checksum),用于评估收到的数据是否发生任何变动。最后,TCP将初始地址和目的地地址附在对应的数据包上,确保它能够按照设定的路线发送出去。谷歌地图不能帮您进行这样的数据传输,但IP可以。网络上的所有设备都必须有一个独一无二的IP地址。
所以,这些数据包知道您的计算机的IP地址,IP帮忙将这些数据包发送至目的地,整个过程和美国邮政署收发邮件的流程类似。数据包从初始地址出发,按照既定的路线,进入离它最近的下一个路由器,接受排序处理之后再被运送至下一个路由器。这个流程一直持续到它们到达目的地。如此一来,IP软件就可以让一组相互连通的网络和路由器成为一个网络。
IP的重要特点之一,就是网络冗余的存在能够确保它的稳定性。如果整个网络的某一部分出现了故障,另外一个路由器仍然能为数据包保驾护航。等数据包到您手上后,TCP会在重新组合它们之前验证所有的数据包是否都已到位。
实际上,针对计算机间通信存在的问题,好几家计算机公司早已找到了解决方案,但是它们会收取费用,而且这些解决方案彼此并不兼容。哪怕您购买了A公司的解决方案,您还是无法和购买B公司解决方案的人相互连接,这样您的购买行为还有什么意义呢?阿帕网的特别之处就在于它提供的解决方案是免费的,而且所有人都可以公开访问TCP和IP。1982年美国的军事部门开始使用TCP和IP,从那时起,阿帕网提供的公开免费的解决方案才合法化和制度化。但那个时候,只有安装了TCP和IP软件的计算机才能通过互联网收发信息。
因此,从1982年开始,研究人员可以共享全球信息,但是如何显示和查看数据依然是个大问题。1990年欧洲核子研究组织的蒂姆·伯纳斯—李(Tim Berners-Lee)等人提出了相关协议,它们就是超文本标记语言(HTML:Hypertext Markup Language)和超文本传输协议(HTTP:Hypertext Transfer Protocol)的前身。这些协议共同促进网络信息的交换,让信息格式化,具有一定的视觉吸引力。1991年之后,第一款提供图形界面的浏览器正式发布,浏览器是一种可以让您在网上浏览网页的软件。这种方式使在网上分享和获取信息的效率更高且颇具吸引力。
大约就在这个时候,个人电脑的成本下降,美国在线公司之类的联机服务提供商开始出现,让普通人更便宜地上网。这些因素的共同作用促使互联网迅速成长为我们今天使用的网络。
超文本传输协议和互联网的使用
数据的物理传输很容易理解,阿帕网制定的协议对其也进行了定义——但是,您应该通过什么方式请别人给您发送数据呢?您在访问自己的智慧结晶MyAppoly的时候,互联网的实际运作情况又是什么样的呢?
现在,你打开了网页浏览器,想要访问MyAppoly网站上的一张图片。此时您的计算机就是想要获取信息的客户端。而您访问的网页实际上是用HTML写成的文件,这个文件存在某个计算机那里,此时我们称这台计算机为“服务器”。您的应用程序里的所有文件(包括图片和视频)统称为“资源”,都储存在服务器中。因为是客户端(即用户)在访问服务器,所以互联网要遵循“客户端—服务器”架构。
■ MyAppoly 以防您跳过了本书前言,在此提醒您,本书以一个虚构的故事串联起每一章,而您就是这个故事的主角。假设您开发了一款叫作MyAppoly的网络应用程序。当然,这个名字只是您想要开发的程序的统称。我希望您能够大胆发挥自己的想象,将MyAppoly置于所有自己感兴趣的环境中。假如您是一名超级厉害的应用程序的创业者或天使投资人,MyAppoly能让您从中获利十亿美元;假如您是一名非营利机构的管理人员,MyAppoly能帮您募捐和联系志愿者;假如您供职于一家世界五百强公司,MyAppoly可以让您的公司保持竞争力,始终符合消费者的期待。
您在浏览器中输入统一资源定位地址符(URL:Uniform Resource locator,即网址):www.MyAppoly.com。从技术层面来讲,您可以直接输入MyAppoly网站服务器的IP地址,但是有谁能够记住所有网站的IP地址呢?所以我们需要域名系统(DNS:Domain Name System),它将MyAppoly.com这样方便人类记忆的域名转化为计算机可识别的IP地址。
您进入MyAppoly.com,点击相关链接就可以查看网站里的图片。请务必记住,您看到的图片也都存在服务器里。假设它们都位于“图片”文件夹,那么如果您单击第一张图片,马上就会跳转至http://www.myappoly.com/Pictures/pic1.jpg。这个网址的各个组成部分能够反映如下信息:我们正在使用HTTP协议,由域名可知相应的服务器,文件在服务器中的存储位置(用科技术语来说,即文件的层级位置)。换言之,URL就是某一资源的文本地址。
那么,您究竟是如何获取这些网页的呢?首先,客户端(即浏览器)通过DNS获取MyAppoly.com对应的IP地址,这样就知道服务器位于何处。您的浏览器并不能亲身前往MyAppoly服务器获取图片,因此它必须通过互联网发送一条消息通知服务器发送相应的文件,这就是HTTP请求。HTTP规定了网上资源(文本、图像、音频等)的传递规则。
发送请求的方法有好几种,您可以任选一个,其中用得最多的是GET或者POST。GET通知服务器客户端想要获取服务器中的文件,服务器收到GET请求后,调取相应的文件并将其发送到您的浏览器上。另一种发送请求的方法是POST,浏览器将数据发送给服务器的时候会用到。在某些情况下,两种方法都可以发送请求,区别就在于数据是如何通过互联网发送的。使用GET,您发给服务器的信息会被放在URL之后。例如,如果您在MyAppoly上搜索“地中海”(mediterranean),GET请求会将您重新定位至另一个站点http://www.myappoly.com/search?q=mediterranean。但是,如果您在搜索词条的时候发送的是POST请求,那它就会被放到HTTP请求中,不会显示在URL中。对需要在服务器端修改的人来说,POST请求无疑更合适。
因此,客户端发出请求:找到MyAppoly服务器,让它获取包含“picl”图片的页面。服务器找到指定资源后,使用TCP/IP协议将响应结果发给客户端。随后浏览器利用报头字段呈现或编译收到的资源。但是,客户端可能还需要发送更多的请求,因此整个流程也许并未结束。鉴于服务器每次只能发送一个资源至浏览器,因此客户端可能需要多次发送请求才能获取呈现一个网页所需的全部资源。要想浏览包含“picl”图片的页面,您得获取两个资源:一个是包含文本内容和页面布局的HTML页面,另一个是“picl”图片文件。因此,浏览器至少需要发送两次请求。
结论
了解互联网的基本构成、相关操作和基础工具以后,您可能迫不及待地想要创建自己的MyAppoly,然而,要想让自己的程序出现在互联网上,您首先得建立网站托管。