1.Http
1.1 概述
Http(HyperText Transfer Protocol)全称超文本传输协议,是属于应用层的协议,基于TCP/IP的,所以它只是规定一些要传输的内容和头部信息,然后通过TCP协议进行传输,依靠IP协议进行寻址。
Http是无状态协议,对于事务处理没有记忆能力。
1.2 Http请求流程
1.建立TCP连接 2.浏览器向服务器发送请求命令 3.浏览器发送请求头信息 4.服务器应答 5.服务器发送应答头信息 6.服务器向浏览器发送数据 7.服务器关闭TCP连接
1.3 request方式
常用的请求方法主要有:GET和POST。
1.4 request内容
Http允许传输任一类型的数据对象,正在传输的数据类型由Content-Type加以标记。
1.5 Get与Post区别
Get Post 用于获取数据 用于提交数据 传递的参数追加在URL后面,用户可见,安全性低 通过http body提交,传递的参数封装在请求数据包中,用户不可见,安全性高 传送的数据量小,一般不大于2kb 传送的数据量可以很大,传输的数据放在消息体中 可以被浏览器缓存 不会被浏览器缓存 文件传输只能使用post方式,比如上传照片,压缩文件等等。 1.6 Http1.0、Http1.1与Http2的比较
Http1.0
无连接
Http1.0是无连接的。限制每次连接只处理一个请求,即服务器处理完客户的请求,并收到客户的应答后,就断开连接。
Http1.1
连接复用 Http1.1连接是可以复用的 消息头增加host 在request消息头增加了host。
Host:www.xxx.com
增加request方法 增加了put、delete、connect等request方法 Http2
格式 Http2采用二进制格式,而不是文本格式 多路复用 完全的多路复用 可以让服务器主动把响应“推送”到客户端缓存中 1.7 状态码
常见的状态码如下所示:
200 OK 客户端请求成功 400 Bad Request 客户端请求有语法错误,服务器无法理解 401 Unauthroized 请求未经授权 403 Forbidden 服务器收到请求,但拒绝提供服务 500 Internal Server Error 服务器内部错误,无法完成请求 503 Server Unavailable 服务器当前不能处理客户端请求,但一段时间后肯恢复正常 1.8 缺点
HTTP在安全方面的缺点如下:
1.Http会接收任何客户端发送给它的信息,包括攻击者(除了设置了指定的IP和端口才能访问),不验证发送方的身份。
2.无法保证传输的信息完整性,所以客户端接收到的信息很可能已经被篡改了。 3.传输的信息是明文,通过抓包就能看到。 4.中间人可以进行拦截,获取传输和响应内容。 1.9 安全缺点解决方式
1)内容加密
这种技术很常用,但是工作量很大,要将所有的传输信息加密发送给服务端,服务端再根据一定规则进行解密,然后将要返回给客户端的信息机密,再次返回给客户端。
虽然加密了,但是可以通过抓包看到加密的信息。
2)通讯加密
HTTP协议中没有加密机制,但是可以通过SSL(Scure Socket Layer,安全套接层)或者TLS(Transfer Layer Scurity,安全传输协议)组合使用,这样就加密了HTTP通讯内容。
当用SSL建立了安全的通讯线路后,就可以在这条线路上安全的传输Http内容了,这种组合就成为HTTPS(Http Scure,超文本安全传输协议)或者Http Over SSL。
2 Https
2.1 概述
Https协议是一个安全通信通道,基于Http开发。当用SSL(安全套接字)建立了安全的通讯线路后,就可以在这条线路上安全的传输HTTP内容了,这种组合就成为HTTPS(Http Scure,超文本安全传输协议)或者Http Over SSL。
2.2 对称加密
其加密和解密都使用同一个秘钥的方式就是对称加密。
2.3 非对称加密
非对称加密会有一对秘钥:公钥和私钥。
1)公钥
公钥机密的内容只有私钥才可以解开,
2)私钥
私钥加密的内容,所有的公钥都可以解开(指和秘钥是一对的公钥)。
3)保存
私钥只保存服务器端,公钥可以发送给所有的客户端。
2.4 工作流程
HTTPS就是使用SSL/TLS协议进行加密传输,让客户端拿到服务器的公钥,然后客户端随机生成一个对称加密的秘钥,使用公钥加密,传输给服务端,后续的所有信息都通过该对称秘钥进行加密解密,完成整个HTTPS的流程。
工作流程简要如下所示:
1.当客户端访问Https网站时,服务端将自己的证书发送给浏览器,里面包含了网址、用于加密的公钥、以及证书颁发机构等信息。 2.客户端得到证书,进而去访问证书的颁发机构进行校验证书的合法性。如果合法,客户端则生成一个随机字符串用作后续通讯过程中的加密key,然后用证书的公钥机密,将随机生成的key和加密后的数据再发送到服务端。 3.服务端接收到key和加密的信息,通过私钥进行解密,比较是否一致性,如果一致,则使用该字符串作为后面的数据通讯加密的key,并且再向浏览器返回一串字符和加密的字符。 4.客户端接收这些数据过程和服务端一样,解密校验是否一样,如果一样,那么握手就结束了,后面就使用上面随机生成的key作为后续通讯的加密key。 5.注意事项:上述任何一个步骤失败都会终止该次握手。
2.6 单向证书
2.7 双向证书
2.8 HTTPS缺点
增加访问耗时
3 Http与Https的区别
区别如下所示:
从上图可以看出,如果没有SSL(Security Sockets Layer)安全套接层,Http直接和TCP进行通讯。SSL充当中间人进行处理安全。
1.Https协议需要到CA申请证书 2.Https是由SSL+Http协议构建的可进行加密传输,身份验证的网络协议,比http更安全 3.连接端口不同,HTTP使用80,HTTPS使用443 4.HTTPS密文传输,HTTP明文传输。 SSL为网络通信提供安全及数据完整性的一种安全协议,是操作系统对外的API,SSL3.0之后更名为TLS,采用身份验证和数据加密保证网络通信的安全性和数据的完整性。