빠르게 보내기, UDP
TCP는 받았는지 일일이 확인하고, 안 오면 다시 보내요. 덕분에 정확하지만 그만큼 기다려요. 그런데 영상통화처럼 0.1초가 아까운 순간엔, 한두 조각 빠지더라도 일단 빠른 게 나아요. 그럴 때 쓰는 게 UDP예요.
확인을 생략해요
지난 강의 TCP를 떠올려봐요.
조각이 도착할 때마다
받았다고 확인(ACK)을 주고받았죠.
그 한마디 덕분에 정확하지만,
주고받는 만큼 시간이 들어요.
UDP는 생각을 바꿔요.
확인은 됐고, 일단 빠르게.
받았는지 묻지 않고
조각을 연달아 그냥 쏴버려요.
보내기 버튼을 눌러 조각을 연달아 쏴봐요. TCP와 달리 확인(ACK)을 기다리지 않아요.
확인을 안 기다리니
조각이 쉴 새 없이 나가요.
같은 시간에 훨씬 많이,
훨씬 빠르게 보낼 수 있죠.
대신 한 가지를 포기했어요.
무엇이 도착했는지
UDP는 신경 쓰지 않아요.
그럼 도중에 조각이 빠지면
어떻게 될까요?
몇 개 빠져도 그냥 가요
TCP라면 빠진 조각을
다시 보내달라고 했을 거예요.
UDP는 그러지 않아요.
조각 하나가 길에서 빠져도
멈추지 않고 그냥 다음으로 가요.
빠진 건 빠진 채로 두는 거죠.
무책임해 보여도,
빠진 한두 개를 메우려고
전체를 멈추는 게 더 손해인 경우가 있어요.
보내기를 눌러봐요. 어떤 조각은 도중에 빠지지만, UDP는 재전송 없이 그냥 끝까지 가요.
조각 몇 개가 빠졌는데도
전송은 끊김 없이 끝났어요.
받는 쪽엔 구멍이 좀 생겼지만,
흐름은 한 번도 멈추지 않았죠.
바로 이게 UDP의 성격이에요.
완벽함보다 멈추지 않음.
그런데 빠진 게 있는데
정말 괜찮은 걸까요?
어디에 쓰는지를 보면 답이 나와요.
언제 쓰나요
UDP가 어울리는 곳은
늦으면 안 되는 일이에요.
온라인 게임을 떠올려봐요.
한 박자 늦은 위치 정보는
다시 받아봐야 이미 지나간 일이죠.
영상통화도, 생방송도 같아요.
지금 이 순간이 중요하지,
조금 전 빠진 한 조각을
다시 받는 건 의미가 없어요.
예시를 눌러 바꿔봐요. 게임, 영상통화, 생방송 모두 늦으면 안 되니 UDP가 어울려요.
세 경우 모두 공통점이 있어요.
조금 빠지는 것보다
늦는 게 더 치명적이에요.
게임에서 화면이 멈추거나,
통화 목소리가 끊겨 밀리면
그게 더 답답하잖아요.
UDP는 그 답답함을 피해요.
조금 거칠어도, 멈추지 않고
지금을 흘려보내는 쪽을 택하죠.
TCP와 UDP를 견줘봐요
둘은 누가 낫고 못하고가 아니에요.
목적이 다를 뿐이죠.
TCP는 정확함을 먼저 챙겨요.
확인하고, 다시 보내고, 줄 세우고.
그만큼 조금 더 기다려요.
UDP는 빠름을 먼저 챙겨요.
확인 없이 쏘고, 빠진 건 그냥 두고.
그만큼 거칠 수 있어요.
무엇이 더 중요하냐가 선택을 갈라요.
두 모드를 눌러 비교해봐요. TCP는 정확하지만 기다리고, UDP는 거칠어도 빨라요.
비교해보니 분명하죠.
빠짐없이 정확해야 하는 글이나 파일은
TCP에게 맡겨요.
지금 이 순간이 생명인
게임과 통화는 UDP에게 맡기고요.
인터넷이 둘 다 갖춘 건
세상에 두 종류의 급함이
다 있기 때문이에요.
맞는 도구를 골라 쓰면 돼요.
정리해볼까요
한 줄로 모으면 이래요.
UDP는 확인(ACK)을 생략하고
조각을 빠르게 연달아 쏴요.
몇 개 빠져도 재전송 없이 그냥 가요.
그래서 늦으면 안 되는 일,
게임과 영상통화와 생방송에 잘 맞아요.
정확함이 먼저면 TCP,
빠름이 먼저면 UDP.
목적이 다른 두 약속이에요.
핵심을 차례로 눌러 되짚어봐요. (확인 생략 → 빠르게 연달아 → 몇 개 빠져도 그냥 → 게임·통화·방송에)
이제 TCP와 UDP를 둘 다 알았어요.
정확함이 중요하면 TCP,
빠름이 중요하면 UDP.
인터넷은 이렇게
상황에 맞는 약속을 골라 써요.
조각을 어떻게 보낼지는 정리됐어요.
그런데 그 조각이 향하는 주소,
수많은 컴퓨터 중 딱 한 곳을
찾는 이야기는 다음으로 이어져요.