HTTP协议

随着web2.0时代的到来,互联网从c/s架构转变为更加方便快捷的B/s架构。

B/s国际浏览器/服务器结构,就像我们访问过的所有网站,

客户机上只需要一个浏览器即可上网冲浪。

当浏览器客户端与web服务器进行交互时,就存在Web请求,这种请求都基于统一的应
用层协议(HTTP协议)交互数据。

 

访问网页本质 对服务端发起了http请求

HTTP协议解析定义
HTTP(HyperTextTransferProtocol)即超文本传输协议,是一种详细规定了浏览器和万维网
服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语)
文本当从Web服务器传送到Web浏览器。

发起HTTP请求
如何发起一个HTTP清求?这个问题似乎很简単,当在浏览器地址中输入一个URL,并按回
车键后就发起了这个HTTP请求,很快就会看到这个请求的返回结果,浏览器只是一个渲染
功能
URL:被称为网更地址,是互联网标准的地址。URL的标准格式如下:
协议://服务IP:端口/路径/查询
例如:http://www.baidu.com/web/20170809.html就是一个标准的URL。

HTTP协议详解

 

 ①HTTP请求与响应

(1)   HTTP请求
HTTP请求包括三部分,分别是请求行(请求方法)、请求头(消息报头)和请求正文。下面是
HTTP请求的一个例子
Post:/login.php    HTTP/1.1                            //请求行
Host:www.6666.com/login.php                      //请求头
User-Agent:Mozilla/5.0(WindowsNT10.0;WOW64;rv:53.0)Gecko/20100101Firefox/53.0
                                                                    //空白行,代表请求头结束
username=admin&password=admin         //请求正文

(2)HTTP响应

与HTTP请求对应的是HTTP响应,HTTP响应也由三部分内容组成,分别是响应行、响应
头(消息报头)和响应正文(消息主题)。
HTTP/1.1302MovedTemporarily
Date:Wed,14Jun201723:32:27GMT
Content-Type:text/html
Content-Length:215
Connection:Close
Set-Cookie:BIDUPSID=90E8A2FE287333A44FE712AAD8792745;expires=Thu,31-Dec-37
23:55:55GMT;max-age=2147483647;path=/;domain=baidu.com
P3P:CP=”OTIDSPCORIVAOURINDCOM”
Location:https://www.baidu.com/?tn=sitehao123
Server:BWS/1.1
X-UA-Compatible:IE=Edge,chrome=1
<html>
<head><title>302Found</title></head>
<bodybgcolor=”white”>
<center><h1>302Found</h1></center>
<hr><center>pr-nginx_1-0-341_BRANCHBranch
Time:WedJun715:33:03CST2017</center>
</body>
</html>

 

Ps:

User-Agent包含了浏览器的信息

HTTP请求的方法非常多,其中GET、Post最常见

http请求方式

(1)Get请求

GET方法用于获取请求页面的指定信息(以实体的格式)。如果请求资源为动态脚本(非
HTML),那么返回文本是web容器解析后的HTML源代码,而不是源文件。例如请求index.php,
返回的不是index.php的源文件,而是经过解析后的HTML代码。

例子:

GET:/index.php?id=1HTTP/1.1
HOST:www.baidu.com

有请求有相应get的参数在网址栏

(2)Head请求

HEAD方法除了服务器不能在响应里返回消息主体外,其他都与GET方法相同。此方法经
常被用来测试超文本链接的有效性、可访问性和最近的改变。攻击者编写扫描工具时,就常
用此方法,因为只测试资源是否存在,而不用返回消息主题,所以速度一定是最快的。一个
经典的HTTPHEAD请求如下:

例子:

HEAD:/index.phpHTTP/1.1
HOST:www.xxser.com

特点快但是没有响应包,目录扫描可以用head方式可以快速探测敏感目录

(3)POST请求
POST方法也与GET方法相似,但最大的区别在于,GET方法没有请求内容,而Post是有请
求内容的。POST请求最多用于向服务器发送大量的数据。GET虽然也能发送数据,但是有大
小(长度)的限制,并且GET请求会将发送的数据显示在浏览器端,而POST则不会,所以安全性
相对来说高一点。

例如,上传文件、提交留言等,只要是向服务器传输大量的数据,通常都会使用POST请
求。一个经典的HTTPPOST请求如下:

例子:

POST:/login.phpHTTP/1.1
Host:ww.baidu.com
Content-Length:26
Accept:text/htm1,application/xhtm1十xm1,application/xm1;q=0.9,q=0.8
Origin:http://home.2cto.com
Oser-Agent:Mozilla/5.0(WindowsNT6.1)App1eWebKit/537.17(KHTML,likeGecko)
Chrorne/24.0.1312.57Safari/537.17SE2.XMetaSr1.0
Content-Type:application/x-www-form-ur1encoded
Accept-Language:zh-CN,zh;clr=0.8
Accept-Charset:GBK,utf-8;q=0.7,q=0.3
user=admin&pw=123456789

(4)PUT
Put方法用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务
器中存在,那么将会用此请求中的数据替换原先的数据,作为指定资源的最新修改版。如果请
求指定的资源不存在,将会创建这个资源,且数据位请求正文,请求如下:
PUT:/input.txt
HOST:www.baidu.com
Content-Length:6

上传木马有奇效~

 

http状态码

1xx:      信息提示,表示清求已被成功接收,继续处理。其范围为l00~101。

2xx     成功,服务器成功地处理了情求。其范围为200~206。

3xx    重定向,重定向状态码用于告诉浏览器客户端,它们访问的资源已被移动,并i与·

             诉客户端新的资源地址位置。这时,測境器将重新对新资源发起请求。其范围为300~

              305。

4xx       客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错

            误的清求,或者最常见的是,清求一个不存在的URL。其范围为400~415。

5xx     有时候客户端发送了一条有效清求,但Web服务器自身却出错了,可能是Web

          服务器运行出错了,或者网站都挂了。5xx就是用来描述服务器内部错误的,其范围为

          500~505。

 

常见的状态码描述如下:
200:客广端请求成功,是最常见的状态。
302:重定向。
404:请求资源不存在,是最常见的状态。
400:客户端请求有语法错误,不能被服务器所理解。
401:请求来经授权。
403:服务器收到请求,但是拒绝提供服务。
500:服务器内部错误,是最常见的状态。
503:服务器当前不能处理客户端的请求,–段时间后可能恢复正常。

    HTTP消息
HTTP消息又称为HTTP头(HTTPheader),由四部分组成,分别是请求头、响应头、普通头
和实体头。从名称上看,我们就可以知道它们所处的位置。
(1)请求头
请求头只出现在HTTP请求中,请求报头允许客户端向服务器端传递请求的附加信息和
客户端自身的信息。常用的HTTP请求头如下。
Host
Host  请求报头域主要用于指定被请求资源的Intemet主机和端口号,

例如:HOST:www.baidu.com:80

User-Agent
user_Agent请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。登
录一些网站时,很多时候都可以见到显示我们的浏览器、系统信息,这些都是此头的作用,如:
User-Agent:Myprivacy
Referer
Referer包含一个URL,代表当前访问URL的上一个URL,也就是说,用户是从什么地方来到
本页面。如:Referer:www.caonima.com/login.php,代表用户从login.php来到当前页面。
Cookie
Cookie是非常重要的请求头,它是一段文本,常用来表示请求者身份等。
Range
Range可以请求实体的部分内容,多线程下载一定会用到此请求头.例如:
表示头500字节:bytes=0~499
表示第二个500字节:bytes-500~999
表示最后500字节:bytes=-500
表示500字节以后的范围:bytes=500-
x-forward-for
x_forward_for即XXF头,它代表请求端的IP,可以有多个,中间以逗号隔开。
Accept
Accept请求报头域用于指定客户端接收哪些MIME类型的信息,如Accept:text/htm1,表明
客户端希望接收HTML文本。
Accept-Charset
Accept_charset请求报头域用于指定客户端接收的字符集。例如:
Accept-Charset:iso-8859-1,gb2312.如果在请求消息中没有设置这个域,默认是任何字符集都
可以接收。
(2)响应头
响应头是服务器根据请求向客户端发送的HTTP头。常见的HTTP响应头如下。
Server
服务器所使用的web服务器名称,如Server:Apache/1.3.6(Unix),攻击者通过査看此头,可
以探测web服务器名称。所以,建议在服务器端进行修改此头的信息。
Set-Cookie
向客户端设置cookie,通过査看此头,可以清楚地看到服务器向客户端发送的Cookie信
息。
Last-Modified
服务器通过这个头告诉浏览器,资源的最后修改时间。
Location
服务器通过这个头告诉浏览器去访问哪个页面,浏览器接收到这个请求之后,通常会立
刻访问Location头所指向的页面。这个头通常配合302状态码使用。
Refresh
服务器通过Refresh头告诉浏览器定时刷新浏览器。
(3)普通头
在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,
只用于传输的消息。例如:Date,表示消息产生的日期和时间。Connection,允许发送指定连接
的选项。例如,指定连接是连续的,或者指定“close”选项,通知服务器,在响应完成后,关闭连接。
Cache-Control,用于指定缓存指令,缓存指令是単向的,且是独立的。
注意:普通报头作为了解即可。
(4)实体头
请求和响应消息都可以传送一个实体头。实体头定义了关于实体正文和请求所标识的资
源的元信息。元信息也就是实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次
修改时间等。常见的实体头如下:
Content-Type
ContentType属性指定响应的HTTP内容类型。如果未指定ContentType,默认为
TEXT/HTML。
Content-Encoding
Content_Encoding头被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附
加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码
机制。
Content-Length
Content_Length实体报头用于指明实体正文的长度,以字节方式存储的十进制数字来表
示。
Last-Modified
Last_Modified实体报头用于指示资源的最后修改日期和时间。
HTTP协议与HTTPS协议的区别
HTTPS协议的全称为HypertextTransferProtocoloverSecureSocketLayer,它是以安全为目
旳的HTTP通道,其实就是HTTP的\’\’升级”版本,只是它比単纯的HTTP协议更加安全。
HTTPS的安全基础是SSL,即在HTTP下加入SSL层。也就是HTTPS通过安全传输机制
进行传送数据,这种机制可保护网络传送的所有数据的隐秘性与完整性,可以降低非侵入性
拦截攻。
既然是在HTTP的基础出上进行构建的HTTPS协议,所以,无论怎么样,HTTP请求与响应都
是以相同的方式进行工作的。
HTTP协议1.1HTTPS协议的主要区别总结为下:
·HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
·HTTP与HTTPS协议使用的是完全相同的连接方式,HTTP采用80端口连接,而HTTPS
则是443端口。
·HTTPS协议需要到ca中请证,一般免费证书很少,需要交费,也有些web容器提供,如
TOMCAT。而HTTP协议却不需要。
·HTTP连接相对简単,是无状态的,而HTTPS协议是由SSL+HTTP协议构建的可进行
加密传输、身份认证的网络协议,相对来说,它要比HTTP协议更安全。

 

版权声明:本文为xiaoze218原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xiaoze218/p/14110276.html