1-在了解https前先看下http
1.1 http概念:是一个基于TCP/IP通信协议来传递数据的超文本传输协议,传输的数据可以是HTML文件,图片文件,服务端返回数据等等
1.2 http请求方法有哪些(常用的):
GET 请求指定的页面信息,并返回实体主体。
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在 请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容
DELETE请求服务器删除指定的页面。
1.3 http请求头:
Host : 主机和端口号
Connection : 链接类型(长连接,短链接)
Upgrade-Insecure-Requests (升级为 HTTPS 请求)
User-Agent :用户代理(一般写过爬虫了解这个,我们可以通过这个参数简单了解到是人还是浏览器)
Accept : 传输文件类型
Referer : 页面跳转处
Accept-Encoding:文件编解码格式
cookie :http是无状态协议,需要通过cookie和seesion来保持会话
x-requested-with :XMLHttpRequest (是 Ajax 异步请求)
1.4 响应状态码:
状态码分类:
1XX- 信息型,服务器收到请求,需要请求者继续操作。
2XX- 成功型,请求成功收到,理解并处理。
3XX - 重定向,需要进一步的操作以完成请求。
4XX - 客户端错误,请求包含语法错误或无法完成请求。
5XX - 服务器错误,服务器在处理请求的过程中发生了错误。
常见状态码:
200 OK - 客户端请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - 临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
404 - 请求资源不存在,可能是输入了错误的URL
500 - 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
1.4 Post和Get区别:
请求参数上:
GET:请求是附在在URL上
POST:请求一般放在body上
请求数据大小:
GET: 请求数据大小是有限制的(URL长度受由客户端/浏览器以及服务器端限制)
POST:理论上没有大小限制(实际还是由客户端/浏览器以及服务器端限制)
安全:
POST请求相对于GET是比较安全的,但是记住http是明文传输,所以可以说都是不安全
具体想了解更深,可以来到这个传入门
1.5 Http特点:
1.5.1 http协议支持客户端/服务端模式,也是一种请求/响应模式的协议
1.5.2 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
1.5.3 灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
1.5.4 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
1.5.5 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。
1.6 http存在的问题:
1.6.1 数据明文传输,容易被截取。
1.6.2 数据完整性未校验,容易被篡改
1.6.3 没有验证对方身份,存在冒充危险
1.7 Http 在OSI哪一层:
IP: 网络层
TCP/UDP: 传输层
HTTP、FTP: 应用层协议
2- 接下来我们简单了解https
2.1 消除http存在的问题:
由于http明文传输数据,所以很容易在传输过程中被监听,对数据篡改或者盗取,这种攻击手法就是中间人攻击手法(MITM)
2.2 Https是如何实现的(非对称加密和对称加密结合):
2.2.1 客户端发送请求,服务端返回证书(公钥)
2.2.2 客户端随机生成对称加密的密钥,并使用公钥加密,再把加密后的对称密钥发给客户端
2.2.3 服务端使用私钥对对称加密的密钥进行解密,并用其解密后的对称密钥进行数据加密
这里注意在2.2.1 服务端返回的数据中不止有证书中的公钥,还有数字签名(用来防伪),证书明文部分。数字签名是对证书明文信息进行哈希,然后用私钥进行加密。客户端得到数据时候现用ca发的公钥进行解密得到sign1,然后再对证书明文部分进行哈希得到sign2,然后把sign1和sign2进行比较来判断是否被篡改过
2.3 Https不足:
2.3.1 HTTPS协议多次握手,导致页面的加载时间延长近50%;
2.3.2 HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗
2.3.3 申请SSL证书需要钱,功能越强大的证书费用越高。
2.3.4 SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大。
2.4 http和https 区别:
2.41 https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
2.4.2 http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。
2.4.3 http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
2.4.4 http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、 身份认证的网络协议,比 http 协议安全。
补充点:
URI: 统一资源标识符,用来标示 一个具体的资源的,我们可以通过 URI 知道一个资源是什么。
URL: 统一资源定位符,用来定位具体的资源的,标示了一个具体的资源位置。互联网上的每个文件都有一个唯一的URL。
参考链接: