概念简介
超文本传输协议(HyperText transfer Protocol),他是基于TCP/IP协议的应用层协议,一般用于B/S架构。
特点
1,支持客户端/服务端模式(C/S)
2,简单快速:请求服务时只需传送请求方法和路径。常用的方法:GET,HEAD,POST,PUT,DELETE
3,灵活:可以传输任意类型的数据对象(标记:Content-Type)
4,无连接:每次连接只处理一个请求。一次请求响应完成后断开连接。后面通过connection:keep-alive实现长连接
5,无状态:是一种无状态协议(对于事务处理没有记忆能力,无状态意味着如果后续处理需要前面的信息则必须重传,这样数据量会增大),所以后续引入Cookie/session等会话追踪来记录管理状态。
请求报文/响应报文
请求报文:请求行(请求方法+URL+协议/版本)+请求头+空行+请求正文(GET没有请求正文)
响应报文:响应行+响应头+空行+响应正文
常用请求方法
GET:请求指定的信息,并返回信息实体(通过URL来提交数据,用?连接,用&连接参数)
HEAD:类似GET,返回的响应中没有信息实体,用于获取报头
POST:向指定资源提交数据进行处理请求(新资源的建立/已有资源的修改)。
PUT:传送数据取代指定文件内容
DELETE:删除指定页面
注:put通常指定了资源的位置,而post则没有。post更像是add数据,put更像是modify数据。
put具有幂等性,post不具有幂等性。(多次操作下结果是一致的)
HTTP安全问题
1,数据传输是明文的,可能被窃听
2,不验证通信方身份,可能遭到伪装
3,无法验证报文完整性,可能被篡改
HTTPS
一般认为HTTPS = HTTP + SSL/TLS,通过SSL证书来验证服务器的身份,并为通信进行加密
SSL:安全套接字层。位于TCP/IP协议与各种应用层协议之间,提数据通讯提供安全支持。
TLS:传输层安全。前身是SSL。
HTTPS采用共享密钥加密(对称)和公开密钥加密(非对称)两者并用的混合加密机制。公开密钥加密处理速度更慢,所以在交换密钥阶段使用公开密钥加密,之后的建立通信交换报文阶段则使用共享密钥加密方式。
对称加密算法用于对真正传输的数据进行加密
非对称加密算法用于在握手过程中加密生成的密码。该算法会生成公钥和私钥,公钥只能用于加密数据,因此可以随意传输,而私钥用于加密数据解密工作,所以都保护着防止泄密。
hash算法用于验证数据的完整性
使用HTTPS传输数据的流程
HTTPS的缺点
1,SSL证书需要向机构付费
2,SSL设计安全的算法开销会消耗CPU资源,对服务器资源消耗大
3,加密解密导致访问速度变慢
HTTP和Socket区别
1,socket支持TCP和UDP,而http只支持TCP;
2,http使用的是请求-响应方式,需要先请求才能有响应;
3,socket效率高,不用解析报文头啥的;