热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTML协议报文分析,初识HTTP协议请求与响应报文

HTTP相信你们都知道这个词,咱们也都知道它是要干吗的,之前的我也一直只是知道它就是基于TCPIP协议为浏览器和服务器提供的一个通讯协议标准࿰

HTTP相信你们都知道这个词,咱们也都知道它是要干吗的,之前的我也一直只是知道它就是基于TCP/IP协议为浏览器和服务器提供的一个通讯协议标准,能够是GET、POST方式,能够经过telnet的方法 来发送一个HTTP请求并获得返回的内容,默认端口是80啊等等。最近也不知道出于什么缘由,忽然就想了解它的内部协议构造了,网上找了点资料,并动手去查看研究研究它。html

概念啥的就不去理会了;既然HTTP是基于TCP/IP的那么咱们先看看TCP/IP协议又是怎么回事?算法

在OSI的七层模型中,TCP是在传输层中,而IP则在网络层。而在OSI的各层中层与层之间是相互独立又相互依靠的,上层依赖于下层,下层又为上层提供服务,因此你应该知道了TCP/IP的关系和做用了。(下面2张图都是网上找的)浏览器

e0355b42fcfa4bbd878c7aaa.html

e0355b42fcfa4bbd878c7aaa.html

1、HTTP协议的历史(网上找的历史,具体历史我也不知道,HTTP产生的时候我还没出生呢!)缓存

u   HTTP/0.9: 从1990年就已经用来做为WWW的传输协      议,当时很是简单,只支持GET方法,响应中携带      的消息必须HTML文件。服务器

u   HTTP/1.0: 1996发布RFC1945,90年后,基于0.9的    各类客户端和服务端的扩展层出不穷,把这些扩网络

展进行综合推出新标准HTTP/1.0 。app

u   HTTP/1.1: 1997推出RFC2068,HTTP/1.1的标准。ide

u   HTTP/1.1: 1999推出RFC2616,废弃了RFC2068标准。网站

2、HTTP协议的基础内容spa

http协议的消息类型分为2中类型:一种是请求(Request)消息:由客户端发给服务器的消息。

另外一种是响应(Response)消息:是服务端回复客户端请求的消息。

看下面2张图片看看个返回的都是什么数据:

这是请求消息:

e0355b42fcfa4bbd878c7aaa.html

这个是响应消息:

e0355b42fcfa4bbd878c7aaa.html

咱们看看具体每行都是干啥用的?

咱们先看看请求消息的组成:

e0355b42fcfa4bbd878c7aaa.html  这就是一个请求报文,响应报文是对应的 

e0355b42fcfa4bbd878c7aaa.html

对照上面的你就能够清楚看出来了

e0355b42fcfa4bbd878c7aaa.html

相对的你能够对应这张图片看下:

一、请求报文详解:

接下来就分析下:上面咱们刚才获得那份请求消息:

GET /ex/COOKIEAutoLogin.aspx HTTP/1.1  :

表示向服务器用GET方式请求/ex/COOKIEAutoLogin.aspx文件,使用HTTP/1.1协议。

Accept: text/html, application/xhtml+xml, */*

表示我当前浏览器能够接收的MIME文件格式。能够根据它判断并返回适当的文件格式。

Accept-Language: zh-CN

表示当前浏览器支持的语言,中文;不少国际网站默认进入的语言都是经过这个实现的。

User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

表示客户端浏览器名称、类型、版本等。

Accept-Encoding: gzip, deflate

表示我当前浏览器支持gzip、deflate两种压缩算法。

Host: localhost:12478

表示对应请求网址URL中的Web名称和端口号。

Connection Keep-Alive:

Keep-Alive是永久链接(其实应该是长链接,这时候服务器发送了响应报文以后不直接关闭套接字,而是保持链接一段时间看看还有没有其余请求,若是有请求,这样不只节省了建立新套接字的时间,还能够节约网络流量和)而若是是close则是在告知服务器本浏览器不想使用永久链接方式(HTTP/1.0使用非永久链接,HTTP/1.1默认使用永久链接)。

COOKIE: username=1; pwd=123

这是浏览器向服务器发送和当前网站关联的COOKIE,这样在服务器端也能读取浏览器端的COOKIE了。

请求方法的解释:

GET:获取一个URL指定的资源,即资源实体

HEAD:获取一个指定资源的信息,

POST:向服务器提交数据

PUT:向服务器提交资源

DELETE请求源服务器删除Request-URI标识的资源

TRACE网络跟踪

CONNECT与PROXY之间的链接管理

OPTIONS查询能力

还有其余的一些信息能够查看博客园的

一、响应报文详解:

再来分析响应报文信息:

HTTP/1.1 302 Found

响应行:使用HTTP1.1协议,返回的状态码。具体常见状态吗见后面。(302是只重定向)

Server: ASP.NET Development Server/10.0.0.0

表示服务器的类型,这是使用VS开发自启动的小服务器,10版本。

Date: Wed, 16 May 2012 05:46:46 GMT

这个你一看就知道是啥了,(时间)。

X-AspNet-Version: 2.0.50727      这个是服务器使用的.NET版本信息。

Location: /ex/Default.aspx      重定向到哪一个页面。

Cache-Control: private        缓存控制:私有。

Content-Type: text/html; charset=utf-8      表示返回数据的类型

Content-Length: 137   表示返回的字节长度。

这个要知道这是后续数据消息体的长度,响应报文头不包括在内,响应报文头只是描述,返回的具体数据(好比HTML文本、图片数据等)。

Connection: Close   链接状态:关闭。

下面这些就是返回的具体消息了。(上面的长度也指代的是这个的长度。)

Object moved

Object moved to here.

响应行中的响应状态

1xx:指示信息--表示请求已接收,继续处理。

2xx:成功--表示请求已被成功接收、理解、接受。

3xx:重定向--要完成请求必须进行更进一步的操做。

4xx:客户端错误--请求有语法错误或请求没法实现。

5xx:服务器端错误--服务器未能实现合法的请求。

常见状态代码、状态描述的说明以下。

200 OK:客户端请求成功。

400 Bad Request:客户端请求有语法错误,不能被服务器所理解。

401 Unauthorized:请求未经受权,这个状态代码必须和WWW-Authenticate报头域一块儿使用。

403 Forbidden:服务器收到请求,可是拒绝提供服务。

404 Not Found:请求资源不存在,举个例子:输入了错误的URL。

500 Internal Server Error:服务器发生不可预期的错误。

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。



推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
author-avatar
弓X箭_281
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有