데이터계측분석/데이터통신 기술자료

TCP와 UDP의 개요와 차이점

에이티에스 2024. 7. 24. 22:42
728x90

TCP(Transmission Control Protocol) 및 UDP(User Datagram Protocol)는 인터넷의 기본 기둥으로, 네트워크 소스에서 대상으로 다양한 유형의 데이터 전송을 가능하게 합니다. TCP는 더 안정적이며 UDP는 속도와 효율성을 우선시합니다. 이 기사에서는 두 프로토콜의 작동에 대해 설명하고 10가지 중요한 차이점에 대해 자세히 설명합니다.

 

1. TCP(전송 제어 프로토콜)란?

전송 제어 프로토콜(TCP)은 컴퓨팅 장치 및 애플리케이션이 네트워크를 통해 데이터를 전송하고 전달을 확인할 수 있도록 하는 연결 지향 통신 프로토콜로 정의되며, 글로벌 인터넷의 중요한 기둥 중 하나를 형성합니다.

 

 

통신 프로그램 및 컴퓨팅 장치는 네트워크를 통해 메시지를 교환하기 위해 TCP를 사용합니다. 이 프로토콜의 임무는 인터넷을 통해 패킷을 전달하고 네트워크를 통해 메시지와 데이터를 성공적으로 전달하는 것입니다.

 

데이터를 전송하기 전에 클라이언트와 서버가 연결을 설정해야 합니다. 서버는 연결이 설정될 때마다 클라이언트 요청을 적극적으로 수신해야 합니다. TCP 프로토콜은 연결 기반이므로 데이터가 전달되는 동안 수신자와 발신자 간에 연결을 만들고 유지 관리합니다. 따라서 인터넷을 통해 이동하는 모든 정보는 변경되지 않은 상태로 도착합니다.

이러한 이유로 TCP는 네트워크에 가장 많이 사용되는 프로토콜 중 하나입니다.

 

다음은 TCP의 가장 중요한 기능 중 일부입니다.

  • 클라이언트가 서버에서 데이터 전달을 확인합니다.
  • 제한 시간이 지나면 서버는 전달되지 않은 데이터에 대해 재전송을 시도합니다.
  • 혼잡한 네트워크에서 TCP는 데이터 전송을 지연시킵니다.
  • 3방향 핸드셰이크를 사용하여 데이터 전송 오류를 확인합니다.

 

그러나 TCP는 본능적으로 신뢰할 수 있는 프로토콜이지만 이러한 피드백 메커니즘으로 인해 오버헤드 크기가 더 커질 수도 있습니다. 이는 시스템에서 사용할 수 있는 대역폭을 훨씬 더 많이 소비한다는 것을 의미합니다. 대부분의 온라인 응용 프로그램에서는 TCP와 함께 UDP(사용자 데이터그램 프로토콜)를 사용하여 이 문제를 해결합니다.

 

 

반응형

 

2. UDP(사용자 데이터그램 프로토콜)란?

UDP(User Datagram Protocol)는 컴퓨팅 장치 및 애플리케이션이 전달을 확인하지 않고 네트워크를 통해 데이터를 보낼 수 있도록 하는 메시지 지향 통신 프로토콜로, 실시간 통신 및 방송 시스템에 가장 적합합니다.

 

 

 

 

TCP와 마찬가지로 그 목적은 메시지를 보내고 받는 것이므로 그 기능은 전송 제어 프로토콜과 유사합니다. UDP의 특징은 연결 기반이 아니라는 것입니다. 이 경우 "연결 없음"은 통신이 발생하기 전에 연결이 설정되지 않았다는 사실을 나타냅니다.

 

또한 서버에서 데이터 패킷의 전달을 보장하지 않습니다. 일반적으로 "fire-and-forget" 프로토콜이라고 하는데, 클라이언트가 데이터를 수신하는지 여부에 대해 신경 쓰지 않기 때문입니다.

대부분의 경우 UDP는 TCP처럼 패킷 전달을 보장하지 않기 때문에 TCP보다 빠릅니다.

 

UDP 프로토콜은 전자 메일을 보내거나, 웹 페이지를 보거나, 파일을 다운로드하는 데 적합하지 않습니다. 그러나 주로 브로드캐스트 또는 멀티태스킹 네트워크 트래픽과 같은 실시간 애플리케이션에 선호됩니다.

 

 

UDP의 주요 기능은 다음과 같습니다.

  • 패킷 손실을 허용하는 대역폭 집약적인 애플리케이션에 적응합니다.
  • 데이터 전송 지연이 줄어듭니다.
  • 한 번에 많은 수의 패킷을 보내는 데 사용됩니다.
  • 일부 데이터가 손실될 수 있습니다.

 

 

반응형

 

3. TCP와 UDP의 차이점

전송 제어 프로토콜은 다음과 같은 점에서 사용자 데이터그램 프로토콜과 다릅니다.

 

 

 

1) TCP는 연결 지향적, UDP는 연결없음

TCP는 연결 지향 프로토콜이기 때문에 수동 개방 상태의 서버에 의존합니다. 패시브 오픈 서버는 연결을 시도하는 모든 클라이언트를 수신합니다. 클라이언트는 먼저 서버에 연결한 다음 데이터를 보내거나 받아야 합니다. 연결은 3방향 핸드셰이크를 통해 설정됩니다. 클라이언트는 동기화 요청을 보내고, 서버는 승인을 다시 보내고, 클라이언트는 이에 대한 응답으로 동기화 승인을 반환합니다.

 

이에 비해 UDP는 연결이 없는 프로토콜입니다. 이러한 유형의 데이터 전송에는 수신기를 사용할 수 있는지 또는 신호를 수신할 수 있는지 여부를 확인하지 않고 IT 신호를 보내는 네트워크의 엔드포인트가 포함됩니다. 메시지는 수신자를 고려하지 않고 대상을 고려하지 않고 전송됩니다. 연결 없는 전송 프로토콜은 최소한의 패킷 수를 잃을 수 있습니다. 그러나 이는 예를 들어 화상 통화 중과 같이 수신 클라이언트에게 항상 명백한 것은 아닙니다.

 

2. TCP는 UDP보다 더 많은 오류 검사 메커니즘을 활용

전송 제어 프로토콜은 세 가지 다른 메커니즘을 사용하여 오류를 확인하고 배송 시 데이터 무결성을 보장합니다. 이것은 매우 신뢰할 수 있습니다. TCP는 다음을 통해 오류를 확인합니다.

  • 시간 초과 기간 후 연결 제한: 연결에는 지정된 시간 초과 기간이 있습니다. 서버나 클라이언트가 이 기간 내에 승인 메시지를 받지 못하면 연결이 닫히고 데이터를 전송하기 전에 연결을 다시 설정해야 합니다.
  • 헤더에 체크섬 필드 포함: 데이터 패킷에는 헤더에 체크섬 필드라고 하는 16비트 값이 포함됩니다. TCP에는 모든 데이터 세그먼트에 대한 체크섬 필드가 포함되어 있으며, 이 체크섬은 전송 중 무결성을 평가합니다.
  • 확인 보내기 및 받기: 연결이 설정되거나 데이터가 전송되면 서버는 확인 또는 ACK 메시지를 전송합니다. 클라이언트는 승인을 받고 ACK 메시지 값에 하나를 추가하여 메시지를 다시 보냅니다.

이 세 가지 조치는 올바른 데이터 스트림이 손실이나 손상 없이 TCP를 통해 전송되고 TCP를 통해 전송되도록 합니다. 반면, UDP는 체크섬을 사용하여 기본 오류 검사만 실행합니다.

 

3. TCP는 특정 순서로 데이터를 전송하지만 UDP 프로토콜에는 고정된 순서가 없음

데이터 세그먼트를 전달해야 하는 애플리케이션 프로세스를 결정하기 위해 TCP는 포트 번호를 사용합니다. 또한 시퀀스 번호를 사용하여 원격 호스트와 동기화됩니다. 데이터의 모든 세그먼트는 시퀀스 번호와 함께 송수신됩니다. 이를 통해 시스템은 데이터가 전송되는 특정 순서를 추적하여 원하는 순서를 유지할 수 있습니다.

 

UDP는 시퀀싱 메커니즘을 따르지 않습니다. 데이터 패킷은 고정된 순서 없이 독립적으로 전송되며 수신자 애플리케이션에서 다시 연결됩니다. 수신된 순서대로 다시 연결된다는 것을 명심하십시오 – 즉, 프로토콜은 어떤 데이터 패킷이 먼저 와야 하는지, 잘못된 순서로 수신되는지 알 수 있는 방법이 없습니다. 응용 프로그램이 패킷을 잘못 수신합니다. 또한 UDP는 처리할 수 없는 모든 데이터 패킷을 삭제합니다.

 

 

반응형

 

4. UDP는 TCP보다 빠르고 효율적

UDP가 본질적인 결함에도 불구하고 인기 있는 주요 이유 중 하나는 속도와 효율성입니다. 사용자 데이터그램 프로토콜은 패킷 전송을 시작하기 위해 설정된 연결이 필요하지 않습니다. 따라서 일반적으로 서버를 켜고 "수동 개방" 수신 상태로 전환하는 데 필요한 시간을 절약할 수 있습니다. 이를 통해 지연이나 연장된 대기 시간 없이 데이터 전송을 더 빠르게 시작할 수 있습니다. 또한 패킷을 순서대로 배치하거나 승인을 보내고 받을 필요가 없어 시간을 절약할 수 있습니다.

 

대기 시간 외에도 UDP는 대역폭 측면에서도 더 효율적입니다. 데이터가 서버에서 클라이언트로 이동하면 TCP는 많은 대역폭을 차지하는 많은 오류 검사 메커니즘, 승인 프로세스 및 시퀀싱 조치를 수행합니다. 대조적으로, UDP는 많은 견제와 균형 없이 한 컴퓨팅 위치에서 다른 컴퓨팅 위치로 데이터 스트림을 빠르게 가져옵니다. 따라서 성능이 낮은 네트워크, 모바일 장치 및 리소스를 쉽게 사용할 수 없는 기타 연결 조건에 적합합니다.

 

전송 제어 프로토콜은 UDP보다 느리고 리소스 집약적입니다. 데이터 시퀀스가 손상되면 TCP는 연결을 다시 시작하여 서버가 승인을 보내고 받고 3방향 핸드셰이크를 설정하도록 요구합니다. UDP는 손실되거나 손상된 패킷을 삭제한 다음 다음 패킷으로 이동하여 훨씬 더 효율적입니다.

 

5. UDP와 달리 TCP는 멀티캐스트 또는 브로드캐스트 서비스에 사용할 수 없음

TCP는 진정한 종단 간 연결입니다. 이는 통신 엔드포인트와 다른 엔드포인트 간의 연결을 설정하고 전송되는 데이터 패킷 및 바이트를 추적하기 위한 정확한 기록 보관 조치를 설정하는 것을 의미합니다. 동기화 및 확인 메시지는 이전 메시지의 값에 1을 추가하여 쉽게 추적할 수 있도록 합니다. 패킷 헤더에는 데이터 스트림을 순서대로 유지하기 위한 시퀀싱 세그먼트도 포함되어 있습니다. 따라서 여러 엔드포인트로 데이터를 브로드캐스트하는 시나리오가 아닌 지점 간 전송 시스템에 이상적입니다.

 

멀티캐스트 또는 브로드캐스트 시나리오에서 서버는 여러 수신자를 대상으로 합니다. 승인이나 배달 확인을 기다리지 않고 데이터를 전달하며, 이것이 바로 UDP가 작동하는 방식입니다. UDP의 핵심 아키텍처는 데이터 패킷이 "수동 개방" 상태인지 "수신 대기" 상태인지에 관계없이 전체 엔드포인트 그룹(또는 서브넷)에 브로드캐스트하는 데 이상적입니다. 이러한 경우 데이터 전송은 특정 네트워크 호스트를 대상으로 지정하지 않고 대신 호스트 그룹을 대상으로 합니다.

 

6. TCP는 흐름 제어를 활용하지만 UDP는 사용할 수 없음

흐름 제어는 서버가 먼저 수신자의 용량을 확인하여 수용할 수 있는 데이터의 양과 속도를 파악하는 메커니즘입니다. 전송 제어 프로토콜은 슬라이딩 윈도우 방식을 통해 흐름 제어를 구현합니다. 수신자는 슬라이딩 윈도우에서 창이 가득 찰 때까지 송신기에 데이터를 보낼 수 있는 권한을 부여합니다. 이 경우 송신기는 수신자가 더 큰 창을 사용할 수 있음을 명확히 할 때까지 기다려야 합니다.

 

TCP는 흐름 제어 정보를 활용하여 데이터 전송 속도를 보정합니다. 수신자 호스트에 따라 전송 제어 프로토콜은 데이터 패킷이 이동하는 속도를 조정하고 수신자에게 과부하가 걸리지 않도록 할 수 있습니다. 그러나 이는 서버가 모든 패킷을 전송하기 전에 흐름 제어 정보를 기다리므로 속도가 느려지고 효율성이 떨어집니다.

 

UDP는 흐름 제어 기술을 사용하지 않습니다. 원래 서버에 가장 적합한 속도로 데이터를 전송하며, 결과적으로 강력한 서버가 여러 연속 데이터 스트림으로 수신 장치를 공격할 수 있습니다. 조직은 라우터를 배포하여 UDP 데이터 흐름에 개입하고 트래픽 폴리싱 정책을 통해 데이터 패킷이 전송되는 속도를 보정할 수 있습니다. UDP가 데이터를 너무 빨리 전송하여 수신자가 압도되면 수신자가 수락할 수 없는 데이터 패킷을 삭제합니다.

 

 

반응형

 

7. UDP는 혼잡을 제어하지 않는 반면 TCP는 혼잡 방지 알고리즘을 구현

흐름 제어에서 TCP는 수신자의 수락 창 크기에 따라 데이터 전송을 조정합니다. 여기서 TCP는 네트워크 인프라의 용량을 고려합니다. 수신자 외에도 네트워크는 데이터가 얼마나 빠르거나 느리게 이동하는지를 결정합니다. 따라서 네트워크에서 허용 가능한 수준으로 전송 속도를 조정하는 것이 중요합니다. TCP는 혼잡 방지 알고리즘 및 정책을 통해 이를 가능하게 합니다.

 

AIMD(Additive-increase/multiplicative-reduction)는 사용되는 주요 알고리즘 중 하나입니다. 혼잡 창의 선형 증가와 기하급수적 감소를 결합하여 네트워크 트래픽이 매우 복잡하지만 효과적인 프로세스를 누적하는 것을 방지합니다. TCP는 혼잡한 네트워크 경로가 지워질 때까지 기다렸다가 전송을 다시 시작하여 데이터 패킷이 손실되지 않도록 합니다.

 

실제로 혼잡 제어는 TCP가 많은 컴퓨팅 리소스를 소비하는 주된 이유입니다. 전송 제어 프로토콜은 네트워크 구성에 따라 10+ 혼잡 방지 메커니즘을 사용할 수 있습니다. 여기에는 TCP Tahoe(데이터 손실이 발생할 때 느린 시작으로 연결 재설정), TCP Reno(혼잡 후 복구를 위해 빠른 재전송 시작) 등이 포함될 수 있습니다.

 

반면 UDP는 네트워크 정체를 제어할 방법이 없습니다. 경로에 트래픽이 너무 많으면 UDP는 다음 줄에서 대기 중인 패킷을 삭제하고 나머지 패킷을 전송합니다. 조직은 특별히 구성된 라우터를 사용하여 손실된 패킷을 보존할 수 있지만 이 기능은 사용자 데이터그램 프로토콜에 내재되어 있지 않습니다.

 

8. TCP는 UDP보다 더 안정적

두 프로토콜 모두 장단점이 있으며 TCP의 가장 큰 장점은 높은 안정성입니다. 이는 다음과 같은 원인에 기인할 수 있습니다.

  • 전송 제어 프로토콜은 연결 기반입니다. 수신 대기 중인 클라이언트에게만 데이터를 보냅니다.
  • 3방향 핸드셰이크 시스템을 사용하여 데이터가 일관되게 전송되는 동안 연결을 유지합니다. 연결이 중단되면 전송도 중지되고 데이터 패킷이 손실되지 않습니다.
  • TCP는 시퀀싱 메커니즘을 사용하여 올바른 순서로 데이터를 보냅니다. 즉, 이 프로토콜을 통해 전송된 이미지, 웹 페이지, 데이터 파일 및 기타 정보 유형은 손상되지 않은 상태로 도착합니다.
  • TCP는 데이터가 전달될 것임을 보장합니다. 수신된 모든 데이터 패킷에 대한 승인을 얻고 클라이언트가 ACK 메시지를 보낸 후에만 다음 패킷을 보냅니다.
  • TCP는 흐름 및 혼잡 제어 메커니즘을 사용하여 데이터가 손실, 손상, 중복 또는 순서에 맞지 않게 전달되지 않도록 합니다.

 

반면, 사용자 데이터그램 프로토콜은 본질적으로 신뢰할 수 없습니다. 이 아키텍처는 "수신 대기" 상태 또는 승인을 기다리지 않고 하나 이상의 수신 클라이언트에 데이터 패킷을 지속적으로 보내도록 설계되었습니다. 까다로운 네트워크 조건에서 TCP 및 UDP로 인해 패킷이 손실될 수 있습니다. 차이점은 TCP가 손실을 인식하고 손실된 패킷을 식별하여 정보를 재전송한다는 것입니다. UDP는 패킷이 전송 중에 손실되었는지, 어떤 패킷이 손실되었는지 또는 다시 보내는 방법을 알 수 있는 방법이 없습니다. 이것은 UDP가 더 효율적임에도 불구하고 덜 신뢰할 수 있게 만듭니다.

 

UDP 프로토콜을 사용하는 애플리케이션은 안정성 메커니즘을 별도로 구성해야 합니다. 예를 들어, 데이터 전송을 위한 타임오프 기간을 별도로 구성하고 규정된 시간 내에 수신자로부터 신호가 수신되지 않으면 UDP 프로토콜을 사전에 차단할 수 있습니다.

 

 

반응형

 

9. TCP 헤더는 UDP 헤더와 다름

모든 통신 프로토콜을 사용하면 바이트 문자열로 정보를 교환할 수 있습니다. 이러한 "비트 문자열"은 여러 필드로 구성되며 각 필드에는 특정 프로토콜과 관련된 일부 정보가 포함되어 있습니다. 비트 문자열은 헤더와 페이로드의 두 부분으로 구성됩니다. 페이로드에는 메시지의 본문이 포함되며 헤더는 통신 프로토콜의 작동을 식별하고 지원하는 데 사용됩니다. TCP 및 UDP 데이터 전송은 두 가지 종류의 헤더를 활용합니다.

 

우선 TCP는 가변 길이 헤더를 사용하여 안정성을 손상시키지 않으면서 더 복잡한 데이터 전송을 지원합니다. 헤더는 20바이트에서 60바이트 사이일 수 있습니다. 이에 비해 UDP에는 고정 길이 헤더가 있어 빠르고 효율적이지만 다재다능하지 않습니다. UDP 헤더는 8바이트만 가질 수 있습니다.

 

TCP와 UDP 헤더(즉, 해당 필드)도 다릅니다. TCP 헤더에는 시퀀스 번호, 체크섬, ACK 번호, 제어 비트, 슬라이딩 윈도우 정보, 소스 포트, 대상 포트 및 기타 여러 필드에 대해 지정된 필드가 포함되어 있습니다. 반대로 UDP 헤더는 체크섬, 원본 포트, 대상 포트 및 기타 몇 가지 요소에 대한 필드만 포함하므로 더 짧고 간단합니다.

 

10. UDP는 TCP가 지원할 수 없는 라이브 및 실시간 데이터 전송에 적합

본질적으로 신뢰할 수 없는 특성에도 불구하고 UDP는 계속해서 온라인 작업의 필수 요소입니다. 이는 몇 패킷의 손실이 중요하지 않은 실시간 데이터 전송에 이상적이기 때문입니다.

 

예를 들어, 온라인 게임에서 손실된 패킷은 몇 프레임만 건너뛰고 플레이어가 몇 포인트를 잃게 할 수 있습니다. 사용자 데이터그램 프로토콜은 후속 데이터 패킷을 계속 전송하고 사용자는 계속 플레이할 수 있습니다. 그러나 TCP는 단일 패킷이 손실될 경우 이를 인식합니다. 연결을 다시 시작하고 데이터를 다시 전송하여 게임을 정지시킵니다. 전송 제어 프로토콜은 이러한 시나리오에서 사용자 경험에 부정적인 영향을 줄 수 있습니다.

 

TCP는 전송 속도보다 데이터 무결성이 더 중요한 사용 사례에 가장 적합합니다. 파일과 웹 페이지가 손상되지 않은 상태로 도착할 수 있도록 보장하고 삭제된 패킷으로 인해 결과가 흐려지는 실시간 분석 및 콘텐츠 전송 네트워크에도 도움이 될 수 있습니다. 이에 비해 UDP는 다음과 같은 미디어 전송에 적합합니다.

  • 화상 통화: UDP는 초당 30프레임 이상의 재생 빈도로 비디오를 지원할 수 있습니다. 데이터 전송이 너무 빨라서 몇 개의 패킷 손실이 사용자 경험에 영향을 미치지 않습니다.
  • 온라인 게임: TCP의 많은 체크리스트와 균형은 게임 경험에 상당한 영향을 미칩니다. 완벽한 네트워크 조건이 없으면 프레임이 자주 멈추고 TCP를 사용하는 경우 연결이 다시 시작됩니다. 그렇기 때문에 UDP를 권장합니다.

 

 

반응형

 

11. TCP와 UDP의 차이점 요약

  전송 제어 프로토콜(TCP) UDP(사용자 데이터그램 프로토콜)
연결성의 특성 TCP는 연결 지향적입니다. USP는 메시지 지향적이고 연결이 없는 프로토콜입니다.
오류 검사 시간 제한, 체크섬 및 승인을 사용하여 오류를 방지하고 수정합니다. 오류를 방지하기 위해 체크섬만 사용하며 오류를 수정할 수 없습니다.
데이터 전송 순서 TCP 데이터 패킷은 전송 순서를 유지하기 위해 헤더에 시퀀싱 번호가 있습니다. UDP 데이터 패킷은 고정된 순서 없이 도착하며 잘못된 시퀀싱을 감지하거나 수정할 수 없습니다.
속도 및
효율성
대기 시간이 더 길고 더 많은 리소스를 소비합니다. 연결을 더 빠르게 시작하고, 더 짧은 대기 시간으로 데이터를 전달하며, 더 적은 리소스를 소비합니다.
멀티캐스트 및 브로드캐스트 수신 확인과 함께 지점 간 전송에만 이상적입니다. 데이터 패킷이 수신 대기 여부에 관계없이 전체 엔드포인트 그룹에 브로드캐스트하는 데 적합합니다.
흐름 제어 흐름 제어 정보를 활용하여 데이터 전송 속도를 보정하여 수신자에게 부담을 주지 않습니다. 흐름 제어를 사용하지 않고 원본 서버에 적합한 속도로 데이터를 전송합니다.
혼잡 제어 혼잡한 네트워크에서 데이터 패킷이 손실되는 것을 방지하기 위해 혼잡 방지 알고리즘을 구현합니다. 네트워크 정체를 제어할 수 없으며 경로에 너무 많은 트래픽이 있는 경우 패킷을 삭제합니다.
신뢰도 TCP의 가장 큰 장점은 안정성이 높다는 것입니다. 아키텍처는 본질적으로 신뢰할 수 없는 방식으로 설계되었습니다.
머리글 최대 60바이트의 가변 길이 헤더를 사용합니다. 8바이트의 고정 길이 헤더를 사용합니다.
응용분야 이미지, 웹 페이지, 데이터 파일 등을 포함한 데이터 무결성이 전송 속도보다 더 중요한 사용 사례에 적합합니다. 실시간 데이터 전송(예: 미디어)에 이상적이며, 전송 속도가 너무 빨라 몇 개의 패킷 손실이 문제가 되지 않습니다.

 

 

728x90
반응형
그리드형