FIN close

FIN은 한쪽 송신 스트림의 끝을 알린다

한쪽이 FIN을 보낸 뒤에도 상대방은 남은 데이터를 보낼 수 있으므로, 정상 종료는 양방향을 따로 닫는 흐름으로 이해해야 한다.

active close half-close TIME_WAIT
먼저 닫는 쪽
FINseq=uFIN-WAIT-1, 더 보낼 데이터 없음
FIN-WAIT-2내 FIN은 ACK 됐고 상대 FIN을 기다림
ACKack=v+1마지막 ACK 후 TIME-WAIT
나중에 닫는 쪽
ACKack=u+1CLOSE-WAIT, 애플리케이션 close 대기
남은 데이터 가능half-close 동안 한 방향 스트림은 아직 열림
FINseq=vLAST-ACK에서 최종 ACK 대기
FIN

순서 번호 1 소비

SYN처럼 FIN도 ACK 계산에서 +1된다.

예외

늘 네 패킷은 아님

동시 종료나 FIN+ACK 결합 등 실제 패턴은 더 다양할 수 있다.