1.1 Internet概述
Internet和Web是两个相互联系而又容易混淆的概念。Internet是Web的基础,Web是Internet最重要、使用最广泛的服务。本节将对Internet进行介绍。
1.1.1 Internet的发展
自从1946年世界上第一台电子计算机诞生以来,计算机工业得到了迅猛的发展。计算机的性能得到了大幅度的提高,计算机的应用范围也不断的扩大。随着计算机数量的提高和处理能力的增强,计算机中存储的数据也越来越多。但是由于没有提供计算机之间互连的方法,形成了一个个的信息孤岛,计算机之间的信息和其他资源的共享非常困难。为了解决上述问题,人们提出了网络的概念。
20世纪60年代,在美国首先出现了WAN (Wide Area Network, 广域网) 技术。所谓广域网就是将分布在广大地理范围内的计算机连接在一起的网络方法。但是由于广域网成本很高,所以并不适用于小范围内的计算机互连。
几乎就在广域网出现的同时,20世纪60年代末70年代初出现了LAN(Local Area Network,局域网)技术。正如其名字所表述的,局域网技术较好地解决了小范围内的计算机之间互连的问题。由于通信范围小,所以局域网技术能够做到方便、便宜、可靠。
到了20世纪70年代末,随着计算机网络研究的兴起,出现了很多种网络技术。这些网络技术之间是互不兼容的,这就造成了实际运行中的多个网络之间互相通信的困难。为解决这个问题,很多国家和公司都进行了研究。DARPA(Defense Advanced Research Projects Agency, 美国国防部高级研究计划署)也开始研究将各种局域网和广域网互连的新方法,并将该方法称为互联网(Internetwork, Internet)。为了将他们的互联网和其他互联网区分开,研究人员使用了“Internet”来表示DARPA工程的网络,这一约定沿用至今。为了鼓励各家厂商都采用Internet技术,DARPA公开了所有的研究成果,使Internet成为一个开放式系统。正是这一决定使Internet得到了快速的发展,到今天几乎成了网络互连的代名词。
1.1.2 Internet协议
两个人如果不说同一种语言几乎是无法沟通的。同样,两台计算机如果不使用同一种语言也无法通信。通信协议(Communication Protocol)是用来规定两台计算机之间用于交换信息的共同语言的约定。下面简单介绍Internet协议。
为了介绍Internet协议,需要说明TCP/IP网络互连模型,如图1-1所示。TCP/IP网络互连模型是一个分层的模型,分为网络接口层、网络层、传输层和应用层4层。模型的每一层完成特定的动能,并且该层所提供的功能可以为模型的上一层所使用。与之对应Internet协议工作在模型的不同层上。主要Internet协议与TCP/IP网络互连模型的各层对应关系如图1-2所示。
图1-1 TCP/IP网络互连模型
图1-2 主要协议与TCP/IP网络互连模型的对应关系
对照图1-2,对几个主要协议说明如下。
① IP(Internet Protocol,网际协议):网际协议是工作在网络层的传输机制,它是一个不可靠、无连接、主机到主机的数据报协议,提供尽力而为的传输服务。
② TCP(Transmission Control Protocol,传输控制协议):为应用程序提供了完整的传输层服务。TCP是一个面向连接的、可靠的、端到端的流传输协议。
③ UDP(User Datagram Protocol,用户数据报协议):是两个标准传输层协议中较简单的一个,提供进程到进程的连接。
④ SMTP(Simple Mail Transfer Protocol,简单邮件传输协议):提供了Internet上使用的简单邮件传输的协议。之所以称为简单,是因为该协议仅提供ASCII文本的传送。
⑤ FTP(File Transfer Protocol,文件传输协议):用来将文件从一个主机复制到另一个主机。
⑥ HTTP(HyperText Transfer Protocol,超文本传输协议):主要用于万维网上存储、传输数据的协议。
⑦ DNS(Domain Name System,域名系统):用于为Internet提供从名字到地址的映射系统。
TCP协议和IP协议在整个Internet协议系统中非常重要,所以也将整个Internet协议称为TCP/IP网络协议簇(The TCP/IP Internet Protocol Suite)。在非正式的情况下简称为TCP/IP协议。
由于HTTP协议是Web的基础,所以下面对HTTP协议进行介绍。HTTP协议的数据处理过程如图1-3所示。
图1-3 HTTP协议数据处理过程
在使用HTTP协议时,网络上传送的数据以一定大小为标准,称为报文。请求报文主要包括请求行、头部和主体3部分。请求行包含请求类型、所请求文档的标识、HTTP版本3部分。目前使用的请求类型如表1-1所示。
表1-1 HTTP请求类型
响应报文主要包括状态行、头部、主体3部分。状态行包括HTTP版本、状态码、状态短语3部分。状态码由3个数字组成,用来说明当前通信状态。100系列的代码只代表一个报告;200系列的代码表示这是一个成功的请求;300系列的代码表示把客户端重定向到另一个文档;400系列的代码表示在客户端发生错误;500系列的代码表示在服务器端发生错误。状态短语使用文本格式解释状态码。
报文的头部用来在请求方和响应方之间交换附加的信息。根据报文的不同,报文头部的内容也有所不同。报文的主体用于发送需要传送的数据,主体部分是可选的。
HTTP协议是在TCP协议之上定义的,这意味着HTTP协议是面向连接的协议。在通信前需要先建立连接,通信结束后要断开连接。不同的HTTP版本,使用的连接方式不完全一样。HTTP1.1之前的版本使用非持续连接,每一次请求/响应都要建立TCP连接。HTTP1.1定义了默认的持续连接。在持续连接中,服务器在发送响应以后会保持连接处于开启状态,以等待更多的请求,直到请求方请求关闭连接或连接超时服务器才会关闭连接。
1.1.3 IP地址和DNS
为了在网络上传输数据,首先要能够标识每一台计算机,也就是为每一台连接到Internet上的计算机(设备)分配一个唯一的Internet地址(Internet Address)。这个Internet地址常被缩写为IP地址。每台计算机(设备)在通过Internet通信前必须被分配一个IP地址。
目前正在使用的IP地址被称为IPv4地址。这种地址使用4个字节的整数值来表示一个地址。由于二进制数地址不太容易使用和记忆,所以人们使用IP地址时都写成相对比较容易使用和记忆的形式。这种形式将4个字节的地址表示成用小数点分开的十进制数形式。这种形式也被称为点分十进制数形式。比如某台特定计算机的IP地址为:
210.30.208.126
写成点分十进制数形式后虽然比二进制数形式容易记忆,还是与人们的习惯不符。Internet允许人们给计算机起名字,便于人们使用,这就是前面提到的域名系统(DNS)。域名系统所要解决的第一个问题是确保计算机名字的唯一性。
DNS使用的是在计算机名字后面添加后缀的方法来表示,这种方式的计算机名字称为域名。所填加的后缀可以有多个,比如有如下的计算机名:
则这台计算机的名字是www,.synu表示这台机器在沈阳师范大学域名下,.edu表示沈阳师范大学的校园网在教育域名下,.cn表示教育网在中国域名下。DNS系统采用的是一种层次名字空间。写在最后面的称为顶级域名。目前有两种形式的顶级域名,第一种称为通用域名,如.com,.org,.edu等;第二种称为国家域名,如.cn,.jp,.fr等。
域名系统所要解决的第二个问题是实现从域名到IP地址的映射,因为计算机系统只能理解IP地址。DNS使用域名服务器来解决这个问题。每当用户输入域名时,通信系统就向系统设定的域名服务器发出请求。由域名服务器返回该域名所对应的IP地址,再由通信系统使用所得到的IP地址与远程主机通信。
例如,输入上面所给出的名字为www.synu.edu.cn的计算机,DNS系统返回的IP地址为210.30.208.7。
1.1.4 浏览器
计算机网络的出现,使人们通过网络共享信息变得非常方便。信息浏览服务使用户能够方便地获取并显示存储在远程计算机上的信息。大多数的信息浏览服务都采用交互式的操作方式:用户提出请求,浏览系统返回相应项目的副本作为响应。如果返回的项目中所包含信息的形式适合人们阅读,那么浏览系统会自动在屏幕上显示该信息。实现上述浏览服务的程序称为浏览器(Browser)。
由于目前Internet上的主流服务就是Web (World Wide Web, 万维网),所以此处对访问万维网的软件,即Web浏览器(Web Browser)进行介绍。目前Web上主要使用的信息描述语言是HTML(HyperText Markup Language,超文本标记语言)。所以Web浏览器内部应该有HTML解释程序。除此以外,为了能够实现正常的交互和支持多种协议与媒体格式,Web浏览器还需要其他的用户协议和解释程序。下面给出浏览器的内部结构如图1-4所示。
图1-4 Web浏览器的一般结构
如图1-4所示Web浏览器通常由控制程序、客户协议和一些解释程序组成。控制程序从键盘或鼠标接收输入,并使用客户端程序(各种协议)访问文档。获取文档以后,控制程序使用解释程序将文档显示在屏幕上。图1-4中,上面向下的箭头表示来自用户的输入,右面向外的箭头表示送往显示器的输出。
目前常用的Web浏览器有Internet Explorer、Firefox和Chrome等。图1-5所示为Internet Explorer 7的运行界面。
图1-5 Internet Explorer 7运行界面
1.1.5 Web应用程序设计语言的产生
早期的Web提供的是简单的信息共享服务。其主要表现是,所提供的信息是静态的,也就是信息的内容不会根据用户的不同而不同,也不会根据访问时间的不同而不同(除非有人在两次访问期间进行了人为的修改)。为了提供动态的信息,人们首先提出了CGI(Common Gateway Interface,通用网关接口)的技术来解决上述问题。CGI是一种创建和处理动态文档的技术,定义了如何编写动态文档,如何将数据传递给应用程序,以及如何使用输出标准的一组标准。CGI不是一种新的语言,它允许程序员使用多种语言中的任何一种,比如C、C++和Java等。由于CGI使用的语言很多都是编译型的语言,每次信息更新时都要重新编译文件才能运行,导致CGI技术的效率很低。
为了更好地处理上述问题,人们引入了新的脚本来创建动态网页的技术。不同于CGI,脚本技术是基于解释技术的。这就使得内容的更新变得非常简单,进而大幅度提高了网络开发和运行的速度,因此成为目前Web开发的主流语言。
目前流行的脚本技术主要有PHP(Personal Home Page,超文本预处理器)技术,使用Perl语言;JSP (Java Server Pages, Java服务器网页)技术,使用Java语言;ASP(Active Server Pages,活动服务器网页)技术,使用VBScript语言作为脚本。本章的后面将会做详细的介绍。