🗒️Http和Https学习(一)
2022-5-29
| 2024-3-22
0  |  阅读时长 0 分钟
date
icon
password
description
permalink
categories
type
status
slug
summary
tags
category
updated
Mar 22, 2024 09:10 AM

前言

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

简单介绍下http和https

http中文名称是超文本网络传输协议,深究一下呢,他是一种分布式、协作式和超媒体信息系统的应用层协议,简单的说就是接受和发送HTML页面的方法,用来在Web和服务器之间传递信息。
https是基于SSL+HTTP组合而来的,中文名称就是超文本网络传输安全协议,由Http通信然后再把信息通过SSL/TLS加密。这样的话就能让数据很安全,不会被第三方获取你发了什么信息。
 

Http和Https的区别

  1. http默认端口是80,https的默认端口是443
  1. http不需要CA证书,https需要CA证书
  1. http需要TCP握手3次,https的话再Http的3次握手基础上,还需要SSL/TLS的加密握手9次,总计12次
  1. 从连接的方式上看就知道http是明文发送,而https是需要加密发送的信息的
  1. 从第三也可知道,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连接了一下服务器。
  1. 服务器会生成公钥和私钥(公钥和私钥,分别就像一把锁和一把能打开这个锁的钥匙)。
  1. 就会把自己的公钥发送给客户端。
  1. 客户端拿到了公钥(也就是之前提到的CA证书),如果没通过就会提示这个网站危险的页面,那么在通过验证的时候会生成一个随机值,那么这个随机值就是客户端的私钥了。
  1. 就会用服务器给的私钥加密随机值发送给服务器。
  1. 服务器拿到了加密数据通过自己的私钥解锁出客户端的随机key,那么用该key来加密要发送的内容。
  1. 发送加密的内容给客户端
  1. 客户端拿到了加密内容,用key解密出来。
 
 
  • Html
  • 网络协议
  • vue3源码学习-4-effect编写以及依赖收集前端实现文件下载
    • Waline
    目录