← 질문 목록
#310깊이 0

TCP 연결에서 RST 패킷은 어떤 상황에 전송되는가?

네트워크깊이프로토콜

비정상적인 연결 요청을 받거나 연결을 즉시 끊어야 할 때다. 정상적인 FIN 교환 과정과 달리 대기 시간 없이 연결을 즉시 파기한다.

상황발생 조건상대방의 동작
포트 미개방닫힌 포트로 SYN 패킷 수신연결 거절을 확인하고 중단한다
세션 불일치이미 닫힌 연결로 데이터 수신세션 오류를 인지하고 소켓을 닫는다
강제 종료SO_LINGER를 0으로 설정 후 닫기수신 버퍼를 비우고 즉시 종료한다

대표적으로 포트가 열려 있지 않은 서버에 SYN 요청이 들어오면 서버는 RST를 보낸다. 해당 포트를 사용할 수 없음을 상대에게 즉시 알리기 위해서다.

이미 끊어진 연결로 데이터나 ACK 패킷이 들어올 때도 RST를 전송한다. 양쪽의 세션 상태가 맞지 않아 연결을 더 유지할 수 없기 때문이다.

SO_LINGER를 0으로 두고 닫는 것처럼 끊어 내는 방식으로 닫을 때 나간다. 프로세스가 강제로 죽어도 커널이 정상 종료 절차를 밟으면 FIN이 나간다. 이 때 상대방은 버퍼의 미처리 데이터를 버리고 연결을 해제한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

TCP 연결에서 RST 패킷은 어떤 상황에 전송되는가?