三次握手、四次挥手、HTTPS

809 阅读3分钟

关于三次握手、四次挥手的详解,请参考这篇博客,讲解很详细点我

1.三次握手

Question:这里主要解释一个问题,为什么一定要进行三次握手?

Answer:只有经过三次握手,通信双方(客户端Client和服务器Server)才能确认自己和对方具有接收信息和发送信息的能力。

  • 第一次握手:Client发送信息,Server接收信息。Server确认Client的发送能力和Server的接收能力。
  • 第二次握手:Server发送信息,Client接收信息。Client确认自己具备接收和发送能力;Client确认Server具备接收和发送能力。
  • 第三次握手:Client发送信息,Server接收信息。Server确认Client的接收能力和Server的发送能力。

综上所述,通过三次握手,就能明确双方的收发功能均正常,也就是说,保证了建立的连接是可靠的。三次是确保连接可靠的最少次数,再就多余。

2.四次挥手

Question1:为什么要通过四次挥手?

Answer:TCP是全双工(全双工数据通信允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信,举例:电话通信,如下图),因此连接的拆除需要单独将两个通道分别断开。

而四次挥手做的就是:在保证两个通道都没有数据传输时才能断开两条通道和释放资源。

Question2:如果是三次挥手,会怎么样?

Answer:三次挥手的话,假设client端要求主动关闭,Server端在收到FIN消息之后,需要同时回复ACK和Server端的FIN消息。如果Server端在该连接上面并没有Pending的消息要处理,那么是可以的。但是如果Server端还有消息要处理(处理完成后还需要将消息发送给Client端)需要等待一段时间才可以关闭另外一个方向的连接,那么这样的三次挥手就不能满足条件。

3.HTTPS

3.1HTTPS的握手和加密过程

区别于TCP的三次握手,HTTPS经过HTTP进行通信,利用SSL/TLS来加密数据包。因此HTTPS的握手过程是在TCP三次握手之后进行的。HTTPS的握手和加密过程,参考这个三个博客点我1点我2点我3

3.2客户端(浏览器)如何检测数字证书是合法,参考点我

Question:在HTTPS握手过程中,第二步服务端返回数字证书后,客户端是如何验证数字证书是合法的呢?

Answer:首先客户端读取证书中的Issuer(发布机构),然后会在操作系统或浏览器内置的受信任的发布机构中去找该机构的证书(为什么操作系统或者浏览器会存在证书)。如果找不到就说明证书是水货,证书有问题,程序给错误信息。如果找到了,或用户确认使用该证书。接下来验证过程参考点我

Question:为什么操作系统或者浏览器会有证书发布机构的证书?

Answer:其实证书发布机构除了给别人发布证书外,自己也有自己的证书。在操作系统安装好时,受信任的证书发布机构的数字证书就已经被微软安装在操作系统中了,根据一些权威安全机构的评估,选取一些信誉很好并且通过一定安全认证的证书发布机构,把这些证书默认安装在操作系统中并设为信任的数字证书。发布机构持有与自己数字证书对应的私钥,会用这个私钥加密所有他发布的证书及指纹整体作为数字签名。

参考

  1. www.cnblogs.com/zhuoqingsen…
  2. www.jianshu.com/p/42c26bb4e…
  3. baijiahao.baidu.com/s?id=165422…
  4. www.jianshu.com/p/c2bf75485…