通常,http消息包括客户向服务器的请求消息和服务器向客户机的响应消息。
请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行)、消息报头(可选)、空行(CRLF的行)、消息正文(可选)组成。(注:CRLF表示回车和换行,除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。
http消息报头又分为普通报头(通用报头)、请求报头、响应报头、实体报头。
每一个报头域都是由 名字+":"+空格+值 三部分组成的,消息报头域的名字大小写无关的。
1、普通报头(通用报头)
在普通报头中,有少数报头域用于所有的请求消息和响应消息,包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通通用头域,一般将会作为实体头域处理。
Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache,no-store,max-age,max-stale,min-fresh,only-if-cached,响应消息中的指令包括public,private,no-cache,no-transform,must-revalidate,proxy-revalidate,max-age,含义如下:
pubic指定响应可被任何缓存区缓存。
private指示对于单个用户的真个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache指示请求或响应消息不能缓存。
no-store用于防止重要的消息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-fresh指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期间指定值之内的响应消息。
Date头域
Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如Date Thu, 15 Nov 2012 18:29:30 GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。
Pragma头域
Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和 Cache- Control:no-cache相同。
Connection头域
允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,
通知服务器,在响应完成后,关闭连接
2、请求报头
请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
Method Request-URI HTTP-Version(CRLF)
Method 表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、 TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。 HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。
Request-URI遵循URI格式,在此字段为星号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。HTTP- Version表示支持的HTTP版本,例如为HTTP/1.1。CRLF表示换行回车符。
请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信息。请求头域可能包含下列字段Accept、Accept-Charset、Accept- Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If- Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、 Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理。
典型的请求消息:
GET /index.php HTTP/1.1 (CRLF)
Host: www. jianzhandiy.com (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flas
h,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,
*/* (CRLF)
Accept-Language:zh-cn (CRLF)
Pragma: no-cache (CRLF)
Accept-Encoding:gzip,deflate (CRLF) (实体消息)
Cache-Control: no-cache (CRLF)
Referer: www. jianzhandiy.com (CRLF)
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0
(CRLF)
Range:bytes=554554- (CRLF)
Connection:Keep-Alive (CRLF)
(CRLF)
上例第一行表示HTTP客户端(可能是浏览器、下载程序)通过GET方法获得指定 URL(www. jianzhandiy.com/index.php)下的文件。
未完...
分享到:
相关推荐
详细介绍了HTTP协议之消息报头中各个属性。
网络游戏-用于网络协议的报头压缩方法.zip
HTTP协议概述 HTTP协议主要特点 HTTP工作原理 HTTP协议详解之URL篇 HTTP协议之请求篇 请求行 消息报头 空行 请求主体 HTTP协议之响应篇 ...消息报头 ...HTTP协议之消息报头篇 普通报头 请求报头 响应报头 实体报头
http报头for Arduino生成工具
tcp/ip-HTTP-Header-消息报头 本文来自: E点废墟(www.xok.la) 详细出处参考:http://xok.la/2009/07/tcp-ip-http-header.html
这些是在网上找的一些关于TCP/IP消息报头,拿出来和大家一起分享,希望能够帮到大
自己总结的学习笔记,内容包括HTTP的请求 响应 和各种报头的详细解释
科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 ...
详细分析HTTP协议消息报头,以及请求和响应,使用Telnet了解HTTP的整个通讯过程。
HTTP头字段包括4类: general-header ; request-header ; response-header ; entity-header
高速链路上基于GTP协议的报头压缩算法,张瑾,,随着网络通信的数据业务和数据量不断增加,用于数据保存的开销越来越大,针对数据保存的优化也变得日益重要。在网络中传输的数据
自己封装HTTP报头,发送服务器,接受返回信息!用于新手学习!
湘潭大学 网络协议TCP/IP实验六 UDP 协议分析实验报告,仅供参考
TCP通信协议的使用,客户端和服务器端源代码。
在linux环境下对http协议的报头进行了详细的说明
HTTP协议详解 一、HTTP协议详解之URL篇 二、HTTP协议详解之请求篇 三、HTTP协议详解之响应篇 四、HTTP协议详解之消息报头篇 五、利用telnet观察http协议的通讯过程 六、HTTP协议相关技术补充
它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外,还可以通过扩展它的请求方式,错误代码和报头来完成许多任务。HTTP的一个特点是数据表示方式的典型性和可协商...
用java解析HTTP请求报头
Http协议的相关介绍,请求行、消息报头、请求正文的相关说明与介绍!