从转行到现在做了一年多的前端开发,中间的过程跌跌转转,总觉得对一些网络的基础知识有所欠缺。这几天看了一些http的相关文章和资料,以下是对这几天的所学做个总结。
当我们打开一个网站,浏览器某个网页,都必须有一个http请求。下面了解一下http的一些基础知识:
定义
HTTP协议(Hyper Text Transfer Protocol),即超文本传输协议的缩写,是从万维网服务器传输超文本到本地浏览器的传送协议,是一个基于TCP/IP通信协议来传递数据。
http请求过程
1、域名解析
2、发起TCP3次握手
3、建立TCP请求发起 http 请求
4、服务器响应http请求,得到 html 代码
5、浏览器解析 html 代码,并请求 html 代码资源
6、浏览器对页面进行渲染,呈现给用户
http 状态码
常见的状态码:
200:请求成功
301:资源被永久的转移到其他URL
404:请求的资源不存在
500:内部服务器错误
状态码分类:
1XX:信息。服务器收到请求,需要请求者继续操作
2XX:成功。操作被成功接收并处理
3XX:重定向。需要进一步的操作以完成请求
4XX:客户端错误。请求包含语法错误或无法完成请求
5XX:服务器错误。服务器在处理请求的时候发生错误
与 http 相对应的 https
什么是 https ?我们用一个简单的公式来理解:
HTTPS = HTTP + TLS/SSL
也就是:在 http 的传输的 过程加了一道 TLS/SSL (传输层加密协议),而这个协议是HTTPS 安全的核心。
https 加密流程
1、客户端将 TLS/SSL 协议的版本号、加密算法的种类,产生的随机数A等信息传给服务器
2、服务器选择其中的一种组合为加密方式,同事将自己的证书、公钥、另外一个随机数一起传给客户端
3、客户端获得服务端返回的信息(包括证书、签名、域名等),验证成功,则生成对称加密秘钥S,用公钥加密后返回给服务器
4、服务器用私钥将这段密钥解密,得到对称密钥S,并用次密钥加密一段握手消息返回客户端
5、客户端收到握手信息,用对称密钥解密,验证成功,则握手成功。
https 加密方式
1、对称加密
加密数据用的密钥(即公钥)和解密数据用的密钥(即私钥)是一样的。
2、非对称加密
公钥和私钥是不一样的,只能保证单项数据的传输
理解加密的关键点:私钥能解开公钥加密的数据,但私钥加密的数据,同样能用公钥解密
https 优缺点
优点:
1、使用 https 协议可以认证用户和服务器,确保数据发送到正确的客户机和服务器
2、https 协议是由 SSL+HTTP 协u议构建的可进行加密传输、身份认证的网络协议,要比http 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性
3、https 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本
缺点:
1、在相同的网络环境下,https 协议会使页面的加载时间延长近50%,增加10%到20%的耗电。此外,https 协议还会影响缓存、增加数据开销和功耗
2、https协议的安全是有范围的,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用
3、最关键的,SSL 证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行
4、SSL 的专业证书需要购买,功能越强大的证书费用越改。个人网站、小网站可以选择入门级免费证书
5、SSL 证书通常需要绑定固定IP,为服务器增加固定IP会增加一定费用
6、https 连接服务器端资源占用较高,相同负载下会增加带宽和服务器投入成本
关于http 和 https 先到此,下次继续深入 TCP的三次握手和四次挥手。