美文网首页
HTTPS,TCP/IP协议族

HTTPS,TCP/IP协议族

作者: 吐必南波丸 | 来源:发表于2019-12-13 16:24 被阅读0次

    HTTPS

    • 全称: HTTP over SSL
      • 工作在 SSL (或 TLS)上的 HTTP,说⽩了就是加密通信的 HTTP
    • SSL: Secure Socket Layer -> TLS Transport Layer Secure
      • 定义: 在HTTP之下增加的一个安全层,用于保障HTTP的加密传输
      • 本质: 在客户端和服务器之间协商出一个对称密钥,每次发送信息之前将内容加密,收到之后解密,达到内容传输
      • 位置:在HTTP下面 ,在TCP层上面,相对更靠近应用层(HTTP)层.
    • 为什么不用非对称加密?
      • 非对称加密由于使⽤用了了复杂了了数学原理理,因此计算相当复杂,如果完全使⽤用⾮非对称加密来加密通信内 容,会严重影响⽹网络通信的性能
    HTTPS链接
    • 客户端请求建立TLS链接(通过TCP)
    • 服务器发回证书
    • 客户端验证服务器证书
    • 客户端信任服务器后,和服务器协商对称密钥
    • 使用对称密钥开始通信
    流程 :
    1. 客户端发送消息(打招呼,我要建立连接): Client Hello
    2. 服务端回消息(回招呼:Sever Hello 并携带第三步
    3. 服务器发出服务器证书,告诉你我的公钥 让你验证我的身份
    4. 发出通过公钥传过去Pre-master-secret
    5. 客户端发送:我要使用加密通信了
    6. 客户端发送:Finished
    7. 服务器发送:我要使用加密通信了
    8. 服务器发送:Finished
    9. 完成(以上流程通过TCP完成的) ,就可以开始使用https通信了


      image.png

    TCP/IP

    概念

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

    为什什么要分层?

    因为⽹网络的不不稳定性

    具体分层
    • Application Layer 应用层: HTTP 、FTP、DNS
    • Transport Layer 传输层:TCP、UDP
    • Internet Layer 网络层 :IP
    • Link Layer 数据链路层:以太网
      image.png
      HTTP::负责下达指令,发出自己想要传输的数据
      TCP::接收到HPPT需要传输的数据,负责拆分模块并且编号,再检测数据是否传输成功,交给IP层
      IP:只负责往目标地址传输,TCP给数据就传,什么都不管
      LINK:为网络提供实时终端支持
    TCP链接

    通信双方建立确认"可以通信",不会将对方的消息丢失,即为"建立链接"

    • TCP链接的建立模型
      第一次握手:主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B,向主机B 请求建立连接,通过这个数据段, 主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我。
      第二次握手:主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了;你要用那个序列号作为起始数据段来回应我
      第三次握手:主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了,这样3次握手就完成了,主机A和主机B 就可以传输数据了
      • 3次握手的特点
        没有应用层的数据 ,SYN这个标志位只有在TCP建立连接时才会被置1 ,握手完成后SYN标志位被置0。


        tcp链接.png
    • TCP的链接关闭模型
      TCP建立连接要进行3次握手,而断开连接要进行4次
    1. 客户端调用 close() 函数后,向服务器发送 FIN 数据包,进入FIN_WAIT_1状态。FIN 是 Finish 的缩写,表示完成任务需要断开连接。

    2. 服务器收到数据包后,检测到设置了 FIN 标志位,知道要断开连接,于是向客户端发送“确认包”,进入CLOSE_WAIT状态。

    注意:服务器收到请求后并不是立即断开连接,而是先向客户端发送“确认包”,告诉它我知道了,我需要准备一下才能断开连接。

    1. 客户端收到“确认包”后进入FIN_WAIT_2状态,等待服务器准备完毕后再次发送数据包。

    2. 等待片刻后,服务器准备完毕,可以断开连接,于是再主动向客户端发送 FIN 包,告诉它我准备好了,断开连接吧。然后进入LAST_ACK状态。

    3. 客户端收到服务器的 FIN 包后,再向服务器发送 ACK 包,告诉它你断开连接吧。然后进入TIME_WAIT状态。

    4. 服务器收到客户端的 ACK 包后,就断开连接,关闭套接字,进入CLOSED状态。


      TCP关闭.png
    • 由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式, 大大提高了数据通信的可靠性,使发送数据端和接收端在数据正式传输前就有了交互, 为数据正式传输打下了可靠的基础

    UDP协议:
    无连接协议,也称透明协议,也位于传输层。
    三、两者区别:

    • TCP提供面向连接的传输,通信前要先建立连接(三次握手机制); UDP提供无连接的传输,通信前不需要建立连接。
    • TCP提供可靠的传输(有序,无差错,不丢失,不重复); UDP提供不可靠的传输。
    • TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组; UDP是面向数据报的传输,没有分组开销。
    • TCP提供拥塞控制和流量控制机制; UDP不提供拥塞控制和流量控制机制。

    长连接

    • 为什么要长连接?
      因为移动⽹网络并不在 Internet 中,而是在运营商的内网,并不具有真正的公网 IP,因此当某个 TCP 连接在⼀一段时间不不通信之后,网关会出于网络性能考虑而关闭这条 TCP 连接和公网的连接通道,导致 这个 TCP 端口不再能收到外部通信消息,即 TCP 连接被动关闭。
    • 长连接的实现方式
      心跳,即在⼀一定间隔时间内,使⽤用 TCP 连接发送超短⽆无意义消息来让⽹网关不不能将⾃自⼰己定义为「空闲连 接」,从⽽而防⽌止⽹网关将⾃自⼰己的连接关闭

    相关文章

      网友评论

          本文标题:HTTPS,TCP/IP协议族

          本文链接:https://www.haomeiwen.com/subject/xwifnctx.html