Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3433498
  • 博文数量: 754
  • 博客积分: 10132
  • 博客等级: 上将
  • 技术积分: 7780
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 23:36
文章分类

全部博文(754)

文章存档

2012年(3)

2011年(39)

2010年(66)

2009年(167)

2008年(479)

我的朋友

分类: LINUX

2008-09-04 10:01:09

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就必须定义。一个请求行的结构如下:

  请求命令 请求URI HTTP版本号

  其中的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所提供的类。

阅读(475) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~