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도 가볍게 공부하긴 했는데 이건 후에 또 주제로 있기 때문에 나중에 포스팅할 기회가 있다면 그 때 작성하겠습니다! 그럼 오늘도 모두 좋은하루 보내시길 바랍니다 :)
'개발지식 > [하루한개념]' 카테고리의 다른 글
[하루한개념] 비트와 비트마스킹 (0) | 2022.05.11 |
---|---|
[하루한개념] npm vs. yarn (npm, yarn, 차이점과 명령어) (0) | 2022.03.31 |
[하루한개념] HTTP프로토콜의 특징 (0) | 2022.03.21 |
[하루한개념] CSR, SSR로 알아보는 nextJS (0) | 2022.03.19 |
[하루한개념] DDD (Domain Driven Design) 정리 (0) | 2022.03.08 |