본문 바로가기
Computer-Sience/Network

[Network] TCP : 3-Way Handshaking / 4-Way Handshaking

by dev_ss 2023. 7. 26.

TCP에서 Client와 Server의 통신을 하기 전에 논리접인 접속을 성사시키기 위해 3-Way Handshaking이라는 방식을 이용하여 상호 통신을 위한 연결을 성사시킨다.

 

3-Way Handshaking는 클라이언트와 서버 간의 통신을 하기 위한 과정이라고 한다면, 통신을 종료하기 위한 과정 또한 존재하는데, 이를 4-Way Handshaking이라고 한다.

 

해당 내용을 순서대로 알아볼 것이다.

 


3-Way Handshaking은 아래의 세 개의 단계로 진행된다.

 

1. 클라이언트 => 서버 : 연결 요청 (SYN)


클라이언트는 서버에 연결을 요청하기 위해 SYN 패킷을 전송한다.

 

SYN(Synchronize Sequence Numbers)은 클라이언트가 서버와의 연결을 시작하고자 한다는 의미를 가지고 있고, 클라이언트는 초기 시퀀스 번호(Initial Sequence Number)를 포함하여 SYN 패킷을 생성한다.

 

 

2. 서버 => 클라이언트 : 연결 요청 수락 및 확인 (SYN/ACK)


서버는 클라이언트로부터 받은 SYN 패킷을 수신하고, 이에 대한 확인 응답으로 SYN/ACK 패킷을 보내는데, 이는 SYN/ACK는 서버가 클라이언트의 연결 요청을 받았고, 클라이언트의 초기 시퀀스 번호를 인지했다는 것을 의미한다.

 

 

3. 클라이언트 => 서버 : 연결 요청 확인 (ACK)


클라이언트는 서버로부터 받은 SYN/ACK 패킷에 대한 확인 응답으로 ACK 패킷을 다시 보내고, 이로써 클라이언트와 서버 간의 3-Way Handshaking이 완료함으로, 데이터를 안정적으로 교환할 준비가 된 것이다.

 


4-Way Handshaking은 아래의 네 개의 단계로 진행된다.

 

1. 클라이언트 => 서버 : 연결 종료 요청 (FIN)


먼저 클라이언트가 연결을 종료하려면 연결 종료를 의미하는 FIN(Finish) 패킷을 보내는데, 클라이언트가 더 이상 데이터를 보내지 않을 것임을 서버에 알리는 역할을 한다.

 


2. 서버 => 클라이언트 : 연결 종료 요청 확인 (ACK)


서버는 클라이언트로부터 받은 FIN 패킷에 대한 확인 응답으로 ACK 패킷을 보내고, 서버가 클라이언트의 연결 종료 요청을 인지했음을 알려준다.

 

 

3. 서버 => 클라이언트 : 연결 종료 요청 (FIN)


서버는 마찬가지로 더 이상 클라이언트에 데이터를 보내지 않을 것을 인지시키기 위해 서버도 FIN 패킷을 보낸다.

 

 

4. 클라이언트 => 서버 : 연결 종료 요청 확인 (ACK)


클라이언트는 서버로부터 받은 FIN 패킷에 대한 확인 응답으로 ACK 패킷을 다시 보내고, 클라이언트와 서버 간의 4-Way Handshaking이 완료되면서 TCP 연결이 정상적으로 종료된다.

반응형