TCP 연결의 한쪽을 닫고 다른 쪽은 열어 두는 방법은 무엇입니까? (FIN이나 RST가 전송되지 않음)

TCP 연결의 한쪽을 닫고 다른 쪽은 열어 두는 방법은 무엇입니까? (FIN이나 RST가 전송되지 않음)

Solaris 클라이언트가 TCP 소켓을 통해 Linux 서버에 연결되어 있지만 FIN 또는 RST 패킷을 보내지 않고 연결된 클라이언트의 연결이 갑자기 끊어지는 시나리오를 재현하려고 합니다. 이는 클라이언트와 서버 사이의 네트워크 케이블을 당기는 결과와 매우 유사합니다.

네트워크 케이블을 당기지 않고도 이 상황을 재현할 수 있는 명령이나 일련의 명령이 Solaris에 있습니까?

답변1

해당 특정 연결과 일치하는 ipfilter 삭제 규칙을 설정한 다음 사용해야 할 수도 있습니다.tcpdrop또는 Solaris에 소켓을 지우라고 지시하는 것과 유사한 것입니다.

ipfilter 삭제 규칙을 먼저 설정해야 합니다. 그렇지 않으면 첫 번째 수신 패킷이 도착할 tcpdrop때 커널이 RST 패킷에 계속 응답할 수 있습니다 . tcpdropSolaris 측에서 자체적으로 연결 시간 초과를 허용할 수 있는 경우 이는 꼭 필요한 것은 아닙니다.

문서화되지 않은 커널 인터페이스를 사용 하므로 tcpdrop설계된 버전보다 최신 버전의 Solaris에서 작동이 보장되지 않습니다.

유지하려는 동일한 호스트에 다른 트래픽이 없는 경우, 또 다른 가능성은 서버 호스트에 블랙홀 경로를 추가하는 것입니다. 그러나 단일 TCP 연결을 삭제하는 것과 비교하면 이는 동일한 호스트에 대한 다른 모든 연결을 종료하여 부수적인 손상을 초래하는 다소 무뚝뚝한 도구입니다.

또한보십시오:https://www.oracle.com/technetwork/systems/networking/tcpdrop-jsp-135583.html

관련 정보