http与https(简单明了)
作者:互联网
HTTP
首先我们要知道http就是一种协议格式,用于浏览器(客户端)与服务器进行数据传递的,说白了就是将多个数据对象组织成一个指定格式的字符串进行数据传输。
1、它是一种字符串明文协议(不进行加密,中间人可以直接获取到)
2、http是一个应用层协议,在传输层使用tcp协议实现传输,因此我们也说http本事就是一个tcp服务器
协议格式
http的协议格式分为首行、头部、空行、正文(如下图所示),而在其中我们要着重关注的就是首行与头部。
首行是请求或响应数据的第一行,其中又包括请求首行和响应首行。他们各自包含三个元素,之间以空格间隔,以\r\n结尾。
请求首行
请求首行包括请求方法、URL、协议版本
请求方法
从图中可以看到数据中心的第一行就是请求首行,其中post是请求方法,而请求方法除了post之外还有GET。
GET请求主要是为了获取实体资源
POST主要是为了向服务器提交数据
url
协议方案://用户名:密码@服务器IP:port/资源路径?查询字符串#标识符
常见的协议方案:http-字符串传输协议/https(加密了的http)
为了安全不把用户名和密码写在url中
服务器IP:网站的名字(域名)
服务器端口:http协议默认使用80端口,https使用443端口
资源路径:所请求资源在服务器上的相对路径
查询字符串:提交给服务端的数据,由key = val的键值对组成
协议版本
0.9的时候没有协议格式,只支持html数据传输
1.0完成了http协议格式的定义,但只能进行短连接
1.1支持了更多请求方法、同时可以进行长链接
2.0采用二进制传输、头信息压缩技术可以使得请求和响应不必完全按照顺序,提高效率
响应首行
响应首行也包括3个要素,之间以空格间隔,最终以\r\n结尾。其中包括协议版本、响应状态码(反应请求结果)、描述状态码(对状态码的描述)。
HTTPS
相比于http,https并不是一种新的协议,说白了就是加密后的http协议。因为http协议是明文协议。中间人可以直接获取到传输信息,并不安全。所以https中的s就是ssl(套接字安全层)
https的加密流程
https的加密方法主要通过两个步骤来完成:身份验证、加密传输
身份验证
思想:身份验证就是确保与你通信的这个服务器是不是真正的服务器,而不是黑客拦截做的假截面。
做法:通过CA(电子认证服务),需要被认证的一方取权威机构办法一个CA证书,当客户端与服务器建立链接后,客户端会把证书发送给客户端,客户端通过解析来进行判断。
加密传输
身份验证的正确只能证明与你建立链接的服务器是安全的,但是在数据交互的过程中,仍然有可能被别人窃取数据。所以我们需要再传输信息的过程中进行数据加密。
而数据加密通常有两种做法:对称加密、非对称加密
对称加密:通信双发采取同样的秘钥。比如抗战中通过同一本书来进行信息的加密和解密。虽然这样效率高但是坏处也明显,别人如果也去拿这本书就可以很简单的破译了。
非对称加密:它是服务器生成一对秘钥(公钥和私钥),服务器把公钥传给客户端后,客户端再把数据通过公钥进行加密,这时候加密的文件只能私钥解密。别人拿到数据也没用。但这样虽然安全,但效率也低
而https采用混合加密。
首先通过非对称加密来加密了传输通道。好比我们先偷偷商量好用哪本书进行加密解密,然后真正进行数据传输的时候都用这本书。别人没有秘钥不能知道我们用的什么书进行加密,所以也更不知道我们传输的内容
HTTPS和HTTP的主要区别
1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
标签:协议,http,请求,简单明了,https,服务器,加密 来源: https://blog.csdn.net/Shadow_______I/article/details/114107446