Jake의 알쓸신네

[알쓸신네#4] 넷플릭스 로딩의 비밀, '꼼꼼이' TCP와 '스피드광' UDP의 숨 막히는 대결!

person GOEST지기 | calendar_today 2025. 10. 14.

넷플릭스 로딩의 비밀, '꼼꼼이' TCP와 '스피드광' UDP의 숨 막히는 대결!



안녕하세요 Jake 입니다아 !
😎.
오늘은 실시간 스트리밍 서비스에 대해서 알아볼거야!

다들 이런 경험 한 번쯤 있지? 주말 저녁, 치킨 시켜놓고 넷플릭스 딱 틀었는데... 결정적인 순간에 어김없이 등장하는 로딩 동그라미! 😫 바로 버퍼링 말이야. 이럴 때마다 치킨 맛도 뚝 떨어지고, 맥이 탁 풀리잖아.

그런데 이 지긋지긋한 버퍼링이 사실은 우리 눈에 보이지 않는 네트워크 세상의 두 프로토콜, TCPUDP의 치열한 노력 때문이라면 믿을래? 오늘은 팝콘과 치킨 맛을 좌우하는 스트리밍의 비밀, TCP와 UDP에 대해 쉽고 재밌게 파헤쳐 볼게! 준비됐어? 🚀

Jake😒 : 아래 버퍼링을 사진을 기억하는 사람이 있을까요 .. 진짜 예전에 이 플레이어 사용할때 아마 윈도우 플레이어

출처 : cafe.daum.net/truepicture/Qt7/1138277?listURI=%2Ftruepicture%2FQt7


꼼꼼한 배송의 달인, TCP 씨 📦

먼저 TCP(Transmission Control Protocol)부터 만나보자. 이 친구는 한마디로 '엄청 꼼꼼한 택배 기사님' 같아. 물건(데이터) 하나를 보내더라도 절대 대충 보내는 법이 없지.

TCP의 가장 큰 특징은 바로 연결 지향성신뢰성이야.

  • 연결 지향성 (Connection-Oriented): TCP는 데이터를 보내기 전에 상대방(서버)에게 "지금
    데이터 보내도 될까요?"하고 먼저 물어보고, "네, 보내세요!"라는 답을 받아야만 전송을 시작해. 마치 택배를 보내기 전에 받는 사람과 통화해서 받을 수 있는지 확인하는 것과 같아. 이 과정을 전문 용어로 '3-way handshake'라고 불러.

    Jake 😁:  3-way handshake 과정을 잘 알게되면 나중에 트러블 슈팅 과정에서 어느 곳 에서 장애가 발생했는지 알수가 있어 TCP DUMP 라고도 하지 덤프를 뜯어서 현재 장비 그리고 호스트간 연결 세션이 정상적으로 수립했는지를 알수있기 때문에 3- way handshake 과정은 추가로 글을 올리도록 할게 ! 
  • 신뢰성 (Reliability): 만약 택배 상자가 10개인데 3번 상자가 중간에 사라졌다고 해봐. 꼼꼼한 TCP 기사님은 "어? 3번 상자 어디 갔죠? 다시 보내주세요!"라고 요청해서 10개를 순서대로 완벽하게 전달해줘. 데이터가 중간에 사라지거나 순서가 뒤바뀌는 걸 막아주는 재전송순서 보장 기능 덕분이지.

이렇게 빈틈없이 데이터를 전달해야 하는 이메일, 파일 다운로드, 온라인 뱅킹 같은 서비스들이 바로 이 TCP를 사용해. 데이터 하나라도 빠지면 큰일 나니까! ✨


일단 던지고 본다! 스피드광 UDP 씨 🏍️

반면에 UDP(User Datagram Protocol)는 정반대의 성격을 가졌어. 이 친구는 '일단 달리고 보는 스피드광 퀵서비스 기사님'이야.

UDP의 핵심은 바로 속도!

  • 비연결 지향성 (Connectionless): UDP는 TCP처럼 "보내도 될까요?" 하고 묻는 과정이 없어. 그냥 주소 보고 최대한 빨리 데이터를 던지고 보는 스타일이지.
  • 낮은 신뢰성 (Unreliable): 확인 절차가 없는 만큼 속도는 빠르지만, 중간에 데이터 몇 개가 사라지거나 순서가 뒤바뀌어도... "어쩔 수 없지 뭐~" 하고 그냥 넘어가. 재전송? 그런 거 없어. 😂

아니, 이렇게 무책임한 친구를 어디다 쓰냐고? 바로 실시간이 생명인 곳에서 이 '스피드'가 엄청난 장점이 돼. 라이브 스포츠 중계나 온라인 게임, 영상 통화를 생각해 봐. 0.1초 늦게 화면이 보이는 것보다, 중간에 화질이 살짝 깨지더라도 현재 상황을 빠르게 보는 게 훨씬 중요하잖아? 바로 이럴 때 UDP가 대활약하는 거야!


그래서 넷플릭스는 누굴 쓸까? 🤔 버퍼링의 진짜 이유

자, 그럼 오늘의 주인공 넷플릭스는 TCP와 UDP 중 누굴 선택했을까? 정답은... 둘 다, 그리고 상황에 따라 다르다! 야.

우리가 넷플릭스를 볼 때 마주하는 버퍼링은 사실 꼼꼼한 TCP 씨의 노력의 증거라고 할 수 있어. 동영상은 수많은 데이터 조각으로 이루어져 있는데, TCP가 이 조각들을 순서대로, 빠짐없이 우리 컴퓨터로 가져와 미리 쌓아두거든. 이 임시 저장 공간을 '버퍼(Buffer)'라고 하고, 데이터를 채우는 과정을 '버퍼링'이라고 하는 거지.

만약 인터넷 속도가 느려지면, TCP는 약속된 데이터 조각이 다 도착할 때까지 끈기 있게 기다려줘. 바로 이 순간! 우리는 로딩 동그라미를 보게 되는 거야. "고객님, 지금 7번 영상 조각이 안 와서요... 잠시만요!" 하고 우리를 위해 애쓰고 있는 상황인 셈이지.

물론 요즘 넷플릭스나 유튜브 같은 똑똑한 서비스들은 여기서 한 발 더 나아가. 처음 영상을 로딩할 땐 안정적인 TCP를 쓰다가, 일단 재생이 시작되면 속도가 중요한 UDP를 기반으로 한 자체 프로토콜을 섞어 쓰는 방식을 사용해. 실시간으로 데이터를 빠르게 받으면서, 중간에 데이터가 살짝 유실돼도 티 안 나게 화질을 잠시 낮추거나 자체 기술로 복구하는 거지. 사용자 입장에서는 영상이 아예 멈추는 것보다 화질이 잠~깐 안 좋아지는 게 훨씬 낫잖아? 😉


🚀 엔지니어를 위한 TMI (Tech More Inside)

자, 이제 좀 더 깊이 들어가 볼까? 전공자나 현직 엔지니어라면 주목!

  • TCP 3-Way Handshake의 실체: 클라이언트가 서버에 접속 요청을 보내는 SYN 패킷을 보내면, 서버는 요청을 수락한다는 SYN+ACK 패킷으로 응답해. 마지막으로 클라이언트가 다시 ACK 패킷을 보내면 비로소 연결이 확립(ESTABLISHED)되지. 이 과정에서 포트 번호가 사용되는데, 주로 서버 쪽은 HTTP(80), HTTPS(443) 같은 Well-Known Port를 사용하고 클라이언트는 임시 포트인 Ephemeral Port를 사용해.
  • 흐름 제어 (Flow Control) & 혼잡 제어 (Congestion Control): TCP는 슬라이딩 윈도우(Sliding Window) 메커니즘을 사용해서 한 번에 보낼 데이터의 양(윈도우 크기)을 조절해. 수신 측의 처리 속도에 맞춰 데이터 양을 조절하는 것이 흐름 제어, 네트워크 전체의 혼잡 상황을 고려해 전송량을 조절하는 것이 혼잡 제어야. 이 덕분에 네트워크가 터져나가지 않고 안정적으로 유지되는 거지.
  • UDP 위에 올라탄 똑똑한 프로토콜, QUIC: 최근 구글이 개발한 QUIC(Quick UDP Internet Connections) 프로토콜이 대세로 떠오르고 있어. 이름처럼 UDP를 기반으로 하지만, TCP의 신뢰성 있는 데이터 전송정교한 혼잡 제어 기능, 그리고 보안(TLS 1.3)까지 통합했지. TCP의 3-way-handshake보다 연결 설정 시간이 훨씬 짧아서 초기 로딩 속도가 매우 빨라. 지금 우리가 보는 유튜브 영상 대부분이 이 QUIC 위에서 돌아가고 있다는 사실!

    Jake😊 : QUIC은 UDP위에 구축된 다기능 전송 계층으로 기존 TCP 대신 UDP를 기반으로 설계된 전송 계층 프로토콜입니다. 하지만 단순한 UDP가 아니라, 그 위에 연결 관리, 흐름 제어, 오류 복구 , 암호화 기능을 직접 구현하여 TCP의 기능을 대체해 TCP는 " 안녕? 나랑 연결할래?" -> "그래, 하자!" -> "그럼 시작!" 이렇게 3단계를 거치는데 QUIC은? " 나왔어, 바로시작하자!" 그러니까 속도가 엄청나지 그리고 끊길 상황에서도 TCP는 어라..? 다시 처음부터 시작하자 QUIC은 괜찮아, 이어서 계속할게! 라는것도 있고 TCP와 QUIC은 보안을 따로챙기는 것에서 처음부터 암호화를 장착하기도 하지 ..

자, 오늘 이야기 어땠어? 정리해보자면, 꼼꼼하고 안정적인 TCP는 버퍼링을 통해 우리에게 완벽한 영상을 보여주려 하고, 빠르고 효율적인 UDP는 약간의 손실을 감수하더라도 실시간성을 지키려고 해. 넷플릭스가 끊기는 건, 어쩌면 TCP가 내 소중한 영상 데이터를 하나라도 놓치지 않으려고 고군분투하고 있다는 증거이기도 한 거지!

이제 버퍼링 화면을 보더라도 "아, 내 데이터를 지키려고 TCP가 열일하고 있구나!" 하고 조금은 너그러운 마음으로 기다려줄 수 있겠지? 

 

auto_awesome

'Jake의 알쓸신네' 카테고리의 다른 글

[알쓸신네#6] 퍼플렉시티, 배그, 삼성월렛까지 멈춘 날! 🌐 AWS 대란의 전말

2025.10.20

[알쓸신네#5] 랜선 하나로 전원까지 해결? UTP 케이블의 놀라운 진화와 PoE의 모든 것! 😎

2025.10.16

[알쓸신네#3] 📮모든 통신의 시작과 끝! 인터넷 세상의 신분증 '엔드 디바이스' 파고들기

2025.10.13

[알쓸신네#2] 💻 스마트 정부.. G드라이브 8년치 데이터 증발 실화?

2025.10.02
더 보기 →