본문 바로가기
면접 질문/네트워크

[네트워크] TCP 3-way handshake 면접 질문 및 답변 정리

by 그적 2024. 3. 7.
  • TCP 3-way handshake란 무엇이죠?
더보기

3-way handshake는 TCP는 연결지향형 프로토콜로, 두 엔드포인트 간의 연결을 이룬 후에 에러 제어, 흐름 제어, 혼잡 제어 등의 기능을 제공합니다. 이때 TCP 연결을 이루는 과정을 3-way handshake라고 합니다. 이와 반대로 TCP 연결을 끊는 과정은 4-way handshake라고 하고 부릅니다.

 

  • TCP 3-way handshake 과정을 설명해주세요.
더보기

3-way handshake는 TCP 연결을 위한 과정을 3단계로 나눈 것입니다. 우선 클라이언트가 서버에 SYN 패킷을 보냅니다. 그다음 SYN 패킷을 받은 서버는 연결을 허가하기 위해 SYN+ACK 패킷을 담아 클라이언트로 보냅니다. 이로써 서버와 클라이언트는 TCP 연결을 이뤘고, 서버가 연결을 확인하기 위해 클라이언트는 서버로 ACK 패킷을 보냄으로써 3-way handshake 과정이 마무리됩니다.

 

  • TCP 4-way handshake에 대해 알고 계시나요?
더보기

네, 4-way handshake는 TCP 연결을 끊는 과정을 4단계로 나눈 것입니다. 먼저 클라이언트가 서버로 연결을 끊는다는 FIN 패킷을 보냅니다. FIN 패킷을 받은 서버는 우선적으로 ACK 패킷을 보내고, 버퍼에 남은 패킷을 마저 수행한 후에 관련 프로세스가 모두 종료되면 FIN 패킷을 한번 더 클라이언트로 보냅니다. 마지막으로 FIN 패킷까지 받은 클라이언트는 연결이 종료되었다는 확인을 위해 ACK 패킷을 포함해 서버로 보내는 과정이 이뤄집니다.

 

  • 4-way handshake 과정 중에 서버는 바로 FIN 패킷을 보내지 않는 거죠?
더보기

클라이언트가 FIN 패킷이 잘 도착했는지에 대한 응답을 기다리고 있기 때문입니다. 만약 서버가 ACK 패킷을 우선적으로 보내지 않고 모든 프로세스를 마친 후에 FIN 패킷만 바로 보내게 된다면, 클라이언트는 FIN 패킷이 유실된 줄 알고 FIN 패킷을 지속적으로 보낼 것입니다. 따라서 패킷을 받았다는 응답을 바로 하기 위해 ACK 패킷을 보낸 후에 프로세스가 종료된 후 연결을 끊는 FIN 패킷을 보내는 것입니다.

 

  • TCP 3-way handshake 과정 중 발생할 수 있는 문제가 무엇이 있을까요?
더보기

SYN Flooding 취약점이 존재합니다. TCP 연결을 처음 시도할 때 SYN 패킷을 보내는데, 서버가 SYN+ACK 패킷으로 연결을 허용해도 SYN 패킷만 계속해서 보냄으로써 서버 자원을 낭비하는 취약점을 발생시킬 수 있습니다. SYN Flooding 취약점은 방화벽에서 SYN 패킷에 대한 룰을 적용시키거나, SYN 패킷을 저장해 두는 backlog 큐 사이즈를 늘림으로써 해결할 수 있습니다.

 

  • 언제 TCP 연결을 끊나요?
더보기

모든 패킷을 송수신했다고 판단할 때 TCP 연결을 종료합니다. 패킷을 받은 후에 바로 연결을 끊는 것이 아닌 일정 기간 동안 TCP 연결을 지속해 두고, 그 사이에 패킷이 들어오지 않는다면 4-way handshake 과정을 통해 TCP 연결을 끊습니다.

 

  • UDP에는 3-way handshake가 없나요?
더보기

네, 없습니다. UDP는 비연결지향형 프로토콜로 사용되기 때문에 일방향적인 통신을 제공하고 있습니다.

 

댓글