我们知道,CANoe软件中配置以太网通道后,添加的仿真节点可以作为一个主机或者一个应用来实现以太网通信。但不管是作为主机还是应用,仿真节点都需要配置TCP/IP协议栈。
有了TCP/IP协议栈,设置了网卡信息后(IP地址、MAC地址等),仿真节点就可以通过编写CAPL代码的方式发送和接收报文。
在使用TCP协议发送数据时,一般有No Delay和Delay(Nagle算法)两种。对于采用Nagle算法的方式,如果发送的数据(小段)不被接收方响应(ACK)确认,会怎么样?
只要稍微了解TCP协议的人肯定知道,会按照重传定时器的timeout重传。如果此时发送队列恰好有数据要发送呢?
上图中,发送方发送TCP数据段12345,接收方一直不回复。于是发送方重传:
发现TCP重传的tcp报文中,数据是12345abcdeABCDE,其中12345是重传队列的,而abcdeABCDE是发送队列里的。
TCP重传时重传的应该是发送且未被ACK确认的数据