HTTP协议

一、HTTP的定义

HTTP(HyperText Transfer Protocol)即超文本传输协议,详细规定了浏览器与万维网服务器之间互相通信的规则,允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器。HTTP是一种无状态的协议,无状态是指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(Response)连接就被关闭了,在服务器端不保留连接的有关信息。

二、HTTP的常见请求方法

1.POST方法:大多用于向服务器发送大量的数据,安全性高。
2.GET方法:用于获取请求页面的指定信息,有长度限制,发送的数据会显示在浏览器端。如果请求资源为动态脚本(非HTML),那么返回文本是Web容器解析后的HTML源代码,而不是源文件。只有内定的参数才会接收,不会接收其他参数项。
3.HEAD方法:不在响应里返回消息主体。常用来测试超文本链接的有效性、可访问性和最近的改变。攻击者编写扫描工具时常用此方法,因为只测试资源是否存在,而不返回消息主体时速度是最快的。
4.PUT方法:用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将会用此请求中的数据替换原先的数据,如果指定的资源不存在,将会创建这个资源,且数据为请求正文,属于危险方法。
例:会在主机根目录下创建input.txt,内容为123456

PUT /input.txt
HOST: www.xxser.com
Content-length: 6
123456

5.DELETE方法:用于请求源服务器删除请求的指定资源,属于危险方法。
6.CONNECT方法:用于能动态切换到隧道的代理。
7.OPTIONS方法:用于请求获得URI标识的资源在请求/响应的通信过程中可以使用的功能选项。

三.HTTP请求与响应

HTTP请求包括三部分,分别是请求行、请求头和请求正文。
请求行:第一行,该行第一部分说明了请求方法,第二部分说明请求域名根目录下的文件,第三部分为HTTP的版本。
请求正文:最后一行,常出现在POST请求方法中。
请求头:第二行至空白行

1.HOST用于请求被指定资源的Internet主机和端口号。
2.User-Agent允许客户端将它的操作系统、浏览器和其他属性告诉服务器。
3.Referer:包含一个URL,代表当前访问URL的上一个URL,也就是用户的来源。
4.Cookie:是一段文本,用来表示请求者的身份。
5.Range:可以请求实体的部分内容,多线程下载一定会用到此请求头。 例如: 表示头500字节:bytes=0~499 表示第二个500字节:bytes=500~999 表示最后500字节:bytes=-500 表示500字节以后的范围:bytes=500-
6.x-forword-for:代表请求端的IP,可以有多个,中间用逗号隔开。
7.Accept:用于指定客户端接收的字符集,如果在请求消息中没有设置这个域,默认是任何字符集都可以接收。

HTTP响应由响应行、响应头和响应正文组成
响应行:第一行,由HTTP版本、状态码以及消息OK组成
响应正文:是服务器向客户端发送的HTML数据。
响应头:第二行至末尾的空白行,由服务器向客户端发送

1.Server:服务器所使用的Web服务器名称,攻击者通过查看此头,可以探测Web服务器名称。
2.Set-Cookie:向客户端设置Cookie,通过查看此头,可以清楚地看到服务器向客户端发送的Cookie信息。
3.Last-Modified:告诉浏览器资源的最后修改时间。
4.Location:浏览器接收到这个请求后,通常会立刻访问Location头所指向的页面,这个头通常配合状态码302出现。
5.Refresh:告诉浏览器定时刷新浏览器

四.HTTP状态码

1xx:信息提示,表示请求已被成功接收,继续处理。其范围为100~101。
2xx:成功,服务器成功地处理了请求,其范围为200~206。200:客户端请求成功,是最常见的状态。
3xx:重定向,重定向状态码用于告诉浏览器客户端,它们访问的资源已被移动,并告诉客户端新的资源地址位置。这时,浏览器将重新对新资源发起请求,其范围为300~305。302:重定向。
4xx:客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求,或者最常见的是,请求一个不存在的URL,其范围为400~415。404:请求资源不存在。 401:请求未经授权 。403:服务器收到请求,但是拒绝提供服务 。 400:客户端请求有语法错误,不能被服务器所理解。
5xx:服务器内部错误,其范围为500~505。500:服务器内部错误 。503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

五.模拟HTTP请求

(不借助浏览器,浏览器在HTTP协议方面只多了HTML渲染的功能)
1.Telnet模拟HTTP请求来访问www.baidu.com
⑴打开CMD运行框,输入Telnet www.baidu.com 80后按回车键(黑屏状态)
后利用快捷键Ctrl+]打开Telnet回显(Telnet默认不回显)。
⑵回车后进入编辑状态,输入GET /index.html HTTP/1.1,回车后输入Host:www.baidu.com,再接连按两次回车键(两次回车代表提交申请)就可得到返回数据。

2.用curl.exe工具,通过curl+URL(统一资源定位符)命令可以简单地发起一个HTTP请求(Windows用户必须下载才能使用)。
curl http://www.baidu.com 可以返回这个页面的HTML数据。
curl http://ww.baidu.com -I 可以查看访问URL后服务器返回的HTTP响应头。

六.HTTP协议与HTTPS协议的区别

1.HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输。
2.HTTP采用80端口连接,HTTPS采用443端口。
3.HTTPS协议需要到ca申请证书,HTTP不需要。
4.HTTP连接相对简单,是无状态的,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,更为安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值