初识Modbus
- Modbus TCP协议
- 前置知识
- TCP
- 三次握手:
- 数据传输确认:
- 四次挥手
Modbus TCP协议
Modbus协议是一种应用层的报文传输协议
分三种传输方式
- RTU
- ASCII
- TCP
前置知识
TCP协议,UDP协议都是工作在传输层,用与程序之前的数据传输
TCP协议:全双工,双向的,可以类比人打电话,可以实时的确认对方是否收到,优点:数据传输稳定可靠,适用场景:对网络通信质量要求较高的场景,例如:传输文件、发送邮件、浏览网页等;
UDP协议:基于非连接的通信协议,数据发送时 只是数据包简单进行简单的封装,再通过网卡发送给设备, 缺点:数据包中间没有状态上的联系,稳定性较弱,容一产生丢包 优点:传输速度快,性能损耗少,对CPU的资源占用少,适用场景:对实时性要求较高,多少量丢包并没有太大要求的场景,例如:语音通话,域名查询,视频直播等;
UDP还有一个十分重要的场景就是隧道网络,例如:VPN、VXLAN
TCP
三次握手:
用于确认客户端与服务端的成功连接
由客户端发送SYN(同步序列编号)报文到服务器,表示客户端请求建立连接,然后客户端进入SYN-SEND状态,此为第一次握手
服务器接收到SYN报文后,会回复一个SYN+ACK(确认号)报文给客户端,表示同意建立连接。服务器处进入SYN-RCVD状态,准备接受连接请求,此为第二次握手
客户端再发送一个ACK报文给服务器,确认已收到服务器的响应。此时客户端进入ESTABLISHED状态,服务器在正确的收到ack信号后进入ESTABLISHED状态。整个过程完成,此为第三次握手
数据传输确认:
数据多时 数据采用分段发送 报文段中含有起始数据号和长度,客户端将序列号和数据长度相加作为应答信号,同时服务端也获得了下端数据的起始位置
四次挥手
用于关闭客户端与服务端的连接(客户端和服务端都可以发送关闭请求)
首先客户端发送一个FIN包,表示要关闭连接,自己(客户端)则进入等待状态1,为第一次挥手;
然后服务端收到FIN包后,发送一个ACK(应答信号)给客户端,自己(服务端)则进入关闭等待状态,客户端收到应答信号后则进入等待状态2,此为第二次挥手(注:此时客户端还可以接受消息,服务端还可以发送消息)
在第二次握手后服务端还可以发送未发送完的数据,发送完后服务端发送一个FIN数据包,进入最后确认状态,此为第三次挥手
客户端收到后发送一个ACK(应答信号)后 进入超时等待状态(防止服务端没收到ack信号)经过超时时间后关闭连接,此为第四次挥手
服务端在收到ack信号后直接进入关闭状态(若在一段时间后服务端没收到客户端发来的ack应答信号则重新发送FIN数据包)
敬请期待,后续补充…