HTTP的作用
那还用说么,就是用于客户端与服务器之间的通信。与其他TCP/IP协议族内的其他众多协议没差。
但是需要注意的是:请求访问的文本或者图像等资源的一端称为客户端,提供资源响应的一端称为服务器端。客户端和服务器端在物理上并不是一成不变的。而从一条通信路线来说,两端的角色是固定的。
HTTP的通信方式
客户端给服务器端发送请求报文,服务器处理后返回响应报文。
请求报文和响应报文都是HTTP报文。HTTP报文本身是由多行(CR+LF作为换行符)数据构成的字符串文本,大致可以分为报文首部和报文主体两块。通常并不一定有报文主体。比如实际应用过程中的心跳包就不含有报文主体
HTTP使用URI定位网络上的资源。
URI和URL有什么区别呢?翻看上一篇
请求报文中的方法基本可以分为GET/POST/PUT/HEAD/DELETE/OPTIONS/TRACE/CONNECT等。
我们移动端用的最多的是后台开放出来的GET和POST方法。
那么GET和POST方法有什么区别呢?
在REST规范中,GET适用于获取响应主体内容。POST用于传输实体的主体。
但是现在很多后台服务器在实际使用过程中,出于安全考虑同样用POST获取响应的主体内容。
我觉得具体两者的区别以及为什么POST就相对GET方法安全,后续还可以写一篇文章。
HTTP的特点
1.HTTP是不保存状态的协议。
因为HTTP协议本身在设计之初是为了能够更快的处理大量事物,确保协议的可伸缩性,保证协议尽可能的简单,所以设定如此(在我看来这是后续的穿凿附会hhhh)。
那么,现在因为技术的发展,需要记录HTTP的状态,引入了cookie的技术。cookie技术并不是将每个客户端的状态保留在服务器端,而是保留在客户端,在发送请求的时候包含在请求头中发送给服务器,服务器通过cookie提供的id查找。
2.HTTP在早期时候无法进行持久链接,1.0以后实现了持久链接的能力,只要一端没有明确提出断开连接,则保持TCP连接状态。
1.0的HTTP是怎么实现了持久链接的呢?
HTTP的优缺点
HTTP的优点:
1.协议简单
2.传输速度快
3.一定程度上的稳定链接。
HTTP的缺点:(其他未加密协议都会存在的问题)
![](http://upload-images.jianshu.io/upload_images/6171944-21811ecb74815e1a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/6171944-09777e365f76bb16.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
其实就算是已经过加密的通信,也会被窥视到通信内容。这是由于互联网的特性造成的。互联网是能连通到全世界的网络组成的,并没有说在通信时,某条通信网络上的网络设备啦光缆啦是个人私有物,所以在通信过程中都是有可能被窥视的。
HTTPS的产生
加密的方式有两种,一是通信方式的加密,一种是通信内容的加密。通信方式的加密就是HTTPS(HTTP secure,超文本传输安全协议)。
HTTPS的组成
HTTPS=HTTP+加密+认证+完整性保护。
SSL采用的是公开密钥加密的加密处理方式,即使用了一对非对称的密钥的加密方式。这个之前某面试的小菜唬到我过hhhh
。这一对密钥分别叫公钥和私钥,公钥即公开的密钥,用于加密,私钥用于解密。流程如图:
那么HTTPS采用的就是SSL的公开密钥加密的处理方式么?
并不是,HTTPS用的是共享密钥加密和公开密钥加密两者共用的混合加密机制。
HTTPS用到的公开密钥必须由数字证书认证机构(CA,Certificate Authority)和其相关机关颁布。
好笑的是,我们公司获取到的免费公钥证书,是不受Google信任的一个机构的hhh所以用谷歌浏览器是打不开我们公司官网的Hhhh,原因大概如下 ![](http://upload-images.jianshu.io/upload_images/6171944-8165a3bdf0bf3803.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
HTTPS的优缺点
HTTPS的优点:保证了数据安全
HTTPS的缺点:相比HTTP忘了,忘了负载可能会慢2到100倍。
变慢的原因:1.与SSL通信慢 2.SSL的加解密处理占用大量资源