TCP connection 상태에서 언제 RST 패킷을 받아야 세션이 끊기나요?

trymp의 이미지

client <--> web server 간에 TCP connection 을 맺을 때,

client 와 서버에서 중간에 있는 다름 PC 에서 서버로 RST 패킷을 보내서

끊으려고 합니다.

근데 어떤 서버는 끊기고 어떤서버는 안 끊기고 그러더군요

그래서 TCP 에서는 syn_rev, syn_sent, estiblish 같은 것들이 있잖아요.

syn_rcv 상태에서 RST 패킷을 받으면 끊겨야 정상인가요?

아시는 분 도움 주시면 감사하겠습니다.

rocksea의 이미지

FIN이 세션을 정상적으로 종료하는 flag이고
RST는 세션을 종료하는 의미라고 알고계시는 분들이 많지만 엄밀히 따지면 현재 이 Session에 의해 할당된 메모리 자원(buffer)를 Null 상태로 만들어 시스템에 반납하라는 내용의 flag 입니다.

아무튼 둘다 통신을 종료하는건 일맥상통하다고 볼수 있겠네요.

그럼 수고!

Knowleage Creator.

gilgil의 이미지

>syn_rcv 상태에서 RST 패킷을 받으면 끊겨야 정상인가요?

RST packet의 sequence number가 맞지 않으면 TCP stack에서 무시합니다.