通俗易懂说通信系列之八个步骤带你吃透TCP/IP基础

B站影视 欧美电影 2025-05-23 17:00 2

摘要:如下图所示:两台CPU做TCP/IP通信,我们使用OUC的方式,其中一台是服务器(passive),另外一台是客户端(active)。

本期我们将用八个步骤详细来说一说TCP/IP基础。

如下图所示:两台CPU做TCP/IP通信,我们使用OUC的方式,其中一台是服务器(passive),另外一台是客户端(active)。

(1)使用TCON用来建立连接,

(2)使用TSEND和TRCV用来发送和接收数据,

(3)使用TDISCON用来断开连接。

FB65“TCON”功能:

1、在CPU中注册或定义一个通讯服务,即通信资源的建立

2、注册包括服务器“Passive”还是客户端“Active”,以及相关的TSAP,PORT,IP地址

3、对于UDP,仅使用注册功能

4、对于TCP和ISO on TCP,除了注册,还具有建立连接的功能

FB66“TDISCON”功能:

1、注销CPU中已经注册的通讯服务,即通讯资源的释放

2、对于UDP,仅应用注销功能

3、对于TCP和ISO on TCP,除了注销,还应用连接断开和连接复位的功能

TCP即传输控制协议:

(1)遵循RFC793,是开放式协议

(2)可靠的,面向连接的,字节流的点对点通讯协议

(3)IP即网际协议,负责将消息从一个主机传送到另一个主机。在传送的过程中可能被分割成一个个小包

(4)在接收端收到后再根据顺序号将其正确地还原,保证了数据包在传送中准确无误

(5)数据包正确的到达后,发送方得到这些分段的一个应答

(6)错误,重复以及丢失会重新发送数据

(7)通过“滑动窗口”进行流量控制

(8)通过端口号可实现多路复用

TCP/IP协议参考模型是早于左侧的ISO、OSI七层参考模型(如下图所示),与七层参考模型不同的是TCP/IP协议堆栈只有四层,从上到下分别是:应用层、传输层、互联网层以及网络接口层。

TCP报文称为Segment,我们称为分段。IP的报文称为Packet,也就是我们常说的包。而以太网的报文我们称为Frame,也就是帧。

最大的Packet长度是1500字节,IP Header的长度是20个字节,那么Segment分段的最大长度是1480个字节。而TCP Header通常是20个字节,那么分段中最大数据长度是1460个字节,也就是1500个字节减去20个字节的IP Header长度和20个字节的TCP Header长度,也就是1460个字节数据长度。

连接建立就是大家经常说TCP的3次握手,我们来看下图这三个条目:1507、1509、1510,可以看到192.168.0.1作为客户端向192.168.0.2发送连接请求,标志为:【SYN】,服务器会给客户端发送同步应答,然后客户端会再一次给服务器发送应答,这就是我们常说的3次握手,之后我们就可以建立数据交换了。传统上TCP的连接、断开采用了4次挥手的方式,与3次握手的方式类似,使用的标志位是【FIN】,也就是FINISH。而PLC不一样,如果我们采用4次挥手的方式,在FINISH发出后,通讯是可以正常进行的。所以我们在编写TDISCON真正的目的是释放资源,所以使用标志位【RST】来复位通信资源。无论是客户端侧断开连接还是服务器侧断开连接,直接会发送【RST,ACK】的报文通知对方释放通信资源。

TCP头部的20个字节通常由以下组成,如源端口号(Source Port)、目的端口号(Destination Port),大家在组态通信时要组态修改的,TCP数据传输是需要这些组态信息的;接下来是顺序号和应答号,是用来保证TCP的可靠和安全的传输的;还有一些标志位,在前面介绍建立连接和断开连接时讲解了ACK、RST、SYN和FIN,Window表示的是滑动窗口的大小和用于调节通信速度,例如:接收方接收数据后会向发送方发送自己滑动窗口的大小,用来通知发送方还能发送多少数据。

IP头部通常也是20个字节,下图可以看到版本号、头部长度、DS Field、Total Length,这里的Total Length有16个位,说明IP的报文最大的长度是64K,最后是源IP地址和目的IP地址。

七、以太网报文帧

我们来看一下典型的以太网帧结构,如下图所示:包括8个字节的前导词、6个字节目的MAC地址、6个字节的源MAC地址、2个字节的长度或类型、46-1500个字节的用户数据以及4个字节的CRC校验。

其中长度表示的是802.3的报文,而类型表示的是以太网II型的报文,MTU表示最大传输单元,我们会在后续的课程详细介绍。最大传输单元属于物理特性,它决定帧结构的数据最大长度。

下面是一个以太网II型的帧结构,我们可以看到目的MAC地址、源MAC地址以及类型,这里是IP报文。

关于本期系列课程Wireshark抓包方法,大家都知道使用交换机采用端口镜像的方式可以抓包,但我们没有采用这种方式,因为端口镜像有几个问题:第一个问题是带宽的问题,因为捕捉端口1的数据,这个数据是有发送和接收两个方向,那么端口3当带宽超过100M时镜像数据就会丢失;第二个问题就是镜像的错误问题,例如:这里可以看到3次握手,原本的顺序在前面也给大家介绍,应该是SYN、接着是SYN和应答,最后是应答,而这里却发生了顺序错误,所以我们使用了镜像的方式去进行报文捕捉的时候要多做几次,最后进行确认。

我们本次课程采用的报文捕捉都是Bus Analyzer XM400,本身集成了2个TAP,也就是4个接口,对于网络,尤其是Profinet网络进行诊断和分析,结合了Bany Scope和Wireshark对报文进行捕捉和分析,其优势是普通的镜像方式不可比拟的。例如:我们无需更改网卡设置就可以看见报文中的围栏标签,以及可以捕捉IRT发送和接收的数据。

来源:西门子工业支持中心一点号

相关推荐