HTTP是Hypertext Transfer PRotocol的简称,即:超文本传输协议。在TCP/ip协议簇中的一百多个协议中,HTTP协议可以说是平常接触最多的一种协议了。因为日常浏览网页时所使用的浏览器浏览,其基本的协议类型就是HTTP协议。HTTP协议是一个客户端/服务器协议,这里所说的服务器端是指提供WWW服务的主机,即各类Web站点等。而客户端是指运行各类浏览器(如IE、Netscape等)或者下载工具的主机。
HTTP协议从产生到目前,主要经历了三个发展阶段,也就是通常说的三个版本:HTTP 0.9、HTTP 1.0和HTTP 1.1版。HTTP 0.9版也是HTTP原始协议,它最早出现在1990年,由于它只是一个简单的面向消息的协议,所以很快一个新的HTTP协议版本出现了,即:HTTP 1.0版,这个版本在保持了对HTTP 0.9版本的兼容的同时,还增加了在复杂网络情况下,对不同的类型的对象服务能力。HTTP 1.1是在HTTP 1.0基础上发展下来的,它依然保持对HTTP 0.9和HTTP 1.0的兼容。和HTTP 1.0比较,主要改进的是性能、安全和数据处理方面。目前人们又开始提出了HTTP协议的下一个版本了,那就是HTTP-NG(Next Generation of HTTP)。在这个版本中,可以想象的是无论是性能、效率还是安全性都会有一个更大的提高。
在TCP/IP协议簇中的所有协议,.Net FrameWork SDK中对HTTP协议的支持是最全面的,具体表现在.Net FrameWork SDK为实现HTTP协议提供了许多专门的类。其数量之多,功能之全面是其他协议无可比拟的。Visual Basic .Net通过使用这些类,可以方便的实现各种HTTP协议功能。
一.HTTP协议会话:
HTTP协议是一个客户端/服务器协议,它是建立在请求/响应范式的,客户机和服务器完成一个HTTP会话主要通过以下四步:
1. 建立连接。建立连接是通过申请套接字(Socket)实现的。客户打开一个套接字并把它约束在一个端口(HTTP协议一般使用的是80端口)上,假如成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。
2. 客户端发送请求。 在建立连接后,客户机会往服务器正在侦听的端口发送请求消息,完成提出请求动作。一个完整的请求消息=请求行和请求头,其中请求头包括包括用户可以接受的数据类型、压缩方法、语言、长度、压缩方法、最后一次修改时间、数据有效期等。大多数请求头并不是必需要定义的,但对于POST请求命令来说Content-Length就必须定义。一个请求行的结构如下:
请求命令请求URIHTTP版本号
其中的HTTP协议中的请求命令见表01所示。图01是利用侦听方法获得的客户端IE浏览器向WWW主机发送请求命令。
图01:IE浏览器向WWW主机发送请求行命令
请求命令
功能
GET
请求一个WWW页面或者URI资源
HEAD
要求服务器查找某对象的元信息,而不是对象本身
PUT
从客户机向服务器传送数据,在要求服务器和CGI做进一步处理时会用到POST方法。POST主要用于发送Html文本中FORM的内容,让CGI程序处理
POST
附加资源
DELETE
删除操作
LINK
连接二个存在的资源
UNLINK
切断二个已有的资源连接
表01:HTTP协议中客户端的请求命令
3. 服务器进行响应。服务器在处理完客户的请求之后,要向客户机发送响应消息。其响应消息是由状态行和应答头组成的。其中应答头包括服务程序名,通知客户请求的URI需要认证,请求的资源何时能使用等。状态行的主要结构如下:
HTTP版本号状态码原因叙述
其中最常见的状态码是“200”和“404”,下面是服务器响应客户端的一个请求通过的状态行:
HTTP/1.1 200 OK
下面是服务器响应客户端的一个请求失败的状态行:
HTTP/1.1 404 Object Not Found
4. 关闭连接。
在下面的内容中将使用Visual Basic .Net通过.Net FrameWork SDK提供的类来模拟IE浏览器中发送的请求行命令以及获取WWW主机返回的状态行信息。首先还是先了解一下.Net FrameWork SDK为在Visual Basic .Net实现HTTP协议所提供的类。