前言
以太网TCP通信是上位机开发的核心技术,广泛应用于工业自动化领域(如西门子S7通信、三菱MC通信)和物联网场景(MQTT、OPCUA、ModbusTCP)。
在技术面试中,TCP通信相关问题(如三次握手、TCP与Socket关系)的考察频率极高。本文通过10个关键问题,系统梳理TCP通信的核心概念与实现机制,为开发者提供完整的知识图谱。
正文一、OSI参考模型与TCP/IP参考模型当前主流的分层模型有两种:
OSI参考模型:7层架构(应用层→表示层→会话层→传输层→网络层→数据链路层→物理层)
TCP/IP模型:4层架构(应用层→传输层→网络层→网络接口层)
两者均采用分层通信机制,但TCP/IP通过简化层次提升了实现效率,成为互联网通信的事实标准。
二、TCP通信位于网络模型的哪一层?TCP(Transmission Control Protocol)是面向连接的传输层协议,其核心功能包括:
在不可靠的IP网络上提供可靠字节流传输
通过序列号、确认应答、超时重传机制保障数据完整性
无论OSI还是TCP/IP模型,TCP始终定位于传输层
三、TCP/IP协议与Socket的关系TCP/IP是协议栈,Socket是编程接口:
协议栈:定义数据传输规则(如TCP的三次握手)
Socket接口:封装协议操作,提供Connect()
/Send()
/Receive()
等API 定位:Socket位于应用层与传输层之间,不属于任何标准网络分层
四、TCP与UDP的核心区别特性
TCP
UDP
连接机制
面向连接(三次握手)
无连接
服务对象
一对一
一对多/多对多
可靠性
保证数据顺序与完整性
尽最大努力交付
流量控制
支持拥塞控制与滑动窗口
无
五、TCP三次握手过程1、客户端:发送SYN=1, Seq=client_isn
(SYN_SENT状态) 2、服务端:回复SYN=1, ACK=1, Ack=client_isn+1
(SYN_RCVD状态) 3、客户端:发送ACK=1, Ack=server_isn+1
(ESTABLISHED状态) 4、服务端:进入ESTABLISHED状态,通信建立
六、TCP四次挥手过程1、客户端:发送FIN=1
(FIN_WAIT_1状态) 2、服务端:回复ACK=1
(CLOSE_WAIT状态) 3、客户端:进入FIN_WAIT_2状态
4、服务端:发送FIN=1
(LAST_ACK状态) 5、客户端:回复ACK=1
(TIME_WAIT状态,持续2MSL) 6、服务端:立即进入CLOSE状态
七、三次握手必要性分析防止历史连接:通过序列号同步避免旧连接干扰
资源优化:两次握手无法可靠同步双方初始序列号
理论最优:三次握手是建立可靠连接的最小通信次数
八、四次挥手必要性分析1、客户端停止发送:首先发送FIN表示数据发送完毕
2、服务端延迟关闭:需处理完剩余数据后再发送FIN
3、状态同步:ACK与FIN分开发送确保数据完整性
九、Socket编程实现步骤服务器端Socket serverSocket = new Socket(...);serverSocket.Bind(new IPEndPoint(ip, port));serverSocket.Listen();Socket clientSocket = serverSocket.Accept();clientSocket.Send(data);byte[] buffer = new byte[1024];clientSocket.Receive(buffer);
客户端Socket clientSocket = new Socket(...);clientSocket.Connect(new IPEndPoint(ip, port));clientSocket.Send(data);byte[] buffer = new byte[1024];clientSocket.Receive(buffer);
十、ModbusTCP免校验机制ModbusTCP无需应用层校验的原因:
TCP校验和:覆盖整个报文段(含Modbus ADU)
可靠性保障:通过序列号、确认应答、重传机制确保数据完整
效率优化:避免在应用层重复校验
总结1、分层模型:理解OSI与TCP/IP的对应关系是掌握网络通信的基础
2、核心协议:TCP通过三次握手/四次挥手实现可靠连接管理
3、编程接口:Socket抽象了底层协议细节,提供统一编程范式
4、工业应用:ModbusTCP等协议依赖传输层可靠性,简化应用层设计
在实际开发中,开发者应重点关注应用层协议(如S7、MQTT)的规范实现,而将传输可靠性交给TCP协议栈处理。
关键词
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!
作者:上位机付工
出处:mp.weixin.qq.com/s/7dTcsABY8vpoCAmy2L7HQQ
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!
END
方便大家交流、资源共享和共同成长
纯技术交流群,需要加入的小伙伴请扫码,并备注【加群】
推荐阅读
WinForm 跨线程操作 UI 控件封装实践
WPF + Halcon 开发的机器视觉算法平台
WinForm 开发的智能停车场管理系统(岗亭端)
C# 自定义特性实现 DataGridView 全自动列生成
C# 工业开发必备:精选 4 个最强 Modbus 通信库
WPF 工业大数据采集维保平台:工业4.0时代的智能运维中枢
.NET 7.0 + Vue 3 开源跨平台图形化工作流引擎,适配多终端
告别重复造轮子!WPF 通用上位机开发框架,快速搭建工业监控系统
.NET 9 可视化工作流引擎!纯血开源,支持数十种数据库,开箱即用
基于 WinForm 的智能温控系统,运用 Modbus协议实现高效上位机控制
惊艳!这个开源框架用 HTML5/CSS3/JavaScript 轻松开发 WinForm 炫酷界面
觉得有收获?不妨分享让更多人受益
关注「DotNet技术匠」,共同提升技术实力
收藏
点赞
分享
在看