[W7500x] RST, ACK 전송 후 복구 불능

TCP 서버로 사용 중입니다.

83이 클라이언트, 111이 서버입니다.

서버는 항상 수신해야 하므로 CLOSE_WAIT에서 disconnect 함수를 실행하고 SOCK_CLOSED 이므로 소켓 초기화와 함께 SOCK_LISTEN 상태로 진행합니다.

image

83 클라이언트( QMODBUS http://qmodbus.sourceforge.net/ )에서 TCP 세션 연결을 끊자마자 다시 연결하는 것을 반복하면 위 그림과 같이 RST가 발생한 이후 15초 정도 정상 복구가 안되고 있습니다.

polling 주기는 2~3ms 입니다.

또, TCP Retransmission이 거의 항상 발생하고 있는데 RTR 레지스터는 기본 상태입니다.

안녕하세요

disconnect 함수안에서 disconnect 명령을 내린후에 closed 상태가 되기까지 시간이 소요되는것으로 파악됩니다.
바로 socket을 close하고 싶으신경우, disconnect 명령후에 close 명령을 내려주시면 됩니다.

socket.c 의 304다음줄에 close(sn); 을 적어주시면 됩니다.
image