HTTPS 建立连接的详细过程

简介

HTTPS是在HTTP的基础上和ssl/tls证书结合起来的一种协议,保证了传输过程中的安全性,减少了被恶意劫持的可能.很好的解决了解决了http的三个缺点(被监听、被篡改、被伪装)

对称加密和非对称加密

  • 对称加密
    • 即加密的密钥和解密的密钥相同,
  • 非对称加密
    • 非对称加密将密钥分为公钥和私钥,公钥可以公开,私钥需要保密,客户端公钥加密的数据,服务端可以通过私钥来解密

建立连接

  • HTTP和HTTPS都需要在建立连接的基础上来进行数据传输,是基本操作
  • 当客户在浏览器中输入网址的并且按下回车,浏览器会在浏览器DNS缓存,本地DNS缓存,和Hosts中寻找对应的记录,如果没有获取到则会请求DNS服务来获取对应的ip
  • 当获取到ip后,tcp连接会进行三次握手建立连接

tcp的三次挥手和四次挥手

过程简图

三次挥手(建立连接)

  • 第一次:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
  • 第二次:服务器收到SYN包,向客户端返回ACK(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RCVD状态;
  • 第三次:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
  • 完成三次握手,客户端与服务器开始传送数据,也就是ESTABLISHED状态。
  • 三次握手保证了不会建立无效的连接,从而浪费资源。

四次挥手(断开连接)

  • 第一次: TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。
  • 第二次:服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
  • 第三次:服务器关闭客户端的连接,发送一个FIN给客户端。
  • 第四次:客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

HTTP请求过程

  • 建立连接完毕以后客户端会发送响应给服务端
  • 服务端接受请求并且做出响应发送给客户端
  • 客户端收到响应并且解析响应响应给客户

HTTPS

  • 在使用HTTPS是需要保证服务端配置正确了对应的安全证书
  • 客户端发送请求到服务端
  • 服务端返回公钥和证书到客户端
  • 客户端接收后会验证证书的安全性,如果通过则会随机生成一个随机数,用公钥对其加密,发送到服务端
  • 服务端接受到这个加密后的随机数后会用私钥对其解密得到真正的随机数,随后用这个随机数当做私钥对需要发送的数据进行对称加密
  • 客户端在接收到加密后的数据使用私钥(即生成的随机值)对数据进行解密并且解析数据呈现结果给客户
  • SSL加密建立

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏资深Tester

测试流程之测试流程拆解

1603
来自专栏杨明亮的专栏

NAT 穿透原理浅浅说(一)

本篇文章也是综合和参考了些网络上和文献里的一些资料(文中没有对引用处进行标记,请见谅)。写本文的目的就是,用自己的语言描述了这个过程,同时也在描述过程中加入了一...

3.1K2
来自专栏杨建荣的学习笔记

Oracle和MySQL的高可用方案对比(一)

关于Oracle和MySQL的高可用方案,其实一直想要总结了,就会分为几个系列来简单说说。通过这样的对比,会对两种数据库架构设计上的细节差异有一个基本的认识。O...

3346
来自专栏我是攻城师

理解Vmware虚拟机的网络模式

像物理交换机一样,虚拟交换机将虚拟网络连接在一起,故而也被称为虚拟网络 命名方式VMnet0,VMnet1,VMnet......以此类推,默认情况下在vm里面...

863
来自专栏朱宁的专栏

腾讯视频 WEB 站点 HTTPS 改造:总结篇

2016年 6 月份我们启动了腾讯视频 V 站 的 HTTPS 改造, 由于历史原因,V 站改造涉及了 50 多个 CGI 域名、 10 多个静态资源域名。

1.1K2
来自专栏一个会写诗的程序员的博客

物理内存与虚拟内存

物理内存就是你的机器本身内存了(如内存条的大小)。物理内存就是CPU的地址线可以直接进行寻址的内存空间大小。比如8086只有20根地址线,那么它的寻址空间就是1...

522
来自专栏上善若水

007尝试使用UML图

尝试使用uml图来帮助自己快速的构建稳健的程序 uml对理清自己的思路,应该是很有帮助的了

812
来自专栏即时通讯技术

迈向高阶:优秀Android程序员必知必会的网络基础

网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlC...

1142
来自专栏乐沙弥的世界

Oracle RAC failover 测试(连接时故障转移)

    Oracle RAC 集群最突出的表现就是高可用性,这些内容主要包括load balance以及failover,通过这些技术使得单点故障不影响客户端端...

582
来自专栏社区的朋友们

消息队列 CMQ 七大功能实践案例

本文先简单介绍 CMQ 底层的架构实现,然后着重结合CMQ的功能特点来介绍 CMQ 的实践案例,让大家快速理解和上手 CMQ 的开发。

7948

扫码关注云+社区