Computer >> 컴퓨터 >  >> 네트워킹 >> 인터넷

TCP vs UDP — 차이점은 무엇이고, 어떤 프로토콜이 더 빠를까?

컴퓨터 네트워킹을 공부하거나 애플리케이션의 네트워크 설정을 살펴본 적이 있다면, 'TCP'와 'UDP'라는 용어를 한 번쯤은 본 적이 있을 겁니다.

TCP(Transmission Control Protocol, 전송 제어 프로토콜)와 UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)는 인터넷 프로토콜 스위트(internet protocol suite)에 속하는 핵심 프로토콜입니다. 두 프로토콜은 인터넷에서 정보를 주고받는 서로 다른 방식이라 할 수 있습니다.

하지만 이름만 알아서는 어떤 상황에 어느 쪽을 써야 하는지, 왜 하나를 선택해야 하는지 파악하기 어렵습니다.

이 글에서는 컴퓨터 네트워킹의 기본 개념부터 시작해 TCP와 UDP의 차이점, 각각의 활용 사례까지 자세히 살펴보겠습니다.

컴퓨터 네트워킹 기본 개념

TCP와 UDP의 작동 원리를 이해하기 전에, 인터넷이 어떻게 돌아가는지 기본적인 내용부터 짚고 넘어갈 필요가 있습니다.

간단히 말해, 인터넷은 수많은 장치들이 서로 연결된 거대한 네트워크입니다. 스마트폰이든 서버든, 네트워크에 연결된 모든 기기는 인터넷 프로토콜 스위트를 통해 소통합니다.

인터넷 프로토콜 스위트는 기기들이 서로 통신할 수 있게 해주는 다양한 프로토콜, 즉 통신 방식들의 모음입니다. 그중에서도 TCP와 UDP가 대표적인 두 축을 담당하고 있습니다.

TCP vs UDP — 차이점은 무엇이고, 어떤 프로토콜이 더 빠를까?
출처

인터넷에 연결된 모든 기기는 고유한 IP 주소를 가지고 있습니다. 그리고 두 기기가 인터넷으로 통신할 때는 거의 항상 TCP나 UDP 중 하나를 사용하게 됩니다.

두 프로토콜의 간단한 비교는 아래와 같습니다.

TCP vs UDP — 차이점은 무엇이고, 어떤 프로토콜이 더 빠를까?
출처

인터넷이 작동하는 원리를 좀 더 폭넓게 이해하고 싶다면, 5분짜리 개요 영상을 참고해보세요.

TCP란 무엇일까?

TCP(Transmission Control Protocol)는 온라인에서 가장 널리 쓰이는 네트워킹 프로토콜입니다. 매우 안정적이어서 웹서핑(HTTP), 이메일 전송(SMTP), 파일 전송(FTP) 등 거의 모든 영역에서 활용됩니다.

TCP는 한 기기가 보낸 데이터가 반드시 온전하게 수신되어야 하는 상황에서 사용됩니다.

예를 들어 웹사이트에 접속할 때, 페이지를 렌더링하는 데 필요한 텍스트, 이미지, 코드가 빠짐없이 도착하는 것을 보장하는 것이 바로 TCP입니다. TCP가 없다면 이미지나 텍스트가 누락되거나 순서가 뒤섞여 페이지가 깨져 보일 수 있습니다.

TCP는 연결 지향형(connection-oriented) 프로토콜입니다. 즉, 데이터를 전송하기 전에 두 기기 간 연결을 먼저 설정하고, 전송 과정 내내 그 연결을 유지합니다.

두 기기 간 연결을 맺기 위해 TCP는 '3-way 핸드셰이크(three-way handshake)'라는 방식을 사용합니다.

TCP vs UDP — 차이점은 무엇이고, 어떤 프로토콜이 더 빠를까?
출처

예를 들어 여러분이 지금 이 글을 읽고 있다면, 먼저 여러분의 기기가 freeCodeCamp News 서버로 SYN(Synchronize Sequence Number)이라는 메시지를 보냈습니다.

그러면 서버는 SYN-ACK라는 확인 메시지를 되돌려줍니다.

기기가 서버로부터 SYN-ACK를 받으면 ACK 확인 메시지를 다시 보내며, 이로써 연결이 성립됩니다.

연결이 한 번 성립되면 TCP는 모든 데이터가 전송되는 것을 보장합니다.

다시 예시로 돌아가면, 3-way 핸드셰이크가 끝난 후 News 서버는 여러분의 웹 브라우저가 이 글을 렌더링하는 데 필요한 모든 데이터를 전송하기 시작합니다.

모든 기기는 데이터를 인터넷으로 보내기 전에 작은 패킷(packet) 단위로 나눕니다. 그리고 받는 쪽에서는 이 패킷들을 다시 조립해야 합니다.

따라서 freeCodeCamp News 서버가 HTML, CSS, 이미지 등의 코드를 전송할 때도 데이터를 작은 패킷들로 쪼개 보내고, 여러분의 기기는 이 패킷들을 재조립해 글과 이미지를 화면에 렌더링합니다.

TCP는 이 패킷들이 모두 도착하는 것을 보장합니다. 중간에 패킷이 유실되면, 기기는 서버에게 누락된 데이터가 있음을 알리고 서버는 해당 패킷을 다시 보냅니다.

글을 렌더링하는 데 필요한 모든 데이터를 받고 나면, TCP는 3-way 핸드셰이크와 유사한 방식(FIN과 ACK 패킷 사용)으로 두 기기 간 연결을 자동으로 종료합니다.

UDP란 무엇일까?

UDP(User Datagram Protocol) 역시 인터넷 프로토콜 스위트를 구성하는 주요 프로토콜 중 하나입니다. TCP보다는 신뢰성이 떨어지지만 훨씬 단순하다는 특징이 있습니다.

UDP는 실시간 영상·음성처럼 일부 데이터 손실이 허용되는 환경이나, 온라인 게임처럼 속도가 결정적으로 중요한 상황에서 사용됩니다.

UDP도 TCP와 마찬가지로 데이터를 주고받는 데 쓰이지만, 몇 가지 핵심적인 차이가 있습니다.

첫째, UDP는 비연결형(connectionless) 프로토콜입니다. TCP처럼 3-way 핸드셰이크로 사전에 연결을 맺는 절차가 없습니다.

둘째, UDP는 모든 데이터가 성공적으로 전달되는 것을 보장하지 않습니다. 데이터는 수신 대기 중인 기기로 일단 발송되지만, 중간에 일부가 유실되어도 신경 쓰지 않습니다. 이런 특성 때문에 UDP는 '발사 후 잊기(fire-and-forget)' 방식이라고도 불립니다.

비유하자면 TCP는 두 사람 사이의 대화와 같습니다. A가 B에게 대화를 요청하면, B가 좋다고 답하고, A가 동의한 후에야 두 사람이 말을 시작합니다.

반면 UDP는 확성기를 든 시위자에 가깝습니다. 주의를 기울이는 사람들은 대부분의 내용을 들을 수 있지만, 주변 모두가 들었는지, 심지어 듣고 있는지조차 보장할 수 없습니다.

TCP vs UDP — 차이점은 무엇이고, 어떤 프로토콜이 더 빠를까?
UDP vs TCP — 출처

TCP와 UDP 중 무엇이 더 빠를까?

일반적으로 더 빠른 프로토콜은 UDP입니다.

UDP는 구조가 훨씬 단순해서 데이터를 보내기 전에 연결을 설정하거나, 모든 데이터가 도착했는지 검증하지 않습니다. 요청하는 기기로 데이터를 계속 뿌리기만 하고, 상대방이 연결을 끊거나 보낼 데이터가 없어질 때까지 전송을 반복합니다.

병으로 물을 한 모금씩 마시는 것과 호스로 물을 벌컥벌컥 마시는 것의 차이라고 생각하면 됩니다. 둘 다 갈증은 해소되지만, 후자는 셔츠가 흠뻑 젖을 가능성이 크겠죠.

TCP vs UDP — 차이점은 무엇이고, 어떤 프로토콜이 더 빠를까?
호스는 아니지만 꽤 정확한 비유입니다. 덧붙여 TCP 병은 물을 마시는 내내 "물 받았어?"라고 계속 묻는다고 상상해보세요. 출처

하지만 빠르다고 해서 UDP가 모든 면에서 더 나은 프로토콜이라는 뜻은 아닙니다. 특정 상황에서 더 적합하다는 의미일 뿐입니다.

앞서 언급했듯이, 모든 패킷이 순서대로 빠짐없이 도착해야 하는 상황에서는 TCP가 필수입니다. TCP가 없다면 웹 자체가 제 기능을 하지 못합니다.

TCP는 연결 설정 과정과 패킷 누락 검사 때문에 느려 보이지만, 그래도 여전히 놀랍도록 빠릅니다. YouTube나 Netflix 같은 사이트도 HTTP 기반이기 때문에 TCP로 데이터를 전송합니다.

게다가 TCP는 버퍼링을 지원하기 때문에, 시청하는 동안 브라우저가 미리 데이터를 추가로 불러와 끊김 없는 재생과 구간 건너뛰기를 가능하게 합니다.

반면 실시간 영상·음성 통화나 온라인 게임처럼 속도가 데이터 손실보다 중요한 경우에는 UDP가 더 나은 선택입니다.

Google Meet이나 Zoom으로 통화할 때 영상과 음성은 UDP로 전송됩니다. 패킷이 일부 유실되더라도 약간의 끊김이나 화면·소리 잘림 정도로 표현될 뿐입니다.

온라인 게임을 즐긴다면 TCP의 '모든 패킷 도착 보장'이 게임에 딱 맞을 것 같다고 생각할 수 있습니다. 하지만 실제로는 TCP가 수행하는 검증과 재전송 작업이 지연(latency)을 유발합니다.

그래서 게임 개발자들은 플레이어 입력과 상태를 최대한 정확하게 유지하기 위한 또 다른 영리한 기법들을 활용합니다. 온라인 게임에 UDP가 선호되는 이유가 궁금하다면 관련 아티클을 참고해보세요.

마무리

이 글이 TCP와 UDP 사이의 미묘한 차이를 이해하는 데 도움이 되었기를 바랍니다. 누군가 어느 쪽이 더 빠르냐고 물으면 이렇게 답해주세요. "UDP가 더 빠릅니다, 하지만…"