HTTP是一个文本协议,由请求报文和响应报文构成,采用标准的客户/服务器模型。HTPP的一次操作称为一个事务。
1.HTTP通信模型
HTTP采用客户/服务器模式,是一种无状态协议,服务器不需要记录先前信息。与其他应用层协议一样,HTTP也遵循命令和响应的连接关系。客户端发送一个请求消息,然后服务器返回一个响应消息。
在实际的网络环境中,因为存在代理服务器、网关等,HTTP存在多种通信模型。最简单的通信模型就是客户端直接连接服务器,如图7-13所示。
图7-13 最简单的HTTP通信模型
当存在代理服务器时,HTTP通信模型如图7-14所示。
图7-14 代理服务器的HTTP通信模型
代理服务器是个中间程序,它既充当服务器,也充当客户,其目的是代表其他客户提出请求。因此,HTTP代理必须同时实现HTTP协议对客户和服务器的要求。代理可以在其内部为请求提供服务,也可以将请求传送给其他服务器(可能会对请求作适当的转换)。代理通常分为两种:透明代理和非透明代理。透明代理通常不对客户的请求作任何改动;非透明代理对客户的请求进行修改,从而为客户提供额外的服务,如媒体类型转换等。
当服务器之前存在网关、防火墙之类时,HTTP的通信模型如7-15所示。
图7-15 存在网关、防火墙之类的HTTP通信模型
网关和防火墙是一个为其他服务器充当中间媒介的服务器。与代理不同的是,网关接受请求就好像它是源服务器,发出请求的客户并没有意识到它在同网关打交道。为了能够让Intranet(内联网,使用因特网协议的私有网络)上的计算机能够访问Internet上的资源,In-tranet上可以设置若干个网关,作为Intranet到Internet的通道。
2.HTTP协议参数
HTTP协议参数主要规定了协议的表示方法,RFC2616中规定了12种协议参数,主要为HTTP版本、统一资源标识符、代码集、内容编码、媒体类型、语言标签等。这里只介绍两种协议参数的使用格式。
1)统一资源标识符(URI)指的是WWW地址、通用文档标志符、统一资源定位符(URL)和统一资源名称(URN)等。就HTTP而言,统一资源标识符是指通过格式化的字符串来描述的一个资源。(www.daowen.com)
HTTP不对URI长度做事先限制,如果服务器不能处理太长的URI,应该返回414状态码。通常要求URI长度小于255字节。在HTTP中,HTTPURL基于通用的URI语法,其标准格式为:
其中,http指的是模式。host指的是主机名,可以是IP地址,也可以是域名。port是HTTP服务的TCP端口号,默认端口号为80,即WWW服务的默认端口号。实际使用时,端口号可以由Web服务器管理员指定。
2)媒体类型指的是HTTP在Content-Type和Accept头部域中指明使用的媒体类型,目的是为了提供开放的、可扩展的数据类型的协商,其语法格式为:
其中,媒体类型的值由IANA注册,在RFC1590中定义。类型/子类型如application/msword(Word文档)。参数为属性/属性值对,如Content-Type:RTP/AVP31(内容类型是用RTP实时传输协议传输的H.261压缩视频)。
3.HTTP消息
客户端与服务器之间传输的协议数据单元称为消息或报文。HTTP有两种消息类型:请求消息和响应消息。请求消息从客户端到服务器,响应消息从服务器到客户端。这两种消息的格式如图7-16所示。HTTP消息各个字段(field,也称为域)全部使用文本表示,遵守与SMTP等协议相同的RFC822通用格式。
请求行或状态行区分消息类型,并给出请求的资源或状态信息。
图7-16 HTTP消息结构
a)请求消息格式 b)响应消息格式
HTTP首部有通用消息首部、请求消息首部、响应消息首部和实体消息首部几种。所有的HTTP首部都由多行文本组成,每行为一个字段,每个字由“字段名:字段值”组成。
实体主体一般就是消息主体,只有在采用某些编码的情况下,两者才不一样。消息主体的长度由长度字段给出。
通用首部定义了Cache-Control(防止高速缓存逆向干扰特定的请求和响应)、Date(数据生成的日期和时间)、Upgrade(还能支持的其他协议)等字段。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。