图解Http总结+扩展知识

一.HTTP协议

1.Http协议特点

(1).支持c/s模式
(2).请求简单灵活
(3).传输灵活
(4).无连接:每次只处理一个请求,处理完成立即断开
(5).无状态:对处理事务无记忆能力

2.Http版本

Http/0.9 , Http/1.0 , Http/1.1 , Http/2.0

3.Http协议各版本区别

(1).Http1.0和Http1.1区别

(a).Http1.1加入了更多的缓存控制策略:Entity tag,If-Unmodified-Since, If-Match, If-None-Match……
(b).Http1.1优化了带宽和网络连接:支持断点续传和部分请求。
©.Http1.1增加了24个错误响应码
(d).Http1.1的请求消息和响应消息支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
(e).Http 1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个Http请求和响应,减少了建立和关闭连接的消耗和延迟.

(2).Http2.0和Http1.X相比的新特性

(a). Http1.x的解析是基于文本,Http2.0的解析是基于二进制格式。
(b). Http2.0支持多路复用,即连接共享,即每一个request都是是用作连接共享机制的。
©. Http2.0对header进行压缩,减少带宽的浪费
(d). Http2.0支持服务端推送

4.Http请求报文

组成:请求行,请求报头,空行,请求数据

(1).请求行

组成:请求方法,URL字段,Http协议版本
(a).请求方法
GET:用来请求访问已被URL识别的资源,指定的资源服务经服务端解析后返回的内容。
POST:用来传输实体的主体
PUT:用来传输文件,在请求报文的主体包含文件内容,保存到指定的URI指定的位置。
HEAD:获取报文首部
DELETE:用来删除URI指定的资源
OPTIONS:用来查询针对请求URI指定的资源支持的方法
TRACE:让web服务器端将之前的请求通信环回给客户端。发送请求时,在Max-Forwards首部字段填入值,每经过一个服务器该数字减1,当减为0时,停止传输,最后一个服务器返回状态码为200的响应。
CONNECT:要求与代理服务器通信时建立隧道,实现隧道协议进行TCP通信,主要使用SSL
(Secure Sockets Layer)和TLS(Transport Layer Security)协议。

(2).请求报头

可以有零个或者多个,由键值对组成(key : value)

(3).请求数据

不在GET中使用,在POST中使用,用于用户填写表单

5.Http响应报文

组成:状态行,响应报头,空行,响应正文

(1).状态行

组成:Http协议版本,响应状态码,状态码的文本描述
(a).响应状态码
100~199:提示信息,收到请求,需请求者继续执行操作
200~299:请求成功,已被成功接收并处理
300~399:重定向,需进一步操作
400~499:客户端错误,请求语法错误,或无法实现
500~599:服务器错误,不能实现请求
(b).常用状态码及状态码文本描述:
200 OK:客户端发送的请求被服务端正常处理
204 Not Content:服务器接收的请求以处理成功,但返回的响应中不包含实体的主体部分
206 Partial Content:客户端进行了范围请求,而服务器成功的执行了这部分的GET请求
301 Moved Permanently:永久性重定向,请求的资源被分配了新的URI,以后都要用这个
302 Found:临时性重定向,请求的资源被分配了新的URI,本次用这个
303 See Other:请求的资源存在着另一个URI,应使用GET方法重定向获得此资源
304 Not Modified:客户端发送附带条件的请求,服务器允许请求访问资源,但未满足条件
307 Temporary Redirect:临时性重定向。和302相同
400 Bad Request:请求报文中存在语法错误
401 Unauthorized:发送的请求需要通过Http认证
403 Forbidden:对请求资源的访问被服务器拒绝
404 Not Found:服务器上无法找到请求的资源
500 Internal Server Error:服务器执行请求时发生了错误
503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护

6.Http消息报头

(1).通用报头

既可以出现在请求报头,也可以出现在响应报头
常用:
(a).Date:消息产生的日期和时间
(b).Connection:允许发送指定连接的选项
©.Cache-Control:用于指定缓存指令(单项,独立)

(2).请求报头

只能出现在请求报头
常用:
(a).Host:请求主机名
(b).User-Agent:发送请求的浏览器类型、操作系统信息
©.Accept:客户端可识别的内容类型列表
(d).Accept-Encoding:客户端可识别的数据编码
(e).Accept-Language:浏览器支持的语言类型
(f).Transfer-Encoding:用于告知接收端报文的编码方式

(3).响应报头

只能出现在响应报头
常用:
(a).Location:用于重定向到一个新位置
(b).Server:服务器用来处理请求的系统的信息(与User-Agent对应)

(4).实体报头

用来定义被传输资源的信息,既可用于请求报头,也可用于响应报头
常用:
(a).Content-Type:实体正文的媒体类型
(b).Content-Length:实体正文的长度
©.Content-Language:描述资源所用的自然语言
(d).Content-Encoding:实体正文采用的编码方式
(e).Last-Modified:资源的最后修改日期和时间
(f).Expires:响应的过期的日期和时间

二.Https协议

1.Https组成

Http + SSL/TLS+加密+认证

2.Https加密机制

(1).Https采用混合加密机制:共享密钥加密+公开密钥加密
(a).共享密钥
优点:加密相对简单,效率高
缺点:安全性相对低
(b).公开密钥
优点:安全性高
缺点:加密复杂,效率较低
(2).使用公开密钥加密方式交换共享密钥中要使用的密钥
(3).确保安全的前提下,使用共享密钥方式进行加密

3.公开密钥的认证过程

(1).服务器把自己的公开密钥登陆至数字证书认证机构
(2).数字证书认证机构用自己的私有密钥向服务器的公开密码署数字签名并颁发公钥证书
(3).客户端拿到服务器的公钥证书后,使用数字认证机构的公开密钥向数字认证机构验证公钥证书上的数字签名,确保服务器公钥的真实性
(4).认证成功后,客户端使用服务器的公开密钥对报文进行加密发送
(5).服务器用私有密钥对报文解密

4.Https建立过程

(1).客户端发送Client Hello报文开始SSL通信
报文中包括:客户端支持的SSL版本,加密组件列表(加密算法,密钥长度等)
(2).服务器发送Server Hello报文作为响应
报文中包括:服务器从客户端筛选出的SSL版本,加密组件列表
(3).服务器发送Certificate报文
报文中包括:公开密钥证书
(4).服务器发送Server Hello Done报文
最初阶段的SSL握手协商部分结束
(5).客户端发送Client Key Exchange报文
报文中包括:Pre-master secret:使用公开密钥加密过的随机密码串
(6).客户端发送Change Cipher Spec报文
提示服务器在此之后的通信采用Pre-master secret进行加密
(7).客户端发送Finished报文
报文中包括:连接至今的全部报文的整体校验值。
(8).若校验成功,服务器发送Change Cipher Spec报文
(9).服务器发送Finished报文
(10).SSL连接建立完成

5.SSL和TLS

(1).SSL版本:SSL/1.0,SSL/2.0,SSL/3.0
(2).TLS版本:TLS/1.0,TLS/1.1,TLS/1.2

6.Https缺点

(1).使用SSL请求速度慢
(2).由于加密,更加消耗硬件资源
(3).购买证书,增加额外开销

三.认证方式

1.Http/1.1使用的认证

(1).BASIC认证

以UserID:Password的形式经base64编码后传输

(2).DIGEST认证

请求方发送质询码,响应方根据质询码计算生成响应码,进行认证

(3).SSL认证

(4).基于表单的认证

四.Web攻击

1.跨站脚本攻击(XSS)

利用存在Web漏洞的网站,运行非法的HTML标签或者JavaScript脚本

2.SQL注入攻击

利用Web服务器漏洞,直接传参进入数据库

3.OS命令注入攻击

利用Web服务器漏洞,直接传参进入shell

4.HTTP首部注入攻击

在响应首部字段内插入换行,添加任意响应首部或主题的攻击

5.邮件首部注入攻击

6.目录遍历攻击

对无意公开的文件目录进行遍历

7.强制浏览

浏览web服务器非自愿公开的文件

8.不正确的错误消息处理

密码错误,用户未注册

9.点击劫持

10.DoS攻击

集中大量的请求,造成服务器资源过载

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值