TCP 연결 중에 RCT 패킷을 받은 경우를 말한다. 주로 언제 받냐면 서버에서 close를 호출해서 연결을 끊으라고 FIN 패킷을 전달했지만 클라이언트에서 write나 read를 호출한 경우에 발생한다. 이외에도 방화벽에서 강제 종료할 때, TCP 버퍼에 있는 데이터를 다 읽지 않았는데도 연결 종료할 때 등 다양한 경우에서 RST 패킷을 보내기도 한다.
일단 서버에서 FIN 패킷을 주었지만 클라이언트에서는 FIN 패킷이 아닌 다른 패킷을 준 경우를 보면 서버에서 기대한건 ack 패킷이었지만 클라이언트가 write을 호출한 경우 PUSH 패킷을 받게 된다. 그러면 서버에서는 연결을 종료하라고 RST 패킷을 보낸다.
RST 패킷을 받았을 때 write을 호출할 경우 java.net.SocketException: Broken pipe라는 예외를 받게 된다. read를 호출했으면 java.net.SocketException: Connection reset라는 예외를 받게 된다.