• 谈谈你对 TCP 三次握手和四次挥手的理解


    三次握手

    客户端发送syn(包含req,保证输入的安全性,以及验证包的顺讯)包到服务器,等待服务器接受.

    • 支持的协议版本
    • 一个客户端生成的随机数,用于生成'对话秘钥'
    • 支持的加密方法,比如RSA加密方法
    • 支持的压缩方法

    服务器接受数据包并确认客户的syn,并发送syn+ack(确认字符)的包给客户端.

    • 确认使用的加密通信的协议版本,如果浏览器与服务器支持的版本不一致,服务器关闭加密通信
    • 一个服务器生成的随机数,用于生成'对话秘钥'
    • 确认使用的加密方法,比如RSA加密方法
    • 服务器证书

    客户端确认接受服务器接受的syn+ack的包,并向服务器发送确认包ack

    • 一个随机数。该随机数用服务器公钥加密,防止被窃听
    • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送
    • 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验

    HTTPS 握手过程中,客户端如何验证证书的合法性?

    • 校验证书的颁发机构是否受客户端信任
    • 通过CRL和OCSP的方式验证证书时候被吊销
    • 对比系统时间,看证书是否到期
    • 通过校验对方是否存在证书的私钥,判断证书的网站域名是否与证书颁发的域名一致

    四次挥手

    • 客户端发送fin信号,告诉服务器需要断开连接,等待服务器响应.
    • 服务器接收到fin信号并确认,回应等待数据发送完成请求,发送ack包(失败可以重新发送).
    • 服务器数据传输完毕,发送给客户端确认信息,等待客户端响应,如响应,则服务端直接关闭.
    • 客户端收到响应,并确认信息,然后再次发送ack包给服务端,并进入time_wait状态,等待2MSL(最大报文生存时间)后,没有响应,则直接关闭.
  • 相关阅读:
    MySQL
    Python练习-基于socket的FTPServer
    python练习-Socket实现远程cmd命令
    python概念-Socket到底有多骚
    Python练习-天已经亮了计算器也终于完成了
    python模块-logging的智商上限
    python正则表达式-re模块的爱恨情仇
    Python练习-os模块练习-还算是那么回事儿
    Python练习-time模块
    Python练习-跨目录调用模块
  • 原文地址:https://www.cnblogs.com/liuabo/p/13608155.html
Copyright © 2020-2023  润新知