http协议(超文本传输协议):
特点:简单快捷,灵活,无连接,无状态
应用层:规定了向用户提供服务时的传输协议,如DNS域名服务
传输层:处于网络中的两台计算机之间数据通信所使用的协议,包含tcp和udp两种协议,tcp是双全工,发送数据和接受数据是同步的,就像打电话一样,tcp协议在连接和断开的时候需要有三次握手和四次挥手,所以不够高效,udp是面向无连接的,传递数据之前不需要连接,udp不保证数据有序且不丢失的传送到对端,也就是说不够稳定,但正因为如此,它比较轻便和高效;
网络层:规定了数据通过怎样的路线传输到对方计算机,如ip协议
链路层:用来处理网络连接的硬件部分,包括操作系统,网卡,光纤等
HTTP2相对HTTP1的版本新增了以下功能:
- 新的二进制格式,HTTP/1.x的解析是基于文本的。基于文本协议的解析存在天然缺陷,文本的表现形式有多样性,要做到全面性考虑的场景必然很多。二进制则不同,只识别0和1的组合。基于这种考虑HTTP/2.0的协议解析采用二进制格式,方便且强大
- 多路复用:同一个tcp连接上面可以存在多条流,也就是可以发送多个请求,它们之间是并发的,一条请求不需要等待其他请求的相应,避免了线头阻塞的问题,提高了传输效率;
- 头部压缩:HTTP1.x的请求和响应头带有大量的信息,每次请求都要重复发送,HTTP2.0采用encoder来减少需要传输的头部的大小,通讯双方各自cache一份头部fields表,即避免了重复头部的传输,又减少了需要传输的大小;
- 服务端推送:指把客户所需要的css/js/img资源伴随着index.html一起发送到客户端,省去了客户端重复请求的步骤(从缓存中取)
HTTP请求方法:
- GET:get方法一般用于获取服务器资源
- POST:post方法一般用于向服务器传输数据
- PUT:put方法一般用于传输文件
- DELETE:delete方法用于删除文件
- HEAD:head方法用于获取报文首部,不返回报文主体
- OPTIONS:options方法用于询问请求URI资源支持的方法
HTTP常见状态码:
200:请求成功,从客户端发来的请求被服务器正确处理
204:请求成功,但是响应报文不含实体的主体部分
301:永久重定向:表示资源已被分配了新的URL
302:临时重定向,表示资源临时被分配了新的URL
303:表示资源存在着另一个URL,应使用GET方法获取资源
304:表示服务器允许访问资源,但请求未满足条件的状况
307:临时重定向,但是期望客户端保持请求方法不变向新的地址发出请求
400:bed request,请求报文存在语法错误
401:unauthorized,表示发送的请求需要有通过HTTP认证的认证信息
403:forbidden,表示队请求资源的访问被服务器拒绝,可在实体主体部分返回原因描述
404:not found,表示在服务器上没有找到请求的资源
500:internal server error,表示服务器在执行请求时发生了错误
501:Not Implemented,表示服务器不支持当前请求所需要的某个功能
503:service unavailable,表示服务器暂时处于超负荷状态或正在停机维护,无法处理请求
HTTPS:
HTTP本身没有任何保密性,所以HTTP传输的数据相当于都是在网上在以明文的方式裸奔。为了解决这个问题,出现了各种加密技术:
- 对称加密:唯一密钥key1可用来加密也可用来解密。这样的加密需要双方都拥有密钥key1,如果第一次传输密钥被第三方截获就玩完。
- 非对称加密:公钥key3和私钥key2都可用于对应的加密和解密,即可用公钥加密私钥解密,也可用私钥加密公钥解密。服务端会生成一对密钥,一个私钥保存在服务端,仅自己知道,另一个是公钥,公钥可以自由发布供任何人使用。客户端的明文通过公钥加密后的密文需要用私钥解密。非对称密钥在加密和解密的过程的使用的密钥是不同的密钥,加密和解密是不对称的,所以称之为非对称加密。与对称密钥加密相比,非对称加密无需在客户端和服务端之间共享密钥,只要私钥不发给任何用户,即使公钥在网上被截获,也无法被解密,仅有被窃取的公钥是没有任何用处的。
- 混合加密:服务端先用非对称加密的私钥key2加密对称加密的密钥key1并传给客户端,客户端用非对称加密的公钥key3解密出对称加密的密钥key1,双方都有了密钥key1,开始利用key1加密通信。缺点:中间人可以自己生成非对称加密公钥替换掉服务端公钥发送给客户端,而此时客户端并无法验证公钥的可信性。
- SSL:首先需要从证书认证机构申请证书(证书中含有证书签名和服务端公钥key3)。在客户端发起HTTP请求时,服务端将证书发送给客户端。客户端认证证书的真伪,然后解密出服务端公钥key3,用公钥加密自己生成的对称加密密钥key1并传给服务端,最后利用key1加密进行通话。至于安全性,由于私钥是机构的,可以避免第三方伪造证书。并且就算得到了服务端公钥,也无法解密出公钥key3加密过的对称加密密钥key1。
HTTPS基于HTTP协议,通过SSL或TLS提供加密处理数据,验证对方身份以及数据完整性保护,特点如下:
- 内容加密:采用混合加密技术,中间者无法查看明文内容
- 验证身份:通过证书认证客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改
HTTPS和HTTP的主要区别:
- HTTPS协议需要到CA(证书颁发机构)申请证书,一版面费证书很少,需要交费
- HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都是经过加密的
- HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
- HTTP的连接很简单,是无状态的;HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,可以有效地防治运营商劫持,解决了防劫持的一个大问题,比HTTP协议安全
网友评论