현수의 제 2의 뇌
반응형
글을 읽기 전에 질문에대한 대답을 생각해 보시고 글을 읽어주세요!

3-way handshake란 무엇인가요?

클라이언트와 서버 사이에 TCP/IP 프로토콜을 사용하여 송수신하기 전에 안정적인 연결을 수립하기 위해 진행되는 과정입니다.

1단계

- 클라이언트가 서버에게 연결 요청을 보냅니다. 이때 SYN flag가 설정된 패킷을 보냅니다.

- 이 패킷은 플라이언트의 초기 순서 번호(Initial Sequence Number, ISN)도 포함하고 있습니다.


SYN flag : SYN flag 는 3-way handshake에서 첫번째 단계인 클라이언트의 연결 요청을 나타냅니다. 클라이언트는 패킷에 SYN flag가 설정된 패킷을 보내면서 서버와의 안정적인 연결을 수립하겠다는 의지를 표현합니다.

초기 순서 번호 : 클라이언트와 서버가 통신할때 데이터의 순서와 정확성을 보장하기 위해 사용됩니다.

2단계

- 서버는 SYN flag 및 ACK flag가 설정된 패킷을 클라이언트에게 보냅니다. 이 패킷은 서버의 초기 순서 번호도 포함하며, 클라이언트의 순서 번호에 1을 더한 값을 ACK 번호로 설정해 전달합니다

- 이 과정에서 서버가 클라이언트의 연결 요청을 받아들이고 응답하며, 동시에 서버측에서도 연결 요청을 보냅니다

 

3단계

- 클라이언트는 서버로부터 ACK flag를 확인하고, 서버의 순서 번호에 1을 더한 값을 ACK번호로 설정한 패킷을 보냅니다.

- 이 패킷 수신을 통해 서버는 클라이언트와의 연결이 성공적으로 이루어졌음을 인지하게 됩니다.

 

4-way handshake란 무엇인가요??

3-way handshake는 연결을 시작하는 과정이라면, 4-way handshake는 연결을 종료하는 과정입니다. 

 

1단계

클라이언트가 서버에게 연결 종료 요청을 보냅니다.

Fin flag가 설정된 패킷을 보냅니다.

Fin flag란?
TCP 프로토콜에서 세션 종료를 나타내기 위한 제어 비트중 하나 입니다.
이렇게 하면 통신이 끝났음을 양쪽 당사자 모두가 알 수 있고, 자원을 제대로 해제할 수 있습니다.

 

2단계

- 서버는 클라이언트로부터 Fin flag를 받고 Ack flag가 설정된 패킷을 클라이언트에게 전달합니다.

- 그리고 서버는 미처 전달되지 않은 데이터를 처리하거나 보낼 준비를 마칩니다.

 

3단계

- 서버가 모든 데이터 처리를 완료하면, 이제 클라이언트에게 연결 종료를 요청하는 Fin flag가 설정된 패킷을 보냅니다.

 

4단계

- 클라이언트는 서버의 Fin 패킷 수신 후, ACK flag가 설정된 패킷을 서버에게 보냅니다. 이후 일정 시간 동안 대기 후 연결을 완전히 종료합니다.

 

3-way handshake가 필요한 이유

- 클라이언트와 서버는 이 과정을 통해 모두 연결 준비가 되었다는 것을 확인합니다.

- 이 과정에서 양쪽 모두 초기 순서 번호를 교환하게 되어, 이후 패킷 송수진 과정에서 데이터 전달의 정확성과 안정성을 보장할 수 있습니다.

 

4-way handshake가 필요한 이유

4-way handshake는 처리되지 않은 데이터가 없는 확인하고, 안전하게 연결을 종료하기 위한 과정입니다. 

- 양쪽에서 남아있는 데이터가 없는지 확인하여 데이터 손실을 방지합니다.

- 양쪽이 상호 동의하게 종료하므로, 갑작스러운 연결 종료로 인한 통신 오류를 방지할 수 있습니다.

profile

현수의 제 2의 뇌

@부현수

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!