典型的请求消息:
GEThttp://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-
上例第一行表示HTTP客户端(可能是浏览器、下载程序)通过GET方法获得指定URL下的文件 。棕色的部分表示请求头域的信息,绿色的部分表示通用头部分 。
Host头域
Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置 。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回 。
Referer头域
Referer头域答应客户端指定请求uri的源资源地址,这可以答应服务器生成回退链表,可用来登陆、优化cache等 。他也答应废除的或错误的连接由于维护的目的被追踪 。假如请求的uri没有自己的uri地址,Referer不能被发送 。假如指定的是部分uri地址,则此地址应该是一个相对地址 。
Range头域
Range头域可以请求实体的一个或者多个子范围 。例如,
表示头500个字节:bytes=0-499
表示第二个500字节:bytes=500-999
表示最后500个字节:bytes=-500
表示500字节以后的范围:bytes=500-
第一个和最后一个字节:bytes=0-0,-1
同时指定几个范围:bytes=500-600,601-999
但是服务器可以忽略此请求头,假如无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200(OK) 。
User-Agent头域
User-Agent头域的内容包含发出请求的用户信息 。
响应消息
响应消息的第一行为下面的格式:
HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF
HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1 。Status-Code是一个三个数字的结果代码 。Reason-Phrase给Status-Code提供一个简单的文本描述 。Status-Code主要用于机器自动识别,Reason-Phrase主要用于帮助用户理解 。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用 。第一个数字可能取5个不同的值:
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
响应头域答应服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息 。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate 。对响应头域的扩展要求通讯双方都支持,假如存在不支持的响应头域,一般将会作为实体头域处理 。
典型的响应消息:
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服务端响应一个GET方法 。棕色的部分表示响应头域的信息,绿色的部分表示通用头部分,红色的部分表示实体头域的信息 。
Location响应头
Location响应头用于重定向接收者到一个新URI地址 。
Server响应头
Server响应头包含处理请求的原始服务器的软件信息 。此域能包含多个产品标识和注释,产品标识一般按照重要性排序 。
实体
请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成 。实体头域包含关于实体的原信息,实体头包括Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、EXPires、Last-Modified、extension-header 。extension-header答应客户端定义新的实体头,但是这些域可能无法未接受方识别 。实体可以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-Length或Content-Range定义 。
推荐阅读
- 如何使用 IPSec 阻止特定网络协议和端口
- sniffer帮助理解子网掩码、网关与ARP协议的作用
- 房屋出售协议包括哪些内容
- Internet的标准通信协议—TCP/IP协议
- 广域网协议设置
- NGN网络协议解析
- APP对决Web3S:探索RESTful协议之路
- 1 用协议分析工具学习TCP/IP
- 透视你的网络 完美测试TCP/IP协议简介
- IP组播协议
