본문 바로가기

3/4-way Handshake 란? 본문

Dev

3/4-way Handshake 란?

겨울바람_ 2024. 2. 25. 18:34

TCP 3-way Handshake 란?

TCP 는 장치들 사이에 논리적인 접속을 성립하기 위하여 3-way handshake 를 사용한다.

3-way handshake 는 TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.

[STEP 01]
클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이 떄 A클라이언트는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다

[STEP 02]
서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN Flag 가 설정된 패킷을 발송한다. 이후 클라이언트가 다시 ACK로 응답하기를 기다린다. 

이떄 서버는 SYN_RECEIVED 상태가 된다

[STEP 03]
클라이언트는 서버에게 ACK를 보내고 서버가 이를 받으면, 연결이 이루어지고 데이터가 오가게 된다. 이때 서버 상태는 ESTABLISHED 상태가 된다


 TCP 4-way Handshake 란?

[STEP 01]
클라이언트가 연결을 종료하겠다는 FIN Flag 를 서버로 전송한다 

[STEP 02]
서버는 확인메시지를 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태가 TIME_WAIT 상태다

TIME_WAIT
만약 서버에서 FIN을 전송하기 전에 전송한 패킷이 FIN보다 늦게 도착하는 상황이 발생할 경우를 대비하기 위해 클라이언트는 서버로부터 FIN을 수신하더라도 일정시간 동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정을 거치게 된다.
 

[STEP 03]
서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN Flag 를 전송한다

[STEP 04]
클라이언트는 확인했다는 메시지를 보낸다

'Dev' 카테고리의 다른 글

Thread Safe 와 동시성 제어  (0) 2024.03.17
MySQL의 인덱스  (1) 2024.03.16
HTTP  (1) 2024.02.24
Transaction  (0) 2024.02.20
Spring Security Session 과 RestAPI  (0) 2023.08.17
Comments