抖音粉丝群1
『7x24小时有问必答』

作者 | 工控电小工

---

前两天有个学生问我:老师,TCP为什么要握手三次、挥手四次?我听完愣了一下——这东西我们天天用,但还真没仔细想过背后的原理。
今天咱们就来聊清楚这个事。
1.png

---

先说个故事

想象你是个老派电报员,要跟远方的同事约一次加密通话。
第一次握手:你发报过去:"呼叫呼叫,你好,我在,你能收到吗?"
第二次握手:对方回电:"收到收到,我也准备好了,你听得到我吗?"
第三次握手:你再发一条:"听到了听到了,那我们开始吧!"
三次一来一回,双方确认了:

  - 我能发,你能收

  - 你能发,我能收

  - 咱俩可以开始聊了
这就是TCP三次握手的本质——确认双方都能正常通信
2.png

---

为什么是三次?不是两次或四次?

你可能会问:既然第二次握手对方已经说"我准备好了",那我回复"收到"不就行了?为什么还要再发一次?
因为第二次握手只能证明"你能收到我的消息",但不能证明"我能收到你的消息"
举个例子:
我发"你好"给你(第一次)
你回"你好,我也准备好了"(第二次)
如果只有两次,你不知道我到底有没有收到你的回复
只有我第三次告诉你"我收到你的回复了",双方才都确认了"双向通信没问题"
3.png
那为什么不是四次?三次已经够用,多一次反而浪费资源。TCP是个抠门的协议,能省一步绝不多走一步。

---

四次挥手又是怎么回事?

通话结束,你得挂电话吧。但TCP的四次挥手比握手复杂一点。
第一次挥手:你说"我说完了,你还有要补充的吗?"
第二次:对方回"收到了,我这边也没问题了,等我处理完手头的事..."
第三次:对方处理完,说"我也说完了,准备关闭"
第四次:你说"好的,再见",对方收到后彻底关闭连接
为什么要有"等我想想"这个间隙?
因为TCP是全双工协议,就像对讲机——你说完了,但对方可能还在说话或者还有数据没发完。所以第二次挥手中间的那个"等待",是为了确保所有数据都传完了再关闭。

---

在工控里的实际意义

说了这么多,咱们工控人最关心的还是:这东西跟我们现场有什么关系?
关系大了。
你用PLC和上位机通信,用工业机器人调试,用触摸屏连西门子S7系列——只要走以太网,用的都是TCP/IP协议栈。
如果三次握手没成功,设备就连不上;如果四次挥手没处理好,可能出现连接卡死、资源泄露;如果传输过程中丢包了,TCP会重传,但工控实时性要求高的场景下,你可能根本等不起。
懂原理,不是为了考试,是为了排查现场问题。
有一次现场调试,触摸屏一直连不上PLC,我第一反应就是去抓包——结果发现是握手第三次ACK丢了,PLC没收到,导致连接建立失败。换了根网线搞定。
4.png

---

最后

TCP这个协议,设计思想很朴素:先确保可靠,再传输数据。三次握手是"建立信任",四次挥手是"有序告别"。
看似繁琐,但每一步都有它的理由。
搞工控的人,动手能力都不差。但有时候多懂一点原理,排查问题能快上一大截。

---

下期预告:有同学问RS485和TCP通信有什么区别?为什么工业现场更倾向用RS485?下期咱们接着聊。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码