본문 바로가기
Study

#15. [Network] 3-way handshake & 4-way handshake의 과정

by Joshuuakeem 2023. 5. 10.

3-way handshake와 4-way handshake는 모두 TCP/IP 프로토콜에서 데이터 통신을 위해 사용되는 과정이다.

3-way handshake는 연결을 설정할 때 사용 - 4-way handshake는 연결을 종료할 때 사용된다.

 

* 3-way handshake 과정

 

1) Client --> SYN --> Server : 클라이언트가 서버에 연결 요청 (SYN)

클라이언트가 서버에 연결을 요청하기 위해 SYN(Synchronize Sequence Number) 패킷을 보낸다. SYN 패킷은 클라이언트의 초기 순서 번호와 플래그 값을 설정하는 역할을 한다. 클라이언트가 서버에 연결 요청을 하고 있다고 생각하면 된다.

 

2) Server --> SYN / ACK --> Client : 서버가 클라이언트의 연결 요청을 수락 응답

 서버는 클라이언트의 SYN 패킷을 받고, 클라이언트의 순서 번호에 1을 더한 값으로 자신의 초기 순서 번호를 설정한 후, SYN/ACK 패킷을 보낸다. (ACK = AcKnowledment) 

 

3) Client --> ACK --> Server : 클라이언트가 서버에게 수락 응답

클라이언트는 서버의 SYN / ACK 패킷을 받고, 서버의 초기 순서 번호에 1을 더한 값을 자신의 초기 순서 번호로 설정한 후, ACK패킷을 보낸다. 이 패킷에는 플래그 값으로 ACK가 설정되며, 클라이언트가 서버의 연결 수락 응답을 받았다는 것을 뜻한다.

 

 

* 4-way handshake 과정

1) Client --> FIN --> Server : 클라이언트가 서버에게 연결 종료 요청

클라이언트가 서버에게 데이터 전송을 마치고 연결을 종료하기 위해 FIN(Finish) 패킷을 보낸다. 이 패킷은 클라이언트가 데이터 전송을 마치고 연결을 종료하는 것을 서버에게 알리는 역할을 한다.

 

2)  Server --> ACK --> Client : 서버가 클라이언트의 연결 종료 요청에 응답

서버는 클라이언트의 FIN 패킷을 받고 연결 종료 요청을 받았다는 것을 알리는 ACK 패킷을 보낸다.

 

3) Server --> FIN --> Clinet : 서버가 클라이언트에게 연결 종료 요청

서버는 데이터 전송이 모두 완료 후 자신도 연결을 종료하고자 클라이언트에게 FIN 패킷을 보낸다. 이 패킷은 서버가 클라이언트에게 연결을 종료를 알리는 역할을 한다.

 

4) Clinet --> ACK --> Server : 클라이언트가 서버의 연결 종료 요청에 응답

클라이언트는 서버의 FIN 패킷을 받고 연결 종료 요청을 수락하는 ACK 패킷을 보낸다. 안전하게 연결을 종료하는 과정이다.

 

 

반응형