学习Web服务

  • 格式:docx
  • 大小:151.76 KB
  • 文档页数:24

1、浏览器访问WEB资源的过程 (1)2、关于TELNET到一个WEB服务器 (2)3、关于虚拟主机方案 (2)3.1基于主机名的虚拟主机 (3)3.2基于端口号的虚拟主机 (5)3.3基于IP地址的虚拟主机 (6)4、HTTP协议详解 (7)4.1HTTP1.0的会话方式 (7)4.2HTTP1.1与HTTP1.0的比较 (8)4.3HTTP消息的格式 (10)4.4HTTP消息头 (12)4.5请求行与状态行 (13)4.6使用GET和POST方式传递参数 (14)5、会话与状态管理之一——COOKIE解析 (16)5.1C OOKIE (16)5.2C OOKIE的工作机制 (18)5.3C OOKIE请求头字段 (19)6、会话与状态管理之二——SESSION解析 (20)6.1S ESSION的超时管理 (20)6.2利用C OOKIE实现S ESSION跟踪 (21)6.3利用URL重写实现S ESSION跟踪 (22)6.4S ESSION的持久化 (23)1、浏览器访问Web资源的过程Web服务器上的资源的通用URL格式为:“http://IP地址(或主机名):端口号/目录名称/网页文件名称”,如果Web服务器使用的是HTTP协议的默认端口号(80),则可以省略其中的端口号。

浏览器访问一个Web资源时,根据URL中的协议名、IP地址(或主机名)、端口号等信息与Web服务器建立网络连接。

由于主机名比IP地址更容易记忆,人们通常在URL中使用的是主机名,而不是IP地址。

如果URL中指定的是主机名,Web浏览器会先查询该主机名对应的IP地址,然后再使用这个IP地址去与Web服务器建立连接。

查询主机名所对应的IP地址,一般都是通过DNS (Domain Name System,域名系统)服务器完成的。

2、关于Telnet到一个Web服务器Windows提供的Telnet程序是一个简单和通用的TCP客户端程序,它可以按指定的IP地址和端口号去与某个服务器程序建立TCP连接。

连接建立后,Telnet程序窗口中会显示服务器程序发送过来的数据,在Telnet程序窗口中用键盘输入的内容也会发送到服务器程序。

打开一个新的命令行窗口,执行以下命令:telnet 80如果连接成功,Telnet程序将启动一个新的命令行窗口,该命令行窗口可以将客户端键盘输入的数据发送给服务器程序和现实从服务器程序接收的数据。

在Telnet程序启动的命令行窗口中,输入如下内容:(尝试GET的其他用法,如不指定要获取的文件名,仅仅是一个主机的地址。

)GET /index.heml HTTP/1.1<回车>Host:<空格><回车><回车>第一行表示要获取该Web站点的/index.html网页文档,期望使用HTTP 1.1版本的协议来交换数据,其中的<回车>代表按下回车键,GET和HTTP中的每个字母必须全部大写。

第二行表示发送的Host头信息为空,表示要访问该Web 服务器上的默认站点,其中的<空格>和<回车>分别代表按下空格键和回车键。

3、关于虚拟主机方案因为多个虚拟主机的Web站点是创建在同一台计算机上的,不管Web浏览器访问其中的哪一个站点,请求都会发送到这台计算机上。

那么,这台计算机通过何种方式来区分Web浏览器要找的到底是哪一个站点呢?这个问题需要从两个方面配合解决:一是Web服务器上的每个Web站点必须设置不同的标识信息;二是Web浏览器发出的连接和请求信息中必须包含Web站点的标识信息。

HTTP协议的Host请求头用于指定客户端所要访问的Web站点的主机名,根据建立每个TCP服务器程序的两个要素(IP地址和端口号)及HTTP协议的Host请求头的作用,一个Web站点可以通过三个部分来与其他Web站点相区别,即每个Web站点的标识信息由三个部分组成:IP地址、端口号和主机名。

在一台Web服务器上,可以使用不同的端口号、IP地址或主机名,以及这三个要素的不同组合来创建多个Web站点。

根据Web浏览器建立连接和发出请求消息时所制定的这三部分信息,Web服务器就能够确定Web浏览器要访问的到底是这台Web服务器上的哪个站点。

3.1 基于主机名的虚拟主机Web浏览器与Web服务器建立连接后,除了将请求URL中的资源路径发送给Web服务器外,还会将URL中的主机名部分作为HTTP请求消息的Host头发送给Web服务器。

例如,再浏览器地址栏中输入,浏览器发送给主机上的Web服务器的请求消息内容如下:Get / HTTP/1.1<回车>Host: <回车><回车>如果一个Web服务器上建立的多个站点采用不同的主机名来作为各自的标识信息,当Web服务器接收到类似上面的访问请求消息后,根据Host头字段中所设置的主机名,就知道该选择哪个Web站点来进行响应。

Tomcat的server.xml配置文件中由一个<Host>元素,一个<Host>元素用于建立一个Web站点,<Host>元素的父级元素为<Engine>元素。

一个<Engine>元素构建一个处理客户端请求的引擎,它接收Tomcat的连接器传递来的访问请求,进行具体的处理后将结果返回给连接器。

在一个<Engine>元素中可以使用多个<Host>元素来建立多个Web站点,即一个引擎可以管理多个Web站点。

<Host>元素的name属性用于指定其所对应的Web站点的主机名称,嵌套在同一个<Engine>元素中的多个<Host>元素的name属性不能相同。

Tomcat的server.xml 配置文件中初始设置的<Host>元素内容如下:<Host name=”localhost” appBase=”webapps”…>…</Host><Host>元素中的appBase属性指定一个路径,该路径将作为嵌套在它里面的<Context>元素的docBase属性中设置的相对路径的基准路径。

当Tomcat的连接器将接收到的访问请求交给关联的处理引擎时,处理引擎将比较请求中的Host头字段的值与相应的<Engine>元素中的所有<Host>元素的name属性值,并选择匹配的<Host>元素所对应的Web站点下的内容来进行响应。

如果相应的<Engine>元素中没有与请求消息的Host头字段匹配的<Host>元素,处理引擎将选择默认的Web站点来进行相应。

只要<Engine>元素的defaultHost 属性设置为嵌套在它里面的某个<Host>元素的name属性值,该<Host>元素所创建的Web站点就成为该引擎的默认Web站点。

例如,Tomcat的server.xml文件中的<Engine>元素的默认设置如下:<Engine name=”Standalone” defaultHost=”localhost” debug=”0”>…<Host name=”localhost” appBase=”webapps”…>…</Host>…</Engine>上面的这段配置信息说明,该引擎的默认Web站点为嵌套在<Engine>元素中的name属性为”localhost”的<Host>元素所创建的Web站点。

在同一台计算机上建立多个基于主机名的虚拟主机后,Web浏览器要访问其中的某个虚拟主机的资源时,在访问URL中必须采用主机名,而不能采用IP地址。

这是因为Web浏览器要将URL中的主机名部分作为HTTP请求消息的Host 头发送给Web服务器,如果URL中的主机名部分使用的是IP地址,那么,浏览器发出的请求消息中的Host头字段的值就是这个IP地址,而在同一台计算机上建立的多个基于主机名的虚拟主机共享同一个IP地址,在Host头字段使用IP 地址根本无法区分出不同的站点。

即使在URL中指定主机名,Web浏览器也要先获得该主机名所对应的IP地址,再使用这个IP去连接Web服务器。

所以,要建立基于主机名的虚拟主机时,除了要在Tomcat的server.xml文件中进行配置外,还需要在整个网络系统中建立主机名与IP地址的映射关系,即必须将主机名添加到名称解析系统,以便Web 浏览器从名称解析系统中查询出主机名所对应的IP地址。

建立主机名与IP地址的映射关系的惯用方式有两种:一是使用客户机本地的Hosts文件,二是使用DNS(Domain Name System,域名系统)服务器。

Hosts文件和DNS的作用都是允许用户使用“友好”的、文本格式的主机名称,而不是数字格式的IP地址来访问网络中的计算机。

Hosts文件可用于小型的Intranet(企业内部网),网络中的所有计算机上都需要在各自的Hosts文件中建立其所要访问的计算机的主机名称与IP地址的对应关系。

DNS通常用于大型的网络,特别是Internet上对外提供服务的计算机都要通过DNS来建立其主机名与IP地址的对应关系。

客户机首先在本地的Hosts文件中查找主机名称所映射的IP地址,如果没有找到,再去查询DNS服务器。

对于Windows系统,Hosts文件位于操作系统根目录下的system32\Drivers\Etc 子目录中。

使用主机名的方式在同一台Web服务器上创建多个虚拟主机后,在Web浏览器中使用主机名访问Web服务器时,Web服务器将选择与该主机名关联的Web 站点进行响应通过这种方式,多个Web站点可以共享同一个IP地址和相同的端口号,惟一不足的就是Web浏览器不能通过IP地址去访问这些Web站点。

当使用安全套接字层(SSL)时,不能使用主机头字段来实现虚拟主机,这是因为使用SSL的HTTP请求有加密保护。

主机头字段是加密内容的一部分,不能被解释和路由到正确的站点。

3.2 基于端口号的虚拟主机通过使用不同的监听端口号,Web服务器可以再一个IP地址或主机名上维护多个Web站点。

为各个Web站点指定不同的端口号后,Web服务器接收到浏览器的访问请求时,根据浏览器连接的端口号的不同,就知道该选择哪个Web 站点来进行响应。

在Tomcat的server.xml文件中,一个<Connector>元素用于配置一个对外的连接器,对于Web服务器上的每一个用于接收访问请求的监听端口号,都要使用一个单独的<Connector>元素。