Http协议浅析

HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

1.http请求(Method Request-URI HTTP-Version CRLF)
请求行
GET/form.html http/1.1(crlf)
POST
HEAD(消息报头)


POST /reg.jsp http/1.1(crlf)
消息报头
(crlf)回车换行
form数据


典型的请求消息:
GET http://download.microtool.de:80/somedata.exe

Host:download.microtool.de

Accept:*/*

Pragma:no-cache

Cache-Control:no-cache

Referer:http://download.microtool.de/

User-Agent:Mozilla/4.04[en](Win95;I;Nav)

Range:bytes=554554-

2.http响应(HTTP-Version Status-Code Reason-Phrase CRLF)
状态行,消息报头,(ctlf)响应正文

典型的响应消息:

HTTP/1.0200OK

Date:Mon,31Dec200104:25:57GMT

Server:Apache/1.3.14(Unix)

Content-type:text/html

Last-modified:Tue,17Apr200106:46:28GMT

Etag:"a030f020ac7c01:1e9f"

Content-length:39725426

Content-range:bytes554554-40279979/40279980



HTTP/1.1 200 OK (CRLF)

1xx:信息响应类,表示接收到请求并且继续处理

2xx:处理成功响应类,表示动作被成功接收、理解和接受

3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理

4xx:客户端错误,客户请求包含语法错误或者是不能正确执行

5xx:服务端错误,服务器不能正确执行一个正确的请求


3.消息报头()
分类:普通报头、请求报头,响应报头,实体报头
名字+“:”+空格+值

普通报头:Cache-Control:no-cache
      Pragma:no-cache
      response.setHeader
请求报头:accept:image/gif text/html
      Accept-Charset:gb2312
      Accept-Encoding:gzip
      Accept-Language:zh_cn
      Authorization(401)
      Host:www.sunxin.org:8080
      User-Agent
响应报头:Location:http://www.sunxin.org
      Server:Apache-Coy
      www-authenticate:basic realm="basic auth test!"
实体报头:Content-Encoding:gzip
      Content-Language:da
      Content-Length:
      Content-Type:text/html;charset=iso-8859-1
      last-Modified:
      Expires:过期时间日期
      response.setDateHeader("Expires",0);浏览器不要缓存页面。
------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
HTTP报文共有两种通用类型:请求报文,响应报文。
     (1)请求报文:包括请求行、首部,以及有时出现的主体。如图   

请求行

 首部

 空行

 主体
(只在某些报文中出现)

     请求行:包括请求类型、空格、URL、空格以及HTTP版本。

请求类型
  (方法)


URL


HTTP版本

           请求类型:此字段定义了几种不同方法的报文。
     常用的几种方法:
     1:GET:客户要从服务器读取文档时使用。
     2:HEAD:当客户想得到关于文档的某些信息但并不是要这个文档时使用。
     3:POST:当客户要给服务器提供某些信息时使用。

     4:PUT:当客户将新的或更换的文档存储在服务器上时使用。
     5:PATCH:和PUT相似,只不过这个请求只包含必须在现有文件中出现的差异清单。
     6:COPY:当需要将文件复制到另一个位置时使用。
     7:MOVE:当需要将文件移到另一个位置时使用。
     8:DELETE:当需要将服务器上的文档移走时使用。
     9:LINK:当需要创建从一个文档到另一个位置的链接时使用。
     10:UNLINK:当需要删除由LINK方法创建的链接时使用。
     11:OPTION:当客户向服务器询问到一些可用的选项时使用。
     统一资源定位符(URL):4要素:方法、主机、端口、路径

URL

  方法 ://主机 :端口 / 路径

     方法:用来读取文档的协议。
     主机:放置信息的计算机。计算机常使用”WWW”开始的别名。
     端口:服务器的端口号,可选。
     路径:放置文件的路径名。
     (2)响应报文:包括状态行、首部、有时包括主体。

状态行

 首部

 空行

 主体
(只在某些报文中出现)

     状态行:包括HTTP版本、空格、状态码、空格、状态短语。

HTTP版本


状态码


状态短语

     状态码:
         100系列:提供信息的;
         200系列:指示成功的请求;
         300系列:把客户重定向到另一个URL;
         400系列:指示客户端差错;
         500系列:指示服务器端差错。
     状态短语:用来解释状态码。

OPTIONS

允许客户端查看服务器的性能

TRACE

  用于测试,允许客户端查看消息的回收过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值