TCP 연결 해제 과정(4-way 핸드셰이크)
TCP 연결을 설정할 땐 3-way 핸드셰이크가 사용되지만, 연결을 해제할 때는 양방향에서 안전하게 데이터 전송이 종료되었음을 확인하기 위해 4-way 핸드셰이크가 사용된다.
1. FIN 전송(송신자 → 수신자)
- 데이터 전송이 끝난 송신자가 더 이상 데이터를 전송할 필요가 없으면, FIN 플래그가 설정된 패킷을 수신자에게 보낸다.
- 이 FIN 패킷은 "더 이상 데이터를 보내지 않겠다"는 신호이다.
2. ACK 전송(수신자 → 송신자)
- 수신자는 FIN 패킷을 받으면 ACK 패킷을 송신자에게 보낸다
- 이 ACK 패킷은 "FIN 패킷을 잘 받았다"는 응답이다.
- 이 시점에서 수신자는 송신자가 더 이상 데이터를 보내지 않는다는 것을 알게된다.
- 그러나, 수신자는 여전히 데이터를 보낼 수 있는 상태이다.
3. FIN 전송(수신자 → 송신자)
- 수신자도 더 이상 전송할 데이터가 없다면, FIN 플래그가 설정된 패킷을 송신자에게 보낸다.
- 이 FIN 패킷은 "나도 데이터를 전송할 게 없다"는 신호이다.
4. ACK 전송(송신자→ 수신자)
- 송신자가 수신자로부터 FIN 패킷을 받으면, 이를 확인하고 ACK 패킷을 수신자에게 보낸다.
- 이 ACK 패킷은 "FIN 패킷을 잘 받았다"는 응답이다.
- 이제 양쪽 모두 데이터를 더 이상 주고받지 않기 때문에 연결이 완전히 종료된다.
이 과정이 완료되면 TCP 연결은 안전하게 종료되며,
이때까지 전송되지 않은 데이터가 있는 경우 재전송되거나 추가적인 오류 처리가 이루어질 수 있다.
TCP 연결 해제 과정 요약
- 송신자가 FIN 패킷을 보내고, 수신자가 이를 받는다.
- 수신자는 ACK 패킷을 보내며, 수신자도 데이터를 계속 전송할 수 있다.
- 수신자도 전송할 데이터가 없으면 FIN 패킷을 보내고, 송신자가 이를 받는다.
- 송신자는 ACK 패킷을 보내며, 연결이 완전히 종료된다.
4-way 핸드셰이크 흐름
- 송신자 → 수신자 : FIN (연결 종료 요청)
- 수신자 → 송신자 : ACK (FIN 확인 응답)
- 수신자 → 송신자 : FIN (연결 종료 요청)
- 송신자 → 수신자 : ACK (FIN 확인 응답)
용어 정리(ACK, FIN)
ACK(Acknowledgment)
데이터를 잘 받았다는 확인 응답
- 송신자가 보낸 패킷에 대해 수신자가 잘 받았다는 신호를 보낼 때 사용된다.
- 수신자는 송신자로부터 받은 데이터에 대한 ACK 번호를 포함시켜 송신자에게 보낸다.
- 이 ACK 번호는 수신자가 다음에 받아야 할 데이터의 순서 번호를 나타낸다.
예시
만약 송신자가 1000번 순서의 데이터를 보냈고 수신자가 이를 잘 받았다면
수신자는 ACK 1001을 송신자에게 보낸다.
이것은 1000번까지 잘 받았고, 다음 데이터는 1001번을 기다리고 있다는 의미이다.
FIN(Finish)
TCP 연결을 종료하고 싶을 때 사용
- TCP는 데이터를 주고받기 위해 먼저 연결을 설정한 후, 데이터 전송이 완료되면 연결을 안전하게 종료한다.
- 이 과정에서 FIN 플래그가 사용된다.
- 연결을 종료하고 싶을 때 송신자가 FIN 플래그를 설정한 패킷을 수신자에게 보낸다.
- 수신자는 이 FIN 패킷을 받고 송신자에게 ACK를 보내며, 이후 수신자도 FIN 패킷을 송신자에게 보내어 양방향 연결을 종료한다.
'certification > 정보처리산업기사' 카테고리의 다른 글
[SW] 테스트 시각에 따른 분류(검증, 확인) (0) | 2024.10.19 |
---|---|
[SW] 테스트 기법에 따른 분류(화이트박스 테스트, 블랙박스 테스트) (0) | 2024.10.19 |
[DB] 정규화, 이상 현상, 함수 종속, 반 정규화 (2) | 2024.10.19 |
[Network] OSI 7계층 (0) | 2024.10.19 |
[OS] 메모리 할당 알고리즘(최초 적합, 최적 적합, 최악 적합) (0) | 2024.10.18 |