Chapter 1 基础知识
由于万维网的引入,工业化**的绝大部分居民和非工业化**的一部分居民的生活已经发生了**性的变化。虽然万维网也带来了一些负面影响——比如,访问色情信息更加容易了,还有就是具有破坏性观点的传播也更加容易了——但是,总而言之,万维网带来的巨大影响总体上是正面的。很多人都在日常生活中使用Internet和万维网,包括通过E-mail来联系亲朋好友和商业伙伴,在任何地方都几乎可以购买任何商品,搜索无数的各种各样的信息,这些信息包括从电影院的放映时间表到几乎全球所有城市的宾馆的住宿价格,甚至还包含一些既小又偏远民族的历史和文化特征。创建用于提供所有这些信息的软件和数据需要用到几种不同的技术,比如标记语言和元标记语言,以及利用多种不同编程语言的编程技术,其中有一些是专门针对万维网的,而另一些则是专为通用计算而设计的。为了能够获取用于构建万维网站点所需的知识和技术,本书提供了必要的背景和基础知识,我们创建的万维网站点不仅可以单纯浏览信息,还支持提交信息。
本章是本书其他章节的基础。首先介绍Internet和万维网的发展历史。接下来将讨论Web浏览器和服务器的目的和一些特征。然后将描述统一资源定位器(Uniform Resource Locator,URL),URL为Web中的可用资源指定了地址。接下来将介绍多用途网际邮件扩充协议(Multipurpose Internet Mail Extension,MIME),它提供了指定文件类型的方式,这是因为信息可以以许多不同的格式保存在文件中。然后将讨论超文本传输协议(Hypertext Transfer Protocol,HTTP),它提供了浏览器和Web服务器之间连接的通信接口。*后,本章将简单介绍Web程序员常用的一些工具,包括XHTML、XML、JavaScript、Java、Pefl、PHP、Ruby、Rails和Ajax。所有这些工具都将在本书的后续章节中详细介绍(第2章和第3章将讨论XHTML;第4章、第5章和第6章将讨论JavaScript;第7章将讨论XML;第8章和第9章将讨论Perl;第11章将讨论PHP;第10章、附录A和附录C将讨论Java;第14章将讨论Ruby;第15章将讨论Rai1s;第16章将讨论Ajax)。
1.1 Internet简介
本书讨论的所有主题几乎都与Internet有关。因此,首先我们将简单讨论一下Internet本身。
1.1.1 起源
20世纪60年代,美国国防部(Department of Defense,DoD)开始对开发一些新的大规模计算机网络产生兴趣。开发这样的一个网络,其目的在于为从事与国防相关合同项目的研究人员提供通信、程序共享和远程计算机访问等功能。这种网络的一个基本要求是必须足够健壮,即使当其中的某些节点由于破坏、战争和正常停机等原因失去作用后,整个网络还可以继续运行。DoD的**研究计划局(Advanced Research Projects Agency,ARIA)提供经费支持了**个这种网络的构建,这个网络将ARPA支持的大约12个实验室和大学连接在一起。该网络中的**个节点是1969年在UC1A建立的。
由于这个网络是由ARPA提供经费支持的,因此被命名为ARPAnet。尽管*初的设计目标很多,但是这个网络早期的主要应用只是通过E-mail进行基于文本的简单通信。由于ARPAnet只是在ARPA资助的实验室和大学中可用,因此绝大部分教育机构并没有连接进来。所以,20世纪70年代后期和80年代早期又开发了很多其他网络,其中包括BITNET和CSNET。BITNET是Because It's Time Network的缩写,是由纽约城市大学(City University of New York)首创的。该网络设计时的初始目标是提供电子邮件和文件传输功能。CSNET是Computer Science Network的缩写,它将特拉华大学(University of Delaware)、普渡大学(Purdue University)、威斯康星大学(University of Wisconsin)、兰德公司(RAND Corporation)、Bolt、Beranek和Newman连接在一起。该网络*初的设计目标是提供电子邮件功能。由于各种不同的原因,BITNET和CSNET都没有发展为占有**优势的全国性网络。
1986年出现了一个新的全国性的网络NSFnet,顾名思义,这是由美国**科学基金会(National Science Fundation,NSF)出资赞助的。*开始,NSFnet连接了NSF赞助下的位于5个大学中的**计算机**。但是,在该网络建立后不久,其他学术机构和实验室也开始使用该网络。到1990年,NSFnet在绝大部分非军事领域应用中已经取代了ARPAnet,大量的组织成为NSFnet中的节点——到1992年,NSFnet已经连接了全球中一百万台以上的计算机。1995年,NSFnet中的一小部分网络重新成为学术网络。其余的部分就成为**的Internet,虽然这一术语很早就已经在ARPAnet和NSFnet中使用过了。
1.1.2 Internet
Internet是在一个通信网络中连接的计算机的大规模集合。这些计算机的太小、配置和制造商都是我们熟知的。实际上,连接到Internet中的一些设备——比如绘图机和打印机——根本就不是计算机。能够使所有这些不同的设备通过Internet进行通信的创新之举是一个单独的、低层的协议,即传输控制协议/Internet协议(Transmission Control Protocol/Internet Protocol,TCP/IP)。TCP/IP在1982年成为了计算机网络连接的标准协议,它允许某台计算机中的程序通过Internet直接和另外一台计算机中的程序进行通信。但是,在绝大多数情况下,在TCP/IP之上还要运行一个较高层的协议。即便如此,我们知道TCP/IP为连接到Internet的计算机(及其他设备)提供了低层的通信接口也是非常重要的。
一般情况下,同一个组织中的多台计算机并不是直接连接到Internet中的每一台计算机上的,而是相互连接构成了一个局域网,然后这个局域网中的一个节点物理连接到Internet中。
因此,Internet实际上并不是计算机的网络,而是网络的网络。很明显,所有连接到Internet的设备必须可以被**地识别出来。
1.1.3 IP地址
对于我们来说,Internet节点是通过名称进行识别的;而对于计算机来说,它们是通过数字地址进行识别的。这种机制类似于程序中的变量名和变量的数字内存地址之间的关系。我们是通过变量名称来识别变量的,而计算机则是通过变量的内存地址来识别变量的。
计算机接入到Internet的IP地址是一个**的32位数字。IP地址通常会被写为(或者认为)是由4个8位数字,中间用西文句点分隔而成的。IP地址中的这4个部分分别由不同的Internet路由计算机解析,然后确定某个消息下一步必须去往何处才能*终到达目的地。
不同的组织分配了不同的IP段,然后再将它们细分给所有需要接入到Internet的机器——此时的机器大部分指的是计算机。比如,一个较小的组织可能分配了256个IP地址,可能是191.57.126.0~191.57.126.255。一些大型组织,比如美国国防部,可能分配了1600万个IP地址,这些IP地址的**个8位数是特殊的,比如12.0.0.0~12.255.255.255。
虽然人们几乎总是在浏览器中输入域名,但并不影响IP的正常工作。例如,美国联合航空公司(United Airline)的IP地址是209.87.113.93。因此,如果在浏览器中输入http://209.87.113.93,就能连接到美国联合航空公司的网站。
1998年底,一个新的IP标准IPv6出台,但它还没有大量实现。IPv6*重要的变化是将IP地址从32位扩展为128位。这个变化是非常必要的,因为剩下的尚未启用的IP地址数量正在快速减少。这个新标准IPv6规范所在的位置为的位置为ftp://ftp.isi.edu/in-notes/rfc2460.txt。
1.1.4 域名
由于我们很难直接处理和记住数字,因此Internet中的机器必须要有一个文本格式的名称。在该名称中首先是一个主机的名称,接下来是范围越来越大的机器集合的名称,称之为域(domain)。一般可能有两个、三个甚至多个域名。**个域名紧靠主机名称的右侧,表明主机是这个域的一部分。第二个域名给出了**个域所在的域。*后的域名表示主机所属的组织类型,这是站点名称中*大的域。对于美国的组织来说,edu表示教育机构,com表示公司,gov表示美国政府机构,org表示其他类型的组织。对于其他**,*大的域一般是**的缩写——比如,瑞典(Sweden)的缩写为se,哈萨克斯坦(Kazakhstan)的缩写为kz。
……