千家信息网

三次握手,四次挥手,原来 TCP 这么有礼貌!

发表于:2026-11-05 作者:千家信息网编辑
千家信息网最后更新 2026年11月05日,我们在和他人谈话时,需要遵循一定的规则,比如确保对方能听懂我的语言。如果跟一个不懂中文的外国人说中文,是不可能很好地进行交流的。计算机之间的通信也是如此,必须遵循一定的规则才能顺利"交流"。TCP 与
千家信息网最后更新 2026年11月05日三次握手,四次挥手,原来 TCP 这么有礼貌!

我们在和他人谈话时,需要遵循一定的规则,比如确保对方能听懂我的语言。如果跟一个不懂中文的外国人说中文,是不可能很好地进行交流的。

计算机之间的通信也是如此,必须遵循一定的规则才能顺利"交流"。

TCP 与 UDP 是什么

在 TCP / IP 协议栈(互联网协议系列)中,TCP(Transmission Control Protocol ,传输控制协议)与 UDP(User Datagram Protocol ,用户数据报协议)是传输层中的两种协议,我们平时刷视频、打游戏、看新闻等都要通过这两种协议进行数据传输。

那么这两种协议有什么区别呢?


TCPUDP
区别

面向连接

可靠

提供流量控制

仅支持一对一通信

非面向连接

不可靠

不提供流量控制

支持一对一、一对多、多对一、多对多通信

优势传输数据安全可靠传输速度快,占用资源少

看完上面的表格,是不是还是有点懵,下面小编用一个比喻来告诉你二者究竟有什么不同。

我们把两个应用之间的通信当作是两个人在通信,在不考虑时间因素的前提下,我们把 TCP 看成是打电话,把 UDP 看成是写信。

两个人打电话时,需要提前拨通对方的电话,这就是需要建立连接;通话过程中,双方能及时确认消息,如果听不清楚可以要求对方重新说一次,这就是安全可靠。

写信只需要根据地址把信发出去,这就是不需要建立连接;发出去的信也不知道对方能否收到,这就是不可靠。

TCP 为了保证传输文件的完整性,会根据接收方的接收速率控制发送方的发送速率,即实行流量控制,所以 TCP 的传输速度低于 UDP。

这两种协议不存在哪个好哪个差,都有着各自适合的应用场景。

比如传输文件时对速度没有要求,但是必须保证文件完整送达,没有数据丢失,这时就应该采用 TCP 协议,而我们在视频聊天时,时效性要求高而准确性要求略低,这时就采用 UDP 协议。

TCP 是面向连接的协议,正如打电话时需要提前拨通电话,结束通话后需要挂断电话,那么 TCP 是如何建立连接与断开连接的呢?

计算机之间的通信也是如此,必须遵循一定的规则才能顺利"交流"。

TCP 的三次握手

在传输数据前,两台主机需要通过三次会话建立连接,这个过程我们称为三次握手。

  • 第一次握手:客户端向服务端请求建立连接,

SYN=1(建立连接),

seq=x(序列号),

客户端进入 SYN_SENT 状态。

  • 第二次握手:服务端向客户端返回确认并请求建立连接,

SYN=1(建立连接),

ACK=1 (已收到),

ack=x+1(确认号为收到的序列号加一),

seq=y(序列号),

服务端进入 SYN_RCVD 状态。

  • 第三次握手:客户端向服务端发送确认报文,

ACK=1 (已收到),

ack=y+1(确认号为收到的序列号加一),

seq=x+1(序列号),

三次握手完成以后,2 个主机之间,就可以传输数据啦~

TCP 的四次挥手

当数据传输完成后,两台主机需要通过四次会话断开连接,这个过程我们称为四次挥手。

  • 第一次挥手:客户端向服务端请求断开连接,

FIN=1(断开连接),

seq=u(序列号),

客户端进入 FIN_WAIT_1 状态。

  • 第二次挥手:服务端向客户端返回确认报文,

ACK=1 (已收到),

ack=u+1(确认号为收到的序列号加一),

seq=v(序列号),

服务端进入 CLOSE_WAIT 状态,客户端进入 FIN_WAIT_2 状态。

  • 第三次挥手:服务端完成数据传输后,向客户端发送断开连接请求,

FIN=1(断开连接),

ACK=1 (已收到),

ack=u+1(确认号为收到的序列号加一),

seq=w(序列号),

服务端进入 LAST_ACK 状态。

  • 第四次挥手:客户端向服务端返回确认报文,

ACK=1 (已收到),

ack=w+1(确认号为收到的序列号加一),

seq=u+1(序列号),

客户端进入 TIME_WAIT 状态,服务端进入 CLOSED 状态。

客户端处于 TIME_WAIT 状态时,TCP 连接还未释放掉,等待 2 个 MSL(Maximum Segment Lifetime,最大段生命周期)的时长后,客户端进入 CLOSE 状态。

看到这里,相信大家还有些疑问,下面就由小编来一一解答。

为什么是三次握手,两次握手或者四次握手不可以吗?

如果是两次握手,就可能出现下面这种情况。

客户端发送建立连接请求,由于网络拥塞,迟迟没有得到回应。客户端再次发送连接请求,服务端回应,连接建立。

一段时间后,客户端第一次发送的连接请求到达服务端,服务端以为客户端重新请求建立连接(其实并没有),此时服务端会返回响应报文并一直处于待连接状态,这就造成了资源浪费,如下图所示。

那为什么不是四次握手呢?

四次握手也能达到三次握手的效果,也就是将原本的第二次握手拆分成两次,一次发送确认报文,一次分开发送请求建立连接报文,但这同样造成了资源浪费,如下图所示。所以最终确定通过三次握手建立连接。

为什么是四次挥手,三次挥手不可以吗?

不可以。当客户端发送断开连接请求后停止发送数据(客户端还能接收数据),有可能此时服务端还有数据需要发给客户端,所以它先回一个确认报文,等发送完所有数据,再发送断开连接的报文,通知客户端可以断开连接了。

四次挥手结束后,为什么客户端没有立刻关闭呢?

客户端没有立刻关闭,而是进入 TIME_WAIT 状态,等待 2 个 MSL 的时长后,客户端才进入 CLOSE 状态,这是为了确保第四次挥手的确认消息到达服务端。

如果服务端在规定时间内未收到最后的确认消息,会重新进行第三次挥手请求断开连接,客户端重新发送确认消息,如下图所示。

MSL 是报文的最长生存时间,2 个 MSL 是在网络中来回两个报文所需要的最长时间,如果超过这个时间,客户端没有重新收到断开连接的请求,说明四次挥手顺利完成,可以断开连接了。

总结

今天的内容就到这里了,和小编一起复习一下今天的内容吧:

TCP 和 UDP 是传输层中的两种协议,TCP 安全可靠但传输速度慢,UDP 传速度快但可能丢失数据,这两种协议各有优势,适合不同的应用场景。

两台主机建立连接和断开连接的过程被称为"三次握手"和"四次挥手"。

了解了为什么一定是三次握手和四次挥手。

相信通过今天的学习,以后被问到 TCP 和 UDP 的相关问题,大家都能侃侃而谈了。

本文来自微信公众号:中兴文档 (ID:ztedoc)

客户 客户端 服务 传输 数据 状态 序列 序列号 报文 时间 通信 速度 加一 控制 两个 主机 之间 对方 就是 消息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技怎么样 科技互联网项目 为想互联网科技 互联网科技排名 上海致骋互联网科技 互联网科技logo设计 广州善班互联网科技 顺网科技2021年互联网排名 太原新华互联网科技学校怎么样 玖二柒互联网科技公司待遇 重庆威客帮互联网科技 互联网科技创新服务 互联网科技与大数据专业 玉溪新华互联网科技好不好 城市宝互联网科技有限公司 福州德业互联网科技 江苏互联网智能科技产品出厂价 科技互联网专业工作会议发言稿 保山浩联互联网科技有限公司 长沙易易互联网科技有限公司 南京欣网互联网络科技 南京欣网互联网络科技有限公司 互联网科技会 互联网科技排名 南山科技园互联网公司有哪些 青岛科技大学互联网大赛研究生 米聚互联网科技南京有限公司排面 互联网领先科技成果宣传视频 互联网科技企业文化 山东亿川互联网科技有限责任公司
0