这篇文章我想写好久了,原本想等应用用上https以后再进行阐述。可是时不我待,感受咱们的项目在需求的压力下,暂时没有人、精力来完善这一块。可是我并不想我以前的研究白费,因此我就在这里写下,我所了解的https。web
首先我并不会很深刻的去探讨这个东西,即便我曾经花了很长的时间去研究这个东西。主要是我考虑到 一、 本身没有系统的去学习这一块的知识,讲解的会比较的肤浅。 二、 就算是懂这个东西也不必定会为诸位看官讲清楚这个东西。 考虑到上面两条,我决定关于http这一块,我就重点来说: 一、http的基本概念 二、http的三次握手 三、http的四次挥手 四、经常使用的http方法 五、经常使用的http状态码算法
协议
是指计算机通讯网络中两台计算机之间进行通讯所必须
共同遵照的规定或规则
,超文本传输协议(HTTP)是一种通讯协议,它容许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。浏览器
http协议
,即超文本传输协议。是一种详细规定了浏览器和万维网服务器之间互相通讯的规则,经过因特网传送万维网文档的数据传送协议。安全
http协议是用于从万维网服务器传输超文本到本地浏览器的传送协议。它可使浏览器更加高效,使网络传输减小。它不只保证计算机正确快速地传输超文本文档,还肯定传输文档中的哪一部分,以及哪部份内容首先显示(如文本先于图形)等。服务器
http是一个应用层协议
,由请求和响应构成,是一个标准的客户端服务器模型。网络
http协议永远都是客户端发起请求,服务器回送响应
。这样就限制了使用http协议,没法实如今客户端没有发起请求的时候,服务器将消息推送给客户端。并发
http协议的主要特色可归纳以下: 一、支持客户/服务器模式。支持基本认证和安全认证。 二、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法经常使用的有get、head、post。每种方法规定了客户与服务器联系的类型不一样。因为http协议简单,使得http服务器的程序规模小,于是通讯速度很快。 三、灵活:http容许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 四、http 0.9和1.0使用非持续链接:限制每次链接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开链接。http 1.1使用持续链接:没必要为每一个web对象建立一个新的链接,一个链接能够传送多个对象,采用这种方式能够节省传输时间。 五、无状态:http协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺乏状态意味着若是后续处理须要前面的信息,则它必须重传,这样可能致使每次链接传送的数据量增大。工具
谈到http一定就会谈到的一个问题--http的三次握手,三次握手其实你真正明白这个问题了以后,这个东西会被你想的很简单。首先你要明白三次挥手是用来干吗的? 在TCP/IP协议中,TCP协议提供可靠的链接服务,采用三次握手创建一个链接。以下图所示 post
因为TCP链接是全双工的,所以每一个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的链接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP链接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另外一方执行被动关闭。以下图所示 学习
http的方法有不少,大概有: 一、 GET:用于请求访问已经被URL(统一资源标识符)识别的资源,能够经过URL传参给服务器。 二、 POST:用于传输信息给服务器,主要功能与Get方法相似,但通常推荐POST方式。 三、 PUT:传输文件,报文主体包含文件内容,保存到对应URL位置。 四、 HEAD:获取报文首部,与GET方法相似,只是不返回报文主体,通常用于验证URL是否有效。 五、 DELET:删除文件,与PUT方法相反,删除对应URL位置的文件。 六、 OPTIONS:查询相应URL支持的HTTP方法。 可是我常用的仍是get加post,我在这里就简单的介绍一下get/post的区别吧: (1) get请求通常用来得到数据,而post请求通常用来发送数据。人们指望,get请求不会对服务器形成任何影响,而post请求则可能会影响服务器端的数据。get请求消耗的资源较post请求而言,会少一些,但相对安全性较差。发送一样大小的数据,get请求的效率最高能够达到post请求的2倍。
(2)通常按照约定,使用get请求时,将数据经过url进行传递,而是用post请求时,将数据放在body里。但这并不是硬性规定,由于method和data自己是正交的。post请求亦可将数据放在url中。
(3)就协议底层实现而言,在get请求中,只产生一个TCP数据包,浏览器会将header和data一并发送出去,等待服务器的回应;而在post请求中,会产生2个TCP数据包。,浏览器先发送header,服务器响应100 continue,浏览器再发送data。
状态码 | 响应类别 | 缘由短语 |
---|---|---|
1XX | 信息性状态码(Informational) | 服务器正在处理请求 |
2XX | 成功状态码(Success) | 请求已正常处理完毕 |
3XX | 重定向状态码(Redirection) | 须要进行额外操做以完成请求 |
4XX | 客户端错误状态码(Client Error) | 客户端缘由致使服务器没法处理请求 |
5XX | 服务器错误状态码(Server Error) | 服务器缘由致使处理请求出错 |
总的来讲,我如今项目有用到的: 200 OK 请求正常处理完毕 204 No Content 请求成功处理,没有实体的主体返回 304 Not Modified 发送的附带条件请求未知足 400 Bad Request 请求报文语法错误或参数错误 401 Unauthorized 须要经过HTTP认证,或认证失败 403 Forbidden 请求资源被拒绝 404 Not Found 没法找到请求资源(服务器无理由拒绝) 500 Internal Server Error 服务器故障或Web应用故障 503 Service Unavailable 服务器超负载或停机维护
https呢?能够理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,所以加密的详细内容就须要 SSL,用于安全的 HTTP 数据传输。众所周知,咱们在使用http协议的时候,数据的交换都是明文,这样就会带来很大的信息安全因而引入了https。 我在这里呢?主要是讲述https的对称加密和非对称加密。后面我在真正开始写算法章节的时候,会重点来说一讲我研究的几个加密算法。
对称加密呢?打个不切当的比方,小明和小红在上学的时候互生情愫,可是又惧怕被父母发现。因而他们想到了一个办法,就是他们在一个大树下面放了一个箱子,而且用锁锁起来。若是小红给小明写了信,就通知小明拿着钥匙去去放在箱子里面的信。小明取信也是如此。 小明和小红的钥匙就比如对称加密中数据传输双方的公钥,数据能够经过公钥加密后,经过他们仅有他们知道的公钥去解密。这种加密方法必定程度上面作到加密的效果。这样作的好处主要有:对称加密算法的优势是算法公开、计算量小、加密速度快、加密效率高
。可是若是小明和小红的钥匙遗失也就是保密双方的公钥丢失,或者小明、小红的钥匙被泄漏也就是公钥解密方式被泄漏 这样也就达不到加密的效果了。 我这里有一个不恰当的动画
既然对称加密方式存在很大程度上的缺陷。因而聪明的计算机先辈们就发明了非对称加密。关于非对称加密呢?其运行的方式: 首先乙方生成一对密钥(公钥和私钥)并将公钥向其它方公开。而后获得该公钥的甲方使用该密钥对机密信息进行加密后再发送给乙方。最后乙方再用本身保存的另外一把专用密钥(私钥)对加密后的信息进行解密。乙方只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。反之也同样。 这样作的话,即便在传输过程当中攻击者截获了传输的密文,并获得了乙的公钥,也没法破解密文,由于只有乙的私钥才能解密密文。这种方式在必定程度增强了数据的安全性
。可是一样非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少许数据进行加密
。 一样我在这里也画了一个动画。
HTTP:是互联网上应用最为普遍的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从万维网服务器传输超文本到本地浏览器的传输协议,它可使浏览器更加高效,使网络传输减小。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容就须要SSL。HTTPS协议的主要做用能够分为两种:一种是创建一个信息安全通道,来保证数据传输的安全;另外一种就是确认网站的真实性。
一、https协议须要到ca申请证书,通常免费证书较少,于是须要必定费用。 二、http是超文本传输协议,信息是明文传输,https则是具备安全性的ssl加密传输协议。 三、http和https使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。 四、http的链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
这篇文章其实早就该写出来了,可是本身挨都今天才去发表 讲道理仍是比较拖延癌的前兆的。其实这篇文章并非我研究的所有,可是我这篇文章的目的是让各位看官大体的认识到https和http。好了,最近提倡早睡、早起 就不继续写下去了。准备手绘几张对称/非对称图来加深你们对这个的理解。若是有好的画图工具能够跟我说一哈,否则我本身都看不下去个人手绘了。