`
lxy2330
  • 浏览: 459767 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HTTP协议及报文分析

 
阅读更多

一次HTTP操作称为一个事务,其工作过程可分为四步:
     首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
     建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
     服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
  客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,

       服务器关闭连接

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个指示头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,
户机与服务器断开连接。
  如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。如图所示

POST请求的过程如下图



 
 GET请求返回过程如下图
 
 

 

 返回结果的HTML内容如下;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
 Untitled Page
</title></head>
<body>
    <form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTkwNjc4NTIwMWRkDGag6NJJGrAtj3MFa3ENPBczR0I=" />
</div>

    <div>
        <input name="TextBox1" type="text" id="TextBox1" />
        <input type="submit" name="Button1" value="提交" id="Button1" />
        <img src="Images/Office8.jpg" style="height: 77px; width: 99px" />
    </div>   
<div>

 <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwLejd/XCQLs0bLrBgKM54rGBgBsD7zy4yO4Ru56RvBO4g6F05JG" />
</div></form>
</body>
</html>

通用头域
  通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。
Cache-Control头域
  Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:
  Public指示响应可被任何缓存区缓存。
  Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户 
的部分响应消息,此响应消息对于其他用户的请求无效。
  no-cache指示请求或响应消息不能缓存
  no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
  max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
  min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
  max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
HTTP Keep-Alive
  Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。市场上的大部分Web服务器,包括iPlanet、IIS和Apache,都支持HTTP Keep-Alive。对于提供静态内容的网站来说,这个功能通常很有用。但是,对于负担较重的网站来说,这里存在另外一个问题:虽然为客户保留打开的连接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep- Alive功能对资源利用的影响尤其突出。
  KeepAliveTime 值控制 TCP/IP 尝试验证空闲连接是否完好的频率。如果这段时间内没有活动,则会发送保持活动信号。如果网络工作正常,而且接收方是活动的,它就会响应。如果需要对丢失接收方敏感,换句话说,需要更快地发现丢失了接收方,请考虑减小这个值。如果长期不活动的空闲连接出现次数较多,而丢失接收方的情况出现较少,您可能会要提高该值以减少开销。缺省情况下,如果空闲连接 7200000 毫秒(2 小时)内没有活动,Windows 就发送保持活动的消息。通常,1800000 毫秒是首选值,从而一半的已关闭连接会在 30 分钟内被检测到。 KeepAliveInterval 值定义了如果未从接收方收到保持活动消息的响应,TCP/IP 重复发送保持活动信号的频率。当连续发送保持活动信号、但未收到响应的次数超出 TcpMaxDataRetransmissions 的值时,会放弃该连接。如果期望较长的响应时间,您可能需要提高该值以减少开销。如果需要减少花在验证接收方是否已丢失上的时间,请考虑减小该值或 TcpMaxDataRetransmissions 值。缺省情况下,在未收到响应而重新发送保持活动的消息之前,Windows 会等待 1000 毫秒(1 秒)。 KeepAliveTime 根据你的需要设置就行,比如10分钟,注意要转换成MS。 XXX代表这个间隔值得大小。
Date头域
  Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。
Pragma头域
  Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。
请求消息
  请求消息的第一行为下面的格式:
  MethodSPRequest-URISPHTTP-VersionCRLFMethod表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。
  SP表示空格。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。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理。

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。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。 

错误代码解释  

       "100" : Continue
  "101" : witching Protocols
  "200" : OK
  "201" : Created
  "202" : Accepted
  "203" : Non-Authoritative Information
  "204" : No Content
  "205" : Reset Content
  "206" : Partial Content
  "300" : Multiple Choices
  "301" : Moved Permanently
  "302" : Found
  "303" : See Other
  "304" : Not Modified
  "305" : Use Proxy
  "307" : Temporary Redirect
  HTTP 400 - 请求无效
  HTTP 401.1 - 未授权:登录失败
  HTTP 401.2 - 未授权:服务器配置问题导致登录失败
  HTTP 401.3 - ACL 禁止访问资源
  HTTP 401.4 - 未授权:授权被筛选器拒绝
  HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败
  HTTP 403 - 禁止访问
  HTTP 403 - 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost
  HTTP 403.1 禁止访问:禁止可执行访问
  HTTP 403.2 - 禁止访问:禁止读访问
  HTTP 403.3 - 禁止访问:禁止写访问
  HTTP 403.4 - 禁止访问:要求 SSL
  HTTP 403.5 - 禁止访问:要求 SSL 128
  HTTP 403.6 - 禁止访问:IP 地址被拒绝

2010年12月3日   HTTP协议及报文分析 - ywjwest - ywjwest的博客

 
  HTTP 403.7 - 禁止访问:要求客户证书

2010年12月3日   HTTP协议及报文分析 - ywjwest - ywjwest的博客

 
  HTTP 403.8 - 禁止访问:禁止站点访问
  HTTP 403.9 - 禁止访问:连接的用户过多
  HTTP 403.10 - 禁止访问:配置无效
  HTTP 403.11 - 禁止访问:密码更改
  HTTP 403.12 - 禁止访问:映射器拒绝访问
  HTTP 403.13 - 禁止访问:客户证书已被吊销
  HTTP 403.15 - 禁止访问:客户访问许可过多
  HTTP 403.16 - 禁止访问:客户证书不可信或者无效
  HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效
  HTTP 404.1 - 无法找到 Web 站点
  HTTP 404 - 无法找到文件
  HTTP 405 - 资源被禁止
  HTTP 406 - 无法接受
  HTTP 407 - 要求代理身份验证
  HTTP 410 - 永远不可用
  HTTP 412 - 先决条件失败
  HTTP 414 - 请求 - URI 太长
  HTTP 500 - 内部服务器错误
  HTTP 500.100 - 内部服务器错误 - ASP 错误
  HTTP 500-11 服务器关闭
  HTTP 500-12 应用程序重新启动
  HTTP 500-13 - 服务器太忙
  HTTP 500-14 - 应用程序无效
  HTTP 500-15 - 不允许请求 global.asa
  Error 501 - 未实现
  HTTP 502 - 网关错误

有关错误提示的路径及信息可以在如图看到

2010年12月3日   HTTP协议及报文分析 - ywjwest - ywjwest的博客

 

2010年12月3日   HTTP协议及报文分析 - ywjwest - ywjwest的博客

 

 所以客户机如果要成功访问WEB服务器,必须经过以下过程步骤 
v当客户机访问网站时,服务器验证步骤
§客户机IP地址是否授权
§用户帐户和密码是否正确
§主目录是否设置了“读取”权限
§网站文件的NTFS权限
只有以上检查都通过,才可以访问网站内容

 打开IIS可以看到一个网站的HTTP头部,以下是一个moss的HTTP头信息

2010年12月3日   HTTP协议及报文分析 - ywjwest - ywjwest的博客

 

HTTP POST和GET的区别
1、HTTP 只有POST和GET 两种命令模式;
2、 POST 是被设计用来向上放东西的,而GET是被设计用来从服务器取东西的,GET也能够向服务器传送较少的数据,而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.POST的信息作为HTTP 请求的内容,而GET是在HTTP 头部传输的;
3、POST与GET在HTTP 中传送的方式不同,GET的参数是在HTTP 的头部传送的,而Post的数据则是在HTTP 请求的内容里传送;
4、POST传输数据时,不需要在URL中显示出来,而GET方法要在URL中显示;
5、 GET方法由于受到URL长度的限制,只能传递大约1024字节;POST传输的数据量大,可以达到2M,而根据微软方面的说法,微软对用 Request.Form() 可接收的最大数据有限制,IIS 4 中为 80 KB 字节,IIS 5 中为 100 KB 字节;
6、SOAP是依赖于HTTP POST模式实现的;
1)get:请求参数是作为一个key/value对的序列(查询字符串)附加到URL上的
        查询字符串的长度受到web浏览器和web服务器的限制(如IE最多支持2048个字符),不适合传输大型数据集
        同时,它很不安全
2)post:请求参数是在http标题的一个不同部分(名为entity body)传输的,这一部分用来传输表单信息,因此必须将
      Content-type设置为:application/x-www-form-urlencoded。
         post设计用来支持web窗体上的用户字段,其参数也是作为key/value对传输。
         但是:它不支持复杂数据类型,因为post没有定义传输数据结构的语义和规则。
3.表单提交中get和post方式的区别归纳如下几点:
(1)get是从服务器上获取数据,post是向服务器传送数据。
(2)对于表单的提交方式,在服务器端只能用Request.QueryString来获取Get方式提交来的数据,用Post方式提交的数据只能用Request.Form来获取。
(3)一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题。比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。但是在分页程序中,用Get方式就比用Post好。
GET与POST方法有以下区别:
(1)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。
(2)   GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
(3)   安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。
(4)   安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。换句话说,GET 请求一般不应产生副作用。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解)。


HTTP 协议请求方法GET 与POST 的简单区别:
1.GET 方法
GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见;
GET 方法提交的数据大小限制在255 个字符之内
GET 方法不可以设置书签
2.POST 方法
POST 方法提交数据安全,数据置于消息主体内,客户端不可见
POST 方法提交的数据大小没有限制
POST 方法可以设置书签


 

  • 大小: 128.3 KB
  • 大小: 111.3 KB
分享到:
评论

相关推荐

    Internet协议分析-NFS报文分析-Http报文分析

    Internet协议分析-NFS报文分析-Http报文分析 网络环境中抓取报文分析

    基于HTTP协议报文分析的计算机网络取证研究.pdf

    基于HTTP协议报文分析的计算机网络取证研究.pdf

    传输层协议报文信息分析

    1.对截取浏览网页时和即时通讯时的数据报文,进行分析,陈述两个不同高层应用的传输层协议的不同,应特别说明端口问题,并把截图写入报告。 2.在TCP建立和断开连接时截获数据报文,用截图说明三次握手和四次握手的...

    java http 报文协议

    HTTP协议报文格式.doc; HTTP网页访问应用分析.doc; SWIFT报文.pdf; 基于Java的SNMP协议报文的Socket通讯原理及其实现.pdf; 把几个找到的资料都放在一块,这样就方便了!

    各类协议及报文抓包分析.zip

    wireshark各类数据包,AH ARP BGP CDP CHAP DNS DTP EAP HTTP ICMP IP IPV6 ISIS LCP LDP TCP UDP TELNET VLAN VTP WCCP CRRP等各类协议抓包数据。

    计算机网络原理实验报告---Wireshark实验:HTTP协议分析

    使用Wireshark工具对自己电脑的WLAN端口进行抓包,分析其访问一个网站(如www.baidu.com)的过程及所使用的协议,并对HTTP客户请求报文和HTTP服务器响应报文格式进行分析。完成如下任务: 1. 给出HTTP请求报文和响应...

    基于HTTP协议报文分析的计算机网络取证研究

    本文通过创建基于HTTP协议报文分析的计算机网络取证系统,对网络用户的电子邮件、日志文件、即时通信软件进行提取和分析,从而手机电子数据证据,重新构建犯罪现场,为诉讼案件提供真实可靠的信息及证据。...

    HTTP协议分析报告

    (2) 分析HTTP协议报文。 (2) 第一阶段:TCP建立连接阶段。第三帧是web客户端(即浏览器,源IP地址为192.168.0.250)发给web服务器端(目标IP地址为218.65.113.46)的TCP连接的第一次握手(SYN)。第四帧是web...

    swjtu西南交大计算机网络课程设计-网络协议及流程分析(实验报告)

    课程设计2(实验报告)-网络协议及流程分析内容 在了解网络层次结构及网络协议基本概念基础上,利用Wireshark工具抓包,分析: (1)TCP/IP协议及其层次结构; (2)TCP/IP协议的报文封装方式; (3)常用协议...

    实验二 应用层协议分析实验报告

    实验二 应用层协议分析实验报告 .实验目的: 分析HTTP协议报文的首部格式,理解HTTP协议的工作过程;分析DNS的工作过程。 2.实验环境:

    202001Internet协议分析实验报告(第3天).docx

    练习一 HTTP报文分析 任务一 页面访问 练习二 HTTP请求流程分析 任务一 HTTP请求分析 第5部分 网络安全(1个任务) 实验29 因特网中安全通信措施 练习二 数据安全通信的实现 任务一 数据安全通信的实现

    TCP/IP报文分析

    从http、ftp、smtp、telnel四个协议任选两个协议,描述其通信原理 2、利用ethereal捕包软件,捕获并分析数据包,说明其在通信过程中含义(至少在一个协议中说明3次握手的过程)。

    网路岗7-IP报文分析工具

    捕包选项 1、选择好捕包网卡,左连还有一些其它捕包条件...如果用户以前少有接触协议分析部分,Tracknet可以很好地协助您深入了解TCP/IP协议。我们将在网站定期提供一些捕获样例包,协助用户学习分析各种类型的IP包。

    wireshark软件学习,HTTP 协议报文抓包实实例仅供学习

    网工必备,wireshark软件学习,协议分析,HTTP 协议报文抓包实实例仅供学习。OCSP、TCP_SACK等。。

    应用层协议分析

    分析HTTP协议报文的首部格式,理解HTTP协议的工作过程;分析DNS的工作过程。

    应用层协议分析报告

    应用层协议分析实验报告,分析HTTP协议报文的首部格式,理解HTTP协议的工作过程;分析DNS的工作过程。

    基于HTTP协议的网络数据分析系统的设计与实现.pdf

    本系统提出基于 HTTP 协议数据的分析系统,从 HTTP 协议的流量信息、 报文信息、正文信息三个方面分析当前的网络状况,描述了从 IP 地址到终端设 备再到用户个人的网络模型。统计了 HTTP 协议中的 IP 流量信息,设计...

    protocol-analysis-test.rar_http 报文 格式

    分析HTTP协议报文的首部格式,理解HTTP协议的工作过程;分析DNS的工作过程。

    HTTP网页访问应用分析

    一、HTTP协议简介 1.什么是HTTP协议 2.HTTP协议的工作原理 3.HTTP协议的工作方式 4.HTTP协议的报文格式 二、分析HTTP通讯 1.分析HTTP访问的具体流程 2.后加实例讲解

Global site tag (gtag.js) - Google Analytics