개발지식/[하루한개념]

[하루한개념] 4 Way Handshake

코찔이_suj 2022. 3. 21. 12:38
728x90

개요

이제 점점 다른 일을 감당할 수 없을만큼 일을 벌리고 있단 생각이 드는 아침이네요.. 4월 5월 많이 바쁠텐데 이번에 또 CS스터디를 시작했습니다. 뭐 죽기야 하겠다만 해야하는 일이니.. 3개월만 버텨봐야죠 ㅠㅠㅠㅠ

 

1주차 CS스터디로는 HTTP 프로토콜의 특징, HTTP 상태코드, 4 Way Handshake를 공부하고 회의 당일날 뽑기를 통해 설명할 개념을 정해 다함께 공부를 진행하였습니다. 첫주차라 그런지 어영부영 차례대로 공부한 걸 이야기하고 나니 20분도 안되어서 끝이 났더라고요... 다음부턴 자신이 공부한것도 보충으로 설명해서 말하고 서로 궁금했던거나 더 알고싶은 개념을 나누는 시간을 가져봐야겠습니다!

 

아무튼 제가 이번에 뽑게 된 4 Way Handshake를 빠르게 설명 드리고 다음 개념도 연달아 포스팅해보도록 하겠습니다!

  

본론

4 Way Handshake란?


정의

: 네트워크 환경에서 서버와 클라이언트의 세션을 종료하기 위한 프로세스

 

방식

1. Client ------ FIN -----> Server

클라이언트가 서버로 연결을 종료하겠다는 플래그인 FIN flag를 던진 뒤, FIN Wait상태로 변경된다.

2. Client( FIN WAIT ) <----- ACK ------ Server

 FIN Flag를 받은 서버는 응답 패킷인 ACK를 보낸 뒤, Close wait 상태가 된다.

3. Client( FIN WAIT ) <----- FIN ------ Server( CLOSE WAIT )

서버가 통신이 끝나면(연결을 종료할 준비가 되면) 클라이언트에게 FIN 패킷을 보낸 뒤, Last Wait 상태가 된다.

4. Client ------ ACK -----> Server ( LAST WAIT )

클라이언트는 서버로 응답패킷(ACK)을 보낸 뒤, TIME WAIT 상태가 된다.

4. Client( TIME WAIT )------ ACK -----> Server

서버로부터 FIN보다 ACK가 늦게 온다면 FIN을 받고 세션을 종료할 것이기에 ACK가 드롭되고 데이터가 유실이 된다.
때문에 클라이언트는 FIN을 받고도 일정시간(기본 240초)동안 잉여패킷을 기다린다. (= TIME WAIT 상태)

6. Client( CLOSE WAIT) Server

TIME WAIT상태가 종료(세션 완료 + 연결 종료)되면 클라이언트는 CLOSE WAIT 상태가 된다.

Additional...

// 이와 함께 언급되는 개념으론 TCP연결 초기화를 통해 양쪽 모두 데이터 송수신이 가능한지를 확인하는데 사용되는 3 Way Handshake가 있다.

 

마무리

3 Way Handshake도 가볍게 공부하긴 했는데 이건 후에 또 주제로 있기 때문에 나중에 포스팅할 기회가 있다면 그 때 작성하겠습니다! 그럼 오늘도 모두 좋은하루 보내시길 바랍니다 :)

오늘의 공부기록