네트워크

3 Way HandShake 와 4 Way HandShake 에 대해 알아보도록 하겠습니다.

forward error correction Circle 2022. 12. 20. 10:45
반응형

3 Way HandShake 와 4 Way HandShake 에 대해 알아보도록 하겠습니다.

 

Ⅰ. 3 Way HandShake 와 4 Way HandShake 의미

3 Way HandShake는 TCP/IP 네트워크 환경에서 서버와 클라이언트를 연결하는 과정이고

4 Way HandShake는 TCP/IP 네트워크 환경에서 서버와 클라이언트의 연결을 해제(세션 종료) 과정입니다.

  

Ⅱ. 3 Way handshake 과정(그림)

 

Ⅱ. 3 Way handshake 과정(설명)

[STEP 1]

A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보냅니다.

A클라이언트는 SYN  보내고 B서버로부터 SYN/ACK 응답을 기다리는 상태일 때

A클라이언트는 SYN_SENT 상태B서버는 Wait for Client 상태가 됩니다.

 

[STEP 2] 

B서버는 A클라이언트로부터 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK  SYN 을 보내고

B서버는 A클라이언트 다시 ACK으로 응답하기를 기다린다. B서버 SYN_RECEIVED 상태가 됩니다.

 

[STEP 3]

A클라이언트는 B서버에게 ACK 보냅니다. ACK 이후로부터는 서버와 클라이언트 간 연결이 이루어지고 데이터가 오가게 되는것이다. A클라이언트와 B서버 상태가 ESTABLISHED 가 됩니다.

위와 같은 방식으로 통신하는것이 신뢰성 있는 연결을 맺어 준다는 TCP 3 Way handshake 방식이다.

 

Ⅲ. 4 Way handshake 과정(그림)

 

Ⅲ. 4 Way handshake 과정(설명)

[STEP 1]

A클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다. 이때 A클라이언트는  FIN-WAIT 상태가 됩니다.

 

[STEP 2] 

B서버는 FIN플래그를 받고, A클라이언트에게 ACK 보내고 연결을 종료하는 행위를 합니다. 연결이 종료 될때까지 기다리는데  상태일 때  B서버는 CLOSE_WAIT상태가 됩니다.

 

[STEP 3]

B서버가 연결을 종료할 준비가 되면, 연결 종료를 위한 준비가 되었음을 알리기 위해 A클라이언트에게 FIN플래그를 전송합니다. 이때 B서버는 LAST_ACK 상태가 됩니다

 

[STEP 4]

A클라이언트는 B서버로부터 연결 종료 되었다는 FIN 에 대해 확인을 했다는 ACK 메시지를 보냅니다.

A클라이언트의 상태가 FIN-WAIT ->TIME-WAIT 으로 변경된다.

 

 만약 B서버에서 FIN 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN패킷보다 늦게 도착하는 상황" 발생하는 경우를 대비하여 

 A클라이언트 B서버로부터 FIN 수신하더라도 일정시간(디폴트 240) 동안 세션을 남겨놓고 남은 패킷을 기다리는 과정을 거치게 되는데  과정을 "TIME_WAIT" 라고 합니다. 일정시간이 지나면, 세션을 만료하고 연결을 종료시키며"CLOSE" 상태로 변경됩니다.

반응형