TCP/IP的一些概念以及HTTPS的连接过程

241 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

TCP/IP

TCP/IP协议族

一系列协议所组成的一个网络分层模型

分层的原因

网络的不稳定性

分层

  • Application Layer 应用层

    HTTP、FTP、DNS

  • Transport Layer 传输层

    TCP、UDP

  • Internet Layer 网络层

    IP

  • Link Layer 数据链路层

    以太网、Wi-Fi

TCP连接

连接

通信双方建立确认[可以通信],不会将对方的消息丢弃,即为[建立连接]。

连接的建立

三次握手

连接的关闭

四次挥手

长连接

存在的原因

因为移动网络并不在Internet中,而是运营商的内网,并不具有真正的公网IP,因此当某个TCP连接在一段时间不通信之后,网关出于网络性能考虑而关闭这条TCP连接和公网的连接通道,导致这个TCP端口不能继续接收外部通信消息,即TCP连接被关闭。

实现方式

心跳。即在一定间隔时间内,使用TCP连接发送超短无意义消息,让网关不能将自己定义为空闲连接,从而防止网关将自己的连接关闭。

HTTPS

定义

  • HTTPS

    HTTP over SSL(又或者HTTP over TLS)的简称,即工作在SSL(或TLS)上的HTTP。说白了就是加密通信的HTTP。

  • SSL

    Secure Socket Layer

  • TLS

    Transport Layer Security

工作原理

在客户端和服务器之间协商出一套对称密钥,每次发送消息之前将内容加密,收到消息之后解密,达到内容的加密传输。

常见问题:为什么不直接使用非对称加密?

非对称加密由于使用了复杂的数学原理,计算相当复杂,如果完全使用非对称加密来加密通信内容,会严重影响网络通信的性能。

HTTPS连接建立的过程

  1. Client Hello

    • 可选的TLS版本

    • 可选的加密套件

      • 可选的对称加密算法
      • 可选的非对称加密算法
      • 可选的hash算法
    • 客户端随机数

  2. Server Hello

    • TLS版本

    • 加密套件

      • 对称加密算法
      • 非对称加密算法
      • hash算法
    • 客户端随机数

    • 服务器随机数

  3. 服务器证书 信任建立

    • 服务器公钥
    • 服务器主机名
    • 服务器地区
    • 服务器证书的签名
    • 证书签发机构的公钥
    • 证书签发机构的名字
    • 证书签发机构的地区
    • 证书签发机构的证书的签名
    • 根证书机构的公钥
    • 根证书机构的名字
    • 根证书机构的地区
  4. Pre-master Secret

    Master secret

    • 客户端加密密钥

    • 服务端加密密钥

    • 客户端 MAC secret

    • 服务端 MAC secret

    HMAC hash-based message authenticate code

  5. 客户端同志:将使用加密通信

  6. 客户端发送:Finished

    1-5的数据,使用客户端加密密钥加密后,发出去

  7. 服务器通知:将使用加密通信

  8. 服务器发送:Finished

\