侧边栏壁纸
博主头像
MicroMatrix博主等级

曲则全,枉则直,洼则盈,敝则新,少则得,多则惑。是以圣人抱一为天下式。不自见,故明;不自是,故彰;不自伐,故有功;不自矜,故长。夫唯不争,故天下莫能与之争。古之所谓“曲则全”者,岂虚言哉!诚全而归之。

  • 累计撰写 80 篇文章
  • 累计创建 21 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Http和Https学习(一)

蜗牛
2022-05-29 / 0 评论 / 0 点赞 / 13 阅读 / 3355 字 / 正在检测是否收录...

前言

在实际开发中,部署的项目在服务器上,通过域名来访问,是否会发现有的域名是http协议有的是https协议。那么同一个网站,他既可以http访问,又可以https访问,他们是什么呢,他们之间有什么区别呢?

简单介绍下http和https

http中文名称是超文本网络传输协议,深究一下呢,他是一种分布式、协作式和超媒体信息系统的应用层协议,简单的说就是接受和发送HTML页面的方法,用来在Web和服务器之间传递信息。

https是基于SSL+HTTP组合而来的,中文名称就是超文本网络传输安全协议,由Http通信然后再把信息通过SSL/TLS加密。这样的话就能让数据很安全,不会被第三方获取你发了什么信息。

Http和Https的区别

  1. http默认端口是80,https的默认端口是443
  2. http不需要CA证书,https需要CA证书
  3. http需要TCP握手3次,https的话再Http的3次握手基础上,还需要SSL/TLS的加密握手9次,总计12次
  4. 从连接的方式上看就知道http是明文发送,而https是需要加密发送的信息的
  5. 从第三也可知道,http的速度比https的速度快,占用服务器资源少

Http是怎么进行连接的?

首先,浏览器根据url获取域名对应的IP,如果没有会去DNS查找。当拿到服务器IP之后,

  • 第一次握手会给服务器发送一个随机值(准确的名称是同步序列值)SYN包(也可以说是SYN=1,seq=x,ACK=0),设置发送需要为X给服务器。进入SYN_SEND状态,等待服务器回应。
  • 第二次握手是服务器拿到之后会确认ACK=X+1,并且也发送个SYN的包,这个包就是(SYN=1,Seq=y,ACK=x+1)给客户端,服务器进入SYN_RECV状态。
  • 第三次握手客户端拿到了服务器给的SYN包,也就是同步序列包,然后发送确认包ACK(ack=y+1),大致包的样子就是(Seq=x+1,Ack=y+1)。发送给服务器之后,服务器确认,然后就进入了ESTABLISHED状态,,完成了3次握手

那么Https是怎么工作的呢?

Https通过上面的Http的3次握手,之后就进入了SSL/TLS的加密握手。

  1. 客户端发送Url连接了一下服务器。
  2. 服务器会生成公钥和私钥(公钥和私钥,分别就像一把锁和一把能打开这个锁的钥匙)。
  3. 就会把自己的公钥发送给客户端。
  4. 客户端拿到了公钥(也就是之前提到的CA证书),如果没通过就会提示这个网站危险的页面,那么在通过验证的时候会生成一个随机值,那么这个随机值就是客户端的私钥了。
  5. 就会用服务器给的私钥加密随机值发送给服务器。
  6. 服务器拿到了加密数据通过自己的私钥解锁出客户端的随机key,那么用该key来加密要发送的内容。
  7. 发送加密的内容给客户端
  8. 客户端拿到了加密内容,用key解密出来。
0

评论区