Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2878058
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: 网络与安全

2012-02-14 13:22:35

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。目前的版本有HTTP/1.1 和1.0
它是基于客户机/服务器(请求/响应)模式。
(1)一个客户机与服务器建立连接后,发送一个请求给服务器,请求的格式为:统一资源定位符(URL)、协议版本号,后边是MIME信息(MIME的英文全称是"Multipurpose Internet Mail Extensions" 多功能Internet 邮件扩充服务,它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。)
(包括请求修饰符、客户机信息和可能的内容)。
(2)服务器接到请求后,给予相应的响应信息,其格式是一个状态行,包括信息的协议版本号、一个响应成功或失败的代码,后边是MIME信息(包括服务器信息
实体信息和可能的内容)
目前的版本有HTTP/1.1 和1.0
 
1、http标题(请求信息)
 当客户端通过浏览器向服务器发送请求时,HTTP将请求转化为协议可以识别的HTTP标题信息传送至wei服务器处理。
 GET /books/java.html HTTP/1.1
      Accept: */*
      Accept-Language: en-us
      Connection: Keep-Alive
      Host: localhost
      Referer:
      User-Agent: Mozilla/4.0
      Accept-Encoding: gzip, deflate
请求行=HTTP方法(GET、POST、PUT、DELETE) + UIL/URI(代表客户端请求的资源) + HTTP版本号
一般情况下,通过以上3类信息(请求消息的请求行),服务器便能够了解客户端的HTTP请求是什么,并且能够确定请求资源的位置,并根据上述得到的信息
进一步做出相应的响应,标题还包括其他信息
Accept       定义客户端可以处理的媒体类型, */*表示可以接受所有类型的媒体形式;
Accept-Language       定义客户端乐于接受的自然语言列表。例如:Accept-Language: en,de
Host            服务器的主机名。对于使用HTTP/1.1的请求而言,此域是强制性的。例如:Host:
Accept-Encoding:定义客户端可以理解的编码机制。例如:UTF8,unicode等;
Referer:表明客户端上一次所浏览的资源,通过Feferer的内容,可令浏览器更快速地执行“上一页”的功能
User-Agent:定义用于产生请求的软件类型(典型的如web浏览器)。例如:Mozilla/4.0

2、响应消息的结构:
一个状态行、若干消息头、以及实体内容 ,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。例如:
      HTTP/1.1 200 OK
      Server: Microsoft-IIS/5.0
      Date: Thu, 13 Jul 2000 05:46:53 GMT
      Content-Length: 2291
      Content-Type: text/html
      Cache-control: private
     
 状态行格式= HTTP版本号 状态码 原因叙述
  举例:HTTP/1.1 200 OK
 
注意
   1.响应消息的实体内容就是网页文件的内容,也就是在浏览器中使用查看源文件的方式所看到的内容。 
   2.一个使用GET方式的请求消息中不能包含实体内容,只有使用POST、PUT和DELETE方式的请求消息中才可以包含实体内容。 
   3.对于HTTP 1.1来说,如果HTTP消息中包括实体内容,且没有采用chunked传输编码方式,那么消息头部分必须包含内容长度的字段,否则,客户和服务程序就无法知道实体内容何时结束。 
   4.在HTTP协议中,还可以使用简单的请求消息和响应消息,它们都没有消息头部分。简单的请求消息只能用于GET方式,且请求行中不用指定HTTP版本号。对于简单的请求消息,服务器返回简单的响应消息,简单的响应消息中只返回实体内容。
   5.其中表示回车换行。在自己的机器上可以如视频中一样借助telnet程序直观体验请求行和状态行。请求行中的请求方式主要有两种,一是GET,参数会显示在浏览器地址栏URL后面,传送的数据量是有限制的,一般限制在1KB以下。 另外一个是POST,参数不会显示在URL后面而是封装在请求实体中,传送的数据量要比GET方式传送的数据量大得多。接着是关于响应状态码的知识,响应状态码用于表示服务器对请求的各种不同处理结果和状态,它是一个三位的十进制数。响应状态码可归为5种类别,使用最高位为1到5来进行分类,如下所示:
    (1)100~199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程 。
    (2)200~299 表示成功接收请求并已完成整个处理过程 。
    (3)300~399 为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址。
    (4)400~499 客户端的请求有错误。
    (5)500~599 服务器端出现错误。
 
在http 1.0的版本中,浏览器的每次请求(也就是对每一个页面的访问)都要求建立一次单独的连接,在处理完每一次的请求后,就自动释放连接。(这点我们应该都有感觉,比如我们访问一个页面,当该页面在浏览器中显示出来的时候,我们可以拔掉网线,此时该页面上的信息并不会丢失。)而当我们请求的网页文件中有很多图片、音乐、电影等信息时,服务器返回的信息中并不直接包含图片数据,而只是保存该图片的链接,当浏览器进行解释的时候,遇到图片的url时,才向服务器发出对图片的请求信息。可见如果一个网页中包含多个图片数据时,将会频繁的与服务器建立连接,与释放连接,这无疑会造成资源的浪费。

                                                                                        http 1.0 请求模式

      而http 1.1则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。


1、建立连接(通过申请套接字实现的,客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。)

2、发送请求3、发送响应4、关闭连接

简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 无状态:HTTP协议是无状态协议。

无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

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

nba76ers2012-02-14 20:32:48

Host            服务器的主机名。对于使用HTTP/1.1的请求而言,此域是强制性的。例如:Host: www.myweb.com