通俗解释 TCP 的三次握手、四次挥手

发布于:2025-04-03 ⋅ 阅读:(17) ⋅ 点赞:(0)

TCP(Transmission Control Protocol,传输控制协议)是互联网最核心的通信协议之一,相当于互联网世界的可靠快递系统;

普通如 UDP 协议:

        直接发送,不关心对方是否收到;

TCP 协议:

        三次握手建立连接;

        ACK 确认;

        丢包重传;

        四次挥手断开连接;

核心任务:

        1. 数据准确传输(不丢包、不乱序)

        2. 稳定连接(先建立连接,再传数据)

        3. 可靠通信(收到数据要回复确认)

TCP 三次握手(建立连接)

防止历史错误连接,确保双方都能收发;

把它想象成两个人(A 和 B)打电话的场景,确认对方是否能听见。

1、A 发送一个 SYN 包,表示想建立连接;

        (A打给B:能见听到吗?)

2、B 收到后回复 SYN + ACK 表示我收到了你的请求,我要也确认你能听到;

        (B回答A:我能听到,你能听到我吗?

3、A 再回复 ACK,表示确定你能听到我;

        (A回答B:我也能听到你)

连接建立成功就可以正常传输数据了!

为什么是 3 次?

2次不行:B 不知道 A 是否收到自己的回复,3次刚好确认双方都能收发数据;

TCP 四次挥手(断开连接)

因为双方可能还有数据要传,不能直接挂断;

把它想象成两个人(A 和 B)打完电话的场景,要挂断电话。

1、A 发送FIN 表示自己不再发送数据了;

        (A对B说:我说完了,要挂了)

2、B 先回复 ACK 表示收到你的结束请求;

        (B回答A:好的,我知道了)

3、B 可能还有数据要传,等传完后也发 FIN 表示结束;

        (B对A说:我也说完了,我也要挂了)

4、A 最后回复 ACK 确认 B 可以关闭连接;

        (A回答B:好的 拜拜)

为什么是 4  次?

因为 TCP 是全双工(双方可以同时收发数据),所以必须分别确认关闭,B 可能还有数据要传,不能直接挂断,所以比握手多一步!

TCP工作场景:

       网页浏览(HTTP)、文件传输(FTP)、电子邮件(SMTP)、远程登录(SSH)

不适用场景:

视频直播(UDP更合适)、网络游戏(部分实时操作用UDP)、VoIP语音通话(少量丢包不影响理解)

-------------------------------------------------手动分割线-------------------------------------------------

SYN(Synchronize,同步序列号)

用来发起一个新连接,同步双方的初始序列号;

三次握手中客户端和服务端各发送一次 SYN,携带初始序列号,用于后续数据顺序控制;

ACK(Acknowledgment,确认)

确认已收到对方的数据包;

除了初始 SYN 包外,TCP 通信中几乎每个包都设置 ACK 位,携带确认号,表示期望收到的下一个字节的序号;

FIN(Finish,结束)

用来正常关闭TCP连接;

发送 FIN 表示本方不再发送数据,但还可以接受数据,需要对方确认才能完全关闭连接;

当你在浏览器输入网址时,背后是TCP在默默确保每个网页元素都完整加载


网站公告

今日签到

点亮在社区的每一天
去签到