问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

三次握手、七次握手、四次挥手

发布网友 发布时间:2023-03-29 03:20

我来回答

1个回答

热心网友 时间:2023-10-30 23:43

TCP/IP 传输协议的 TCP 协议是面向连接的,也就是传输数据之前,必须建立可靠的连接。建立连接的过程中,需交换信息(如选取哪种协议、协议版本等),这个过程称为 握手 handshaking 。

握手过程中会协商后续通信使用的参数,如传输速率、编码方式、校验,以及其他协议选取、硬件支持的功能等。握手是两个实体之间的通信,但在 TCP/IP 中握手常指 TCP 的三次握手。

TCP 中的数据传输、连接建立与终止都由特定控制参数管理,控制参数有以下这些:

建立 TCP 连接需要三次握手:

TCP 连接的双方通过三次握手确定 TCP 连接的初始序列号、窗口大小以及最大数据段,这样通信双方就能利用连接中的初始序列号保证双方数据段的不重不漏,通过窗口大小控制流量,并使用最大数据段避免 IP 协议对数据包分片。

换个角度看为什么需要三次握手?客户端和服务端通信前要进行连接,三次握手就是为了确保自己和对方的收发能力是正常的。

三次握手后,客户端、服务端才确认了自己的接收、发送能力均是正常的。

HTTP 协议中的数据是明文传输的,任何中间人(man-in-the-middle)都可以读取传输的数据,因此 HTTP 是一种不安全的协议。

HTTPS 是 HyperText Transfer Protocol Secure 的缩写。但 HTTPS 协议自身不能加密数据,它需要借助 SSL 或 TLS 协议层进行加密。

HTTP 协议和 TLS 协议都位于 application layer。TCP 三次握手建立连接后,使用 TLS 握手建立安全连接,后续使用协商的加密算法先对数据进行加密,再通过 HTTP 传输。

数据加密后,中间人即使获得了数据,也无法读取数据内容,进而避免了中间人攻击(man-in-the-middle-attack)。

HTTP 协议和 TLS 协议一起使用时,称为 HTTPS 协议。App 想要使用 TLS 加密通信,只需网址使用 https:// 前缀即可。

要了解 TLS 工作原理,需先了解加密的工作原理,以及各种加密算法。加密就是将数据从一种格式编码为另一种格式,编码时使用一些数学算法、秘密参数。使用相同算法、参数,可以解密数据,这个过程中的参数称为密钥(key)。

非对称加密算法有两个 key:

最流行的非对称加密算法是 RSA 加密算法,广泛用于密钥交换和数字签名验证。但现在正逐步迁移至更安全高效的 Diffie-Hellman (缩写为 D-H)算法。

非对称加密算法通常速度慢,更耗费 CPU,且 key、数据越长,加密、解密耗费时间也越长。因此,数据量大时不要使用非对称加密,而应使用对称加密(symmetric key cryptography),对称加密速度更快、性能更高。非对称加密用于传输对称加密密钥。

对称加密算法也称为共享密钥加密(shared key),它使用相同的 key 加密、解密。

对称加密算法主要用于受信任两者之间建立加密通道。因为第三方无法获取对称密钥,因此只有建立通道的双方才可以解密数据。

最流行的对称加密算法是 AES(Advanced Encryption Standard 的缩写,即高级加密标准),

SSL 协议由 Netscape 团队设计,于1995年发布 SSL 2.0版本,之后发布了 SSL 3.0版本,IETF 已于2015年不推荐使用 SSL 3.0。

目前,TLS 协议已经替代了 SSL 协议,SSL 协议已不再使用。

TLS 是旨在提供安全通信的加密协议,使用 TLS 可以加密与服务器的所有通信。当前使用最广的是 TLS 1.2、TLS 1.3。

TLS 1.3 发布于2018年,是对 TLS 1.2 的全面修订,在性能和安全性方面都有很大提升,并且减少了建立安全连接所需的握手次数。

TLS 1.3 只支持 Diffie-Hellman 非对称加密算法,移除了 RSA 算法。

使用 HTTPS 发送 HTTP 请求时,首先使用三次握手建立可靠的 TCP 连接,之后就通过 TLS 四次握手交换双方的密钥。

下面介绍 TLS 1.2 连接建立过程:

TLS 握手的关键在于利用通信双方生成的随机字符串和服务端的公钥生成一个双方经过协商后的密钥,通信双方后续使用这个对称密钥加密数据,防止中间人监听和攻击,保障通信安全。

在 TLS 1.2 中,需要 2-RTT(Round-Trip Time,往返延迟)才能建立 TLS 连接。在 TLS 1.3 中,客户端不仅发送 ClientHello、支持的协议、加密算法,还尝试猜测服务器将选择哪种密钥协商算法,并为此发送共享密钥。这样服务端选取加密算法后,因为已经有了 client key,可以立即生成 key,进而减少一次 RTT。

建立连接时需要发送三个 packet,但终止连接时需要四个 packet,也称为四次挥手。因为 TCP 连接是全双工的,每个方向都必须独立终止。

终止 TCP 连接的四次挥手:

在第二次挥手时,如果服务端也想终止连接,可以为 FIN 设置不同于客户端 FIN 的序列号。客户端收到 FIN 后,发送 ACK,它的 acknowledgement number 为 FIN sequence number 加一。这一过程结束后,服务端与客户端的连接也终止了,这样的话整个过程进行了三次挥手。

客户端想要通过 HTTP 请求访问服务端时,需要经过三次握手;通过 HTTPS 访问服务端时,需要额外增加四次握手。

总结一下 HTTP 建立连接、终止连接:

需要注意的是,本文所说的三次握手、七次握手、四次挥手都是基于特定版本的协议,不同版本的协议所需握手次数可能不同。HTTP/3 就是一个例子,它使用基于 UDP 的 QUIC 协议进行握手,将 TCP 和 TLS 握手过程结合起来,握手次数从七次减少到了三次。

参考资料:

欢迎更多指正: https://github.com/pro648/tips

本文地址: https://github.com/pro648/tips/blob/master/sources/三次握手、七次握手、四次挥手.md
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
墨兰烂根是怎么回事 墨兰烂根后如何养护 谢绝推销参观拍照摄影看房预约 看房子为什么不让拍照 执业药师各科考试时间分配 执业药师考试倒计时100天,怎样备考最有效 中药执业药师怎么备考? 手机拒绝所有来电了怎么设置回来 美国狼人在伦敦演职员表 美国狼人在伦敦幕后制作 美国狼人在伦敦制作发行 什么跟什么握手,会产生什么 股权转让托付书的有效期多久 海信电视机最值钱的是屏幕吗 锦绣未央全部演员 退休教师工资上调最新政策2019:每人每年将补发2万工资? 水浒传中的人物及其主要事迹 阮小二的事迹是什么? 八字说月破是什么意思 光大手机银行光银现金理财怎么没赎本金就有分红到账 圆号的解释 买二手车后车险未过户出事该如何处理 二手车没过户被交警抓了怎么办,怎么处理啊? 二手车强险不过户交警查不查 窝汗的意思 2022年职工医保个人缴费二档下岗职工交多少 职工医保一档升二档一般多少钱 深圳二档医保缴费标准 国电电力股票现在怎么样?国电电力主力大幅流入股价为何不涨?国电电力怎么分红怎么算? 信用社app上可以帮别人改密码吗 步步高手机失水,一直重启 "吾不能变心以从俗兮,固将愁苦而终穷"的出处,意义? 什么是害喜,是不是跟怀孕有关系 整顿和总结是不是一个意思呀 皇冠三间鱼寿命有多久 三间鱼会咬慈鲷尾巴吗 伊索寓言中马和驴的寓意,十一个字总结 伊索寓言《蚂蚁和蝉、两只口袋、驴和狼、乌龟和老鹰、马和驴、狐狸和狗、衔肉的狗》的寓意和主要内容 寓言《马和驴》《衔肉的狗》《龟兔赛跑》《驴和狼》《蚂蚁和蝉》的寓意 一道数学题的答案不懂,解释一下 周公在召唤我的上一句是什么? 黄的银杏叶有没有用,药用价值? 我是说自然掉下的银杏叶,枯败的叶子的药用价值 孙悟空大闹天宫主要内容有哪些? 江南百景图铺路技巧都有什么 铺路技巧分享 《长恨歌》原文 最后一句 是无尽期, 还是无绝期? 凌波是什么鱼,在哪里有? 有关戏剧的知识有什么有关戏剧的知识有哪些 胶柱鼓瑟是什么意思?成语出处及详细词语解释 听日再见是什么意思 听日再见意思是什么 从零开始学粤语4.7 词汇