本文主要是对一些基本概念的解释,在了解HTTPS之前,我们必须对这些基本概念有所了解,否则https将会是一本天书!
1. TCP/UDP
- TCP协议:全称是(Transform Control Protocol,传输控制协议),是一种面向连接的、可靠的、基于字节流的传输层通信协议;是面向连接的、可靠的流协议;
- UDP:全称是(User Data Protocol,用户数据报协议),在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。
何为面向(无)连接,通俗点讲就是:
- 面向连接:我想找你玩,实现跟你打个电话,确认你在家,我在去找你玩;
- 面向无连接:我想找你玩,我事先根本没跟你打招呼,想的时候就来了;这样你可能不在家,我可能白跑一趟(数据包丢失)
如何保证连接呢?那就事先咱约定一下呗,这个约定就是建立一个通道,具体过程如下:
- 第一次握手
客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。- 第二次握手
服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。- 第三次握手
当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。这里可能大家会有个疑惑:为什么 TCP 建立连接需要三次握手,而不是两次?这是因为这是为了防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误。
2. URL
URL(Uniform Resource Locator, 统一资源定位符) ,其格式如下:
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
- protocol: 协议名称,如http,https等,另外还包含file,ftp等
- hostname:主机名,是指存放资源的服务器的域名系统 (DNS) 主机名或 IP 地址;
有时,在[主机名]前也可以包含连接到服务器所需的用户名和密码(username:password)- port:端口号【可选】,省略时使用方案的默认端口;
http默认为80,https默认为443,ssh默认为22.- path:路径,由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
- ?query:查询【可选】,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP) 等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开
- fragment:信息片断,用于指定网络资源中的片断
如下面的网址:
https://www.jianshu.com/u/296934dfeacc
- protocol: http
- hostname:www.jianshu.com
- port:默认为443
- path:/u/296934dfeacc
3. DNS
DNS(Domain Name System,域名系统),其主要作用是将【主机名】到【IP地址】之间的转换。
- 作用:
- 人类记忆习惯于字符,计算机处理习惯于数字,DNS就是将人类的习惯转换为计算机习惯的中介!
- 便于http重定向:更换服务器(IP变更),可不变更域名,通过DNS映射到新的IP地址
- 默认端口:53
- DNS结构:
4. CA
CA是什么?
CA是Certificate Authority的缩写,也叫“[证书授权中心]。它是负责管理和签发证书的第三方机构,作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改。
所以,CA实际上是一个机构,负责“证件”印制核发。就像负责颁发身份证的公安局、负责发放行驶证、驾驶证的车管所。
CA证书是什么?
顾名思义,CA 证书就是CA颁发的证书。 CA证书也就我们常说的数字证书,包含:
- 证书拥有者的身份信息
- CA机构的签名
- 公钥
- 私钥
身份信息用于证明证书持有者的身份;CA签名用于保证身份的真实性;公钥和私钥用于通信过程中加解密,从而保证通讯信息的安全性。
5. 对称加密 & 非对称加密
1. 对称加密
对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。
常见的对称加密算法:DES,AES,3DES等等。
2. 非对称加密
非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。
常见的非对称加密算法:RSA,ECC
3. 两者区别
- 对称加密算法相比非对称加密算法来说,加解密的效率要高得多
- 缺陷在于对于秘钥的管理上,以及在非安全信道中通讯时,密钥交换的安全性不能保障。
所以在实际的网络环境中,会将两者混合使用.