TCP와 UDP
네트워크를 공부하다 보면 가장 자주 접하게 되는 프로토콜이 TCP와 UDP입니다.
보통 TCP는 안정적인 전송 방식, UDP는 빠른 전송 방식이라고 배우고 넘어가는 경우가 많습니다.
하지만 네트워크는 글로만 이해하는 것보다 실제 동작을 눈으로 확인할 때 훨씬 더 쉽게 이해할 수 있는법!
그래서 저는 TCP와 UDP가 실제 네트워크 환경에서 어떻게 다르게 동작하는지 확인하기 위해 간단한 프로그램을
바이브 코딩을 통해서 직접 만들어보고
Loss, Delay, Jitter, Reorder와 같은 네트워크 품질 저하 상황을 가정하여
TCP와 UDP가 각각 어떤 차이를 보이는지 실험해보았습니다.
1. 개념 정리
패킷 전송 과정에서 네트워크 품질을 저하시키는 대표적인 현상들의 개념을 알고 가면 좋습니다.
Loss
전송 과정에서 일부 패킷이 수신 측에 도착하지 못하고 사라지는 현상.
TCP 환경에서 재전송과 순서 보장으로 인한 지연 증가 가능성.
UDP 환경에서 프레임 손실, 화면 튐, 영상 스킵 발생 가능성.
Delay
송신한 데이터가 수신 측에 도착하기까지 걸리는 시간 증가 현상.
TCP 환경에서 전체 스트림 지연 및 재생 시작 지연 발생 가능성.
UDP 환경에서 재생 시점 지연 및 실시간성 저하 가능성.
Jitter
패킷마다 도착 시간 차이가 일정하지 않고 흔들리는 현상.
TCP 환경에서 지연 변동 누적과 재생 불안정 가능성.
UDP 환경에서 프레임 간 간격 불균형, 화면 튐, 스킵 발생 가능성.
Reorder
먼저 전송한 패킷보다 나중에 전송한 패킷이 먼저 도착하는 순서 뒤바뀜 현상.
TCP 환경에서 순서 복구 과정에 따른 head-of-line blocking 발생 가능성.
UDP 환경에서 프레임 조립 지연, 늦은 프레임 폐기, 재생 순서 흔들림 가능성.
2. 실험 방법
본 실험은 sender - emulator - receiver 구조로 진행하였습니다.
sender는 영상을 송신하고, emulator는 중간에서 나쁜 네트워크 환경을 가상으로 만든 뒤,
receiver는 영상을 수신하여 화면과 지표를 확인하는 방식으로 구성했습니다.
같은 영상 스트림에 대해 TCP와 UDP를 각각 적용하고,
각 실험에서 loss, delay, jitter, reorder 값을 조절하여 차이를 관찰했습니다.
3. 실험 영상 및 관찰 결과
3-1. Loss 실험
TCP loss 20%
TCP loss 20에서는 재전송요청으로 약간의 레이턴시를 보여주고 있지만 tcp특성상 안정적으로 영상이 재생되었고
크게 프레임이 사라지거나 하는 현상은 없었습니다.
TCP loss 60%
UPD loss 20%
UDP는 loss분에 대해 재전송 요청을 하지않고 받은 것에서 완성된 프레임만 보여주기 때문에 영상이 이어지지 않고
갑자기 다른 프레임으로 건너뛰는 현상이 자주 발생하는 것을 볼 수 있었습니다.
TCP UDP loss 결과 비교정리
TCP는 손실이 발생해도 데이터를 다시 맞춰 전달하려는 특성 때문에 화면이 완전히 깨지기보다는
멈춤과 지연 증가로 나타났습니다.
반면 UDP는 재전송이 없기 때문에 일부 프레임이 통째로 빠지거나 화면이 튀는 형태로 나타났습니다.
3-2. Delay 실험
TCP Delay 3000ms
UDP Delay 3000ms
TCP UDP Delay 결과 비교정리
TCP UDP 모두 delay를 줬을 때 로컬환경이여서 끊기지 않고
delay를 준만큼 지연되서 영상이 부드럽게 재생되었습니다.
하지만 현실에서는
TCP는 지연이 커질수록 전체 재생 시작 시점과 평균 레이턴시가 크게 증가하고
UDP는 TCP에 비해 상대적으로 실시간성은 유지하려는 모습을 보이는 대신 늦은 프레임이 스킵되는 경우가 나타납니다.
3-3. Jitter 실험
TCP Delay 1000ms jitter1000ms
TCP 특성상 패킷들이 랜덤으로 늦게와도 멈출지언정 프레임을 버리지 않고 기다렸다가 뿌려줘서
약간의 멈춤과 지연이 나타나지만 영상이 이어져서 재생되는걸 볼 수 있었습니다. (프레임을 버리지 않음을 눈으로 확인)
UDP jitter delay 1000ms jitter 1000ms
udp jitter는 제 시간안에 패킷이 오지 않으면 프레임을 버리므로
영상과 같이 프레임 드랍이 많이 심해 영상의 순간이동 현상이 눈에 띄게 보이는 걸 확인 할 수 있었습니다.
TCP UDP Jitter 결과 비교정리
TCP는 지터가 발생해도 순서를 맞춰 전달하려고 하기 때문에
화면이 갑자기 멈칫하거나 전체 지연이 흔들리는 형태가 나타났고,
UDP는 패킷 도착 간격이 불규칙해지면서 프레임 간 간격이 어긋나고,
화면이 튀거나 자연스럽지 않게 재생되는 모습을 볼 수 있었습니다.
3-4. Reorder 실험
TCP Reorder 50%
TCP Reorder은 패킷 순서가 뒤죽박죽 와도 TCP특성상 모아서 순서를 재조립해서 앱에 넘겨주기 때문에
프레임드랍이 없고 아주 잠깐의 재조립 레이턴시만 있을 뿐 영상이 부드럽게 재생되는걸 볼 수 있었습니다.
UDP Reorder 50%
UDP reorder 0.5 조건을 적용했을 때, 예상과 달리 화면이 완전히 깨지거나 심하게 끊기지는 않았습니다.
이는 현재 구현에서 reorder가
패킷을 크게 뒤섞기보다 일부 패킷에 추가 지연을 주는 방식으로 모델링되어 있기 때문이고,
UDP 수신 측도 같은 프레임의 청크를 다시 조립하고 일정 시간의 playout buffer를 둬서
약간 늦게 도착한 프레임을 흡수하도록 설계되어 있기 때문입니다.
TCP UDP Reorder 결과 비교정리
따라서 reorder만 단독으로 적용한 경우에는 TCP와 UDP의 차이가 매우 크게 드러나지 않았고,
UDP에서도 비교적 부드러운 재생이 가능했습니다.
다만 이는 UDP가 reorder에 완전히 강하다는 뜻이 아니라,
현재 실험 환경이 로컬 환경이었고
애플리케이션 레벨의 조립 및 재생 버퍼가 재정렬 효과를 상당 부분 완충했기 때문에
손실이 거의 없었던 것입니다.
4. 최종 정리
이번 실험을 통해 기존에 이론으로만 알고 있던 TCP와 UDP의 차이를
영상 스트리밍 환경에서 더 구체적으로 확인할 수 있었습니다.
TCP는 신뢰성이 높고 순서를 보장하기 때문에
데이터가 손실되거나 재정렬되는 상황에서도 최종적으로는 안정적인 전달이 가능했습니다.
하지만 그 대가로 재전송과 순서 복구 과정에서 지연이 증가하고,
화면이 멈추는 현상이 더 크게 나타난 걸 볼 수 있었습니다.
반면 UDP는 재전송과 순서 보장이 없기 때문에 지연은 상대적으로 낮고 실시간성에 유리했지만,
손실이나 재정렬이 발생했을 때 프레임 손실, 화면 튐, 프레임 스킵이 더 뚜렷하게 나타났습니다.
즉 이번 실험을 통해 확인한 핵심은,
TCP는 신뢰성 중심, UDP는 실시간성 중심이라는 기존 지식이 실제 영상 스트리밍에서도 그대로 드러난다는 점입니다.
다만 실제 서비스 품질은 프로토콜 자체만으로 결정되지 않고,
재생 버퍼, timeout, 프레임 drop 정책 같은 애플리케이션 설계에도
큰 영향을 받는다는 점을 함께 확인할 수 있었습니다.
결론적으로 TCP는 안정성과 정확성이 중요한 환경에 적합하고,
UDP는 실시간 반응이 중요한 환경에 적합하다는 점을 이번 실험을 통해 눈으로 직접 체감할 수 있었습니다!
'Network' 카테고리의 다른 글
| BGP Hijacking (0) | 2026.05.21 |
|---|---|
| CML Teleport에 등록하기 (0) | 2026.05.15 |
| AWS Hyperplane (0) | 2026.03.16 |
| Stateful & Stateless in Networking and Security (0) | 2026.03.13 |
| CGNAT (0) | 2026.02.11 |