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 条评论
登录 后参与评论

相关文章

来自专栏信安之路

【作者投稿】SOCKSTRESS攻击原理与防御

SockStress攻击正好与Syn-Flood攻击原理相悖,它正是利用建立TCP/IP三次握手连接来实现拒绝服务攻击,而且与Syn-Flood不同它并非通过耗...

820
来自专栏技术博文

中小型网站服务器配置参考

入口服务器(2台): CPU:单核或双核 内存:DDR4 2G或以上 硬盘:SATA 100G或以上 网卡:千兆网卡 带宽:10Mbps独享或以上 应用服务器(...

3486
来自专栏Kevin-ZhangCG

解决端口冲突问题(查询端口占用进程并kill) 1. 查看端口占用

1252
来自专栏顶级程序员

记一次惊心的网站TCP队列问题排查经历

此时问题已经影响到整个网站的正常业务,我的那个心惊的呀,最主要报警系统没有任何报警,服务运行一切正常,瞬时背上的汗已经出来了。但还是要静心,来仔细寻找蛛丝马迹,...

672
来自专栏黄日成的专栏

浅析 P2P 穿越 NAT 的原理、技术、方法 ( 下 )

在 NAT 环境下,实现 P2P 通信的完整解决方案包括几个部分呢?相关的原理、方法、技术有哪些?

1.2K2
来自专栏北京马哥教育

tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项

linux TIME_WAIT 相关参数: net.ipv4.tcp_tw_reuse = 0 表示开启重用。允许将TIME-WAIT sockets重...

45611
来自专栏别先生

Hadoop集群最迅速的配置免密码登陆方法

1:多台机器互相免密登陆的思路(默认你的linux操作系统已经安装好ssh): 第一步:在各自的机器上面生成密钥:   在第1台机器上生产一对钥匙: ssh...

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

rman中三个不完全恢复场景(r6笔记第16天)

rman在数据的备份恢复中还是发挥了重大的作用,把冷备,热备这种手工备份方式做了集成化的管理,可以基于这个工具集完成相对复杂额备份恢复工作。 当然了rman相对...

2785
来自专栏LanceToBigData

MySQL集群(四)之keepalived实现mysql双主高可用

前面大家介绍了主从、主主复制以及他们的中间件mysql-proxy的使用,这一篇给大家介绍的是keepalived的搭建与使用! 一、keepalived简介 ...

2179
来自专栏流柯技术学院

Kerberos简介

Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket...

1832

扫码关注云+社区