Interview Question

[Interview Question] 3-way handshake와 4-way handshake 과정은 무엇인가요?

sagecode 2025. 9. 4. 00:01

TCP 연결 같은 경우에는 데이터를 주고받을 때, 서로 준비가 되었는지 확인하는 절차가 필요합니다. 그 방법이 3-way handshake입니다.

 

처음에 클라이언트가 서버에 syn 패킷을 보내면

서버가 클라이언트의 syn 패킷을 수신하고 요청을 수락하며 자신의 isn이 담긴 syn 패킷을 재전송합니다. 또한, 클라이언트의 syn에 대한 응답인 ack도 전송합니다.

클라이언트가 서버의 syn패팃을 수신하면 그에 맞는 응답인 ack를 서버에 보냅니다. 이 단계가 끝나면 서로 연결이 완료됩니다.

 

연결을 종료할 때, 서로 양쪽 모두 통신이 끝났음을 알려야하므로 4-way-handshake를 진행하게 됩니다.

 

처음에 클라이언트가 서버에게 더이상 보낼 데이터가 없음을 알리고 fin을 전송합니다.

서버가 fin을 받았다는 ack를 클라이언트에게 전송합니다. 하지만 서버는 클라이언트에게 보낼 데이터가 남아있을 수도 있습니다.

그 이후 데이터를 다 전송하면 서버측 연결 종료 의사를 클라이언트에게 fin을 전송합니다.

클라이언트는 받은 fin에 대한 응답으로 서버에게 ack를 전송하고 잠깐의 시간이 지난 후 연결을 종료합니다.