정보관리기술사 토픽/NW

(네트워크 토픽)TCP 3-Way Handshake는 무엇일까요?

공부하는쥐 2024. 10. 21. 22:19

 

 

인터넷이나 네트워크 상에서 데이터를 주고받을 때, 신뢰성을 보장하는 것이 매우 중요합니다. 바로 TCP(Transmission Control Protocol)는 이를 가능하게 하는 핵심 프로토콜 중 하나입니다. TCP가 데이터를 송신하고 수신할 때, "3-Way Handshake"라는 과정이 필수적으로 수행되는데, 이 과정은 신뢰성 있는 연결을 설정하기 위해 이루어집니다. 이번 글에서는 TCP 3-Way Handshake의 동작 원리와 그 중요성에 대해 알아보겠습니다.

 

 


 

 

 

TCP 3-Way Handshake의 동작 과정

TCP 3-Way Handshake는 이름에서 알 수 있듯이, 세 가지 단계를 거쳐 클라이언트와 서버 간에 연결을 설정합니다. 이 과정은 다음과 같이 진행됩니다.

 

 

1. SYN: 연결 요청

먼저 클라이언트가 서버에 SYN 패킷을 보내며 연결을 요청합니다. 예를 들어, 사용자가 웹 브라우저에서 어떤 사이트를 접속하려고 할 때, 브라우저(클라이언트)는 서버에 "나 준비됐어, 너도 준비됐니?"라고 묻는 셈입니다.

  • 클라이언트 → 서버: SYN 패킷 전송

"네! 선장님"이라는 신호를 받기 전까지 잠수하지 않는 선장님


2. SYN-ACK: 응답

서버가 이 요청을 받으면 SYN-ACK 패킷으로 응답합니다. 이는 "나도 준비됐어, 너의 요청을 받았어!"라는 뜻입니다.

  • 서버 → 클라이언트: SYN-ACK 패킷 전송

3. ACK: 연결 완료

마지막으로 클라이언트는 서버의 응답을 확인한 후 ACK 패킷을 보내면서 연결이 확정됩니다. 이제 둘 사이에 데이터 전송이 가능해집니다. 즉, 클라이언트는 "확인했어, 이제 데이터를 주고받자!"라는 신호를 보내는 것입니다.

  • 클라이언트 → 서버: ACK 패킷 전송

 

 

3-Way Handshake 이후: 데이터 전송과 연결 종료

TCP 3-Way Handshake가 완료되면, 클라이언트와 서버는 데이터를 주고받기 시작합니다. TCP는 데이터를 작은 패킷 단위로 쪼개서 전송하고, 수신 측에서 이를 재조립합니다. 만약 데이터가 손실되거나 문제가 발생하면, TCP는 다시 전송을 요청하는 방식으로 신뢰성을 유지합니다.

연결을 종료할 때도 4-Way Handshake라는 절차를 통해 안전하게 연결을 끊습니다. 이 과정도 신뢰성 있는 네트워크 연결을 보장하는 중요한 단계 중 하나입니다.

 

 

왜 3-Way Handshake가 필요할까?

TCP 3-Way Handshake가 중요한 이유는 무엇일까요? 주된 이유는 데이터 전송의 신뢰성을 보장하기 위해서입니다. 네트워크 환경에서는 패킷이 손실되거나 지연될 가능성이 항상 존재합니다. TCP는 이러한 상황을 고려하여 연결이 제대로 이루어졌는지 확인하는 절차를 마련한 것입니다.

 

 

이 과정이 느려지면 발생하는 문제?

 

1. 웹 페이지 로딩 지연

TCP 3-Way Handshake가 느려지면 가장 눈에 띄는 현상은 웹 페이지 로딩 속도가 느려지는 것입니다. 예를 들어, 브라우저가 서버와 연결을 설정하는 데 시간이 오래 걸리면, 그동안 데이터를 주고받을 수 없기 때문에 사용자가 웹 페이지가 로드되는 것을 기다려야 합니다.

ex)사용자가 이 블로그에 접속하려 할 때, 클라이언트(브라우저)가 서버에 SYN 패킷을 보내고 SYN-ACK 응답을 받는 과정이 느리다면, 전체 웹 페이지가 사용자에게 표시되기까지 시간이 지연됩니다. 이로 인해 사용자는 페이지가 늦게 뜨거나, 심하면 연결이 실패하는 것처럼 느낄 수 있습니다.

 

2. 실시간 서비스의 끊김

TCP는 데이터를 신뢰성 있게 주고받기 위해서는 연결이 확실히 설정되어야 합니다. 그런데 TCP 3-Way Handshake 과정이 느려지면, 실시간 통신이 중요한 서비스에서는 큰 문제가 발생합니다. 예를 들어, 온라인 게임, 화상 회의, VoIP 통화 등에서 지연이 발생하면 서비스 품질이 저하됩니다.

ex)화상 회의 중 서버와의 연결이 느리게 이루어지면, 참가자의 음성이 끊기거나 영상이 지연되어 제대로 소통할 수 없는 문제가 발생할 수 있습니다.

 

3. 연결 실패 및 타임아웃

3-Way Handshake가 지나치게 느려지면, 아예 연결 실패가 발생할 수 있습니다. 대부분의 네트워크 통신에는 일정 시간 내에 응답이 없을 경우 연결을 포기하는 타임아웃 설정이 있습니다. Handshake가 이 타임아웃을 넘어서게 되면 연결이 실패하고, 사용자는 웹 페이지에 "서버에 연결할 수 없습니다"라는 메시지를 보게 될 수 있습니다.

ex)서버가 과부하 상태이거나 네트워크 상태가 나쁠 경우, 서버가 SYN-ACK 응답을 제때 보내지 못해 타임아웃이 발생할 수 있습니다. 이 경우 클라이언트는 연결을 포기하고 재시도하게 되지만, 연속된 타임아웃이 발생하면 연결 자체가 불가능해집니다.

 

4. 전체 네트워크 성능 저하

3-Way Handshake가 느려지면, 이를 처리하기 위해 시스템 자원이 많이 소모될 수 있습니다. 특히, 많은 사용자가 동시에 서버에 접속하려는 상황에서는 서버가 각각의 Handshake 요청을 처리하느라 더 큰 부담을 느끼고, 이는 네트워크 병목 현상을 초래할 수 있습니다.

ex)쇼핑몰 서버에 대규모 트래픽이 몰리면, TCP 연결을 설정하는 과정이 매우 느려져서 사용자들이 상품을 구경하거나 결제를 진행하는 데 장애가 발생할 수 있습니다.

 

해결책은?

TCP 3-Way Handshake가 느려지는 원인은 여러 가지가 있을 수 있지만, 주로 네트워크 지연, 서버 과부하, 라우터 문제 등이 원인입니다. 이를 개선하기 위해 다음과 같은 방법을 고려할 수 있습니다:

  • 네트워크 인프라 개선: 대역폭을 늘리고, 네트워크 장비를 업그레이드하여 지연 시간을 줄일 수 있습니다.
  • 로드 밸런싱: 많은 요청이 있을 때 여러 서버로 트래픽을 분산시켜 서버 과부하를 방지합니다.
  • HTTP/2 또는 HTTP/3 사용: 이들 프로토콜은 TCP 연결을 더 빠르게 설정하고 데이터 전송을 효율적으로 처리하므로 웹 성능을 크게 개선할 수 있습니다.

TCP 연결이 느려지면 전체 사용자 경험이 악화되므로, 이를 개선하는 다양한 방법을 모색하는 것이 중요합니다.

 

 

 

읽어주셔서 감사합니다. TCP 3-Way 와 관련된 질문이 있으면 언제든지 댓글로 남겨주세요!

매일 정보관리기술사 토픽과 최신 IT 동향을 함께 공부하고 성장해요!