본문 바로가기
Programming/Web

[Network] 3-way handshake, 4-way handshake의 개념 및 동작 원리

by hyunipad 2022. 3. 13.
반응형

OSI 7 계층과 TCP/IP 모델의 전송계층에서 사용되는 프로토콜인 TCP과 UDP의 가장 큰 차이점은 신뢰성에 있습니다.

TCP는 3-way handshake와 4-way handshake를 통해 신뢰성을 구축하여 클라이언트와 서버를 연결하여 데이터를 보내고 UDP는 오직 데이터만을 빠르게 보내어 신속성을 보장합니다.

 

이번 포스팅에서는 3-way handshake와 4-way handshake의 개념 및 동작원리에 대해 살펴보겠습니다.

 

3-way handshake

3-way handshake는 세션을 연결하기 위해서 3번의 일련의 과정을 통해서 수행됩니다.

  1. 클라이언트는 서버에게 연결을 요청하겠다는 요청(SYN) 패킷을 보냅니다. 이때 클라이언트는 서버에 SYN+ACK 응답을 기다리는 SYN-SENT 상태입니다.
  2. 서버는 클라이언트에게 요청(SYN)패킷을 받으면 요청을 수락하겠다는 응답(ACK) 패킷과 함께 자신도 연결을 요청하겠다는 요청(SYN) 패킷을 함께 보냅니.(SYN+ACK) 이때 서버는 클라이언트는 ACK 패킷을 기다리는 SYN-RECEIVED 상태입니다.
  3. 클라이언트는 SYN+ACK패킷을 받으면 요청을 수락하겠다는 응답(ACK)패킷을 보내며, ESTABLISHED 상태가 되고 서버는 응답(ACK) 패킷을 받으면 ESTABLISHED 상태가 됩니다.

위의 과정속에서 클라이언트가 서버에게 무수히 많은 요청(SYN) 패킷을 보내어 서버가 SYN-RECEIVED 상태를 유지하게 만들어 서버가 대기 중인 상태를 만드는 공격 방법을 SYN Flooding이라고 합니다.

 

4-way handshake

4-way handshake는 반대로 세션을 종료시키기 위해 4번의 과정을 통해 수행합니다.

  1. 클라이언트는 서버에게 종료(FIN)패킷을 보내고 자신은 FIN-WAIT-1 상태가 됩니다.
  2. 서버는 클라이언트에게 응답(ACK)패킷을응답(ACK) 패킷을 보내고 애플리케이션에 close()를 요청합니다. 이때 응답(ACK) 패킷을 받은 클라이언트는 FIN-WAIT-2 상태가 되고 서버는 CLOSE-WAIT 상태가 됩니다.
  3. 애플리케이션이 종료할 준비가 되면 클라이언트에 종료(FIN)패킷을 보내고 자신은 LAST-ACK 상태가 됩니다.
  4. 클라이언트는 종료(FIN)패킷을 받으면 TIME-WAIT 상태가 되고 응답(ACK) 패킷을 보내면 서버는 세션을 종료합니다.

마지막 과정에서 클라이언트는 종료하기 전에 FIN 패킷보다 늦게 도착하는 데이터가 있으면 유실되므로 TIME-WAIT 상태에서 일정 시간이 지나면 세션을 종료합니다.

반응형

댓글