以太网,FPGA就一定能搞定之TCP客户端模式传输实例—下
0赞以太网,FPGA就一定能搞定之TCP客户端模式传输实例—下
以太网,FPGA就一定能搞定系列之UDP传输实例
本系列博文节选自特权同学的FPGA开发电子书《SF-CY3 FPGA套件开发指南》。
最新设计文档下载地址:http://pan.baidu.com/s/1em79m
6板级调试
运行该实例软件,打开TCP调试工具。如图所示,此时只是运行作为客户端的FPGA软件工程,而作为服务器的Labview调试工具还未启动。客户端在不断的侦听,试图建立连接,但却一直处于“超时”状态。
如图所示,设置Labview调试工具工作于服务器模式,并且启动运行。作为客户端的FPGA产生了“连接中断”,表示连接成功。
输入一串“发送数据”,点击“发送”按钮,客户端打印接收到的数据,同时取反后发送回去。随后一串被取反的“发送数据”出现在TCP调试工具的“接收数据”中。
如图所示,在我们前面进行通信前,就已经打开的“科来网络分析系统”,定位到TCP通信监测栏。我们可以找到192.168.1.101(本实例的FPGA客户端IP地址)和192.168.1.103(本实例的PC服务器IP地址)两个节点对应端口6340的数据包列表。
如图所示,数据包按照时间顺序排列,这里的头3个数据包,即建立连接的握手过程。
如图所示,这里放大3个握手数据包的“概要”信息。第一次握手,我们看到客户端首先发送的序列号为6511;第二次握手,服务器返回序列号1582047777和确认号6512(即客户端的序列号6511加1);第三次握手,客户端再次发送序列号6512和确认号1582047778(第二次握手时,服务器发出的序列号1582047777加1)。这便是前面理论部分我们所说的TCP建立连接的3次握手机制。
此外,大家可以注意一下3此握手数据帧中,TCP协议的标志字节的各个位定义情况。前面理论中提到第一次握手是SYN=1,第二次是SYN=1且ACK=1,第三次握手则是ACK=1,而实际情况也的确如此。
在科来网络分析系统中我们可以看到收发双发的“数据流”,如图所示。
在TCP调试工具上,我们切换到ASCII码显示发送和接收数据,则和前面显示的字符串一致。
最后,我们可以来看看断开连接的握手过程。
3次握手过程,大家可以注意第一次终止连接发起方发出FIN,第二次另一方返回FIN+ACK,第三次终止连接方返回ACK完成断开。