seegongsik
내 단어장
네트워크

믿을 수 있게 보내기, TCP

보낸 편지가 도중에 한 장 빠지거나, 뒷장이 먼저 도착하면 어떡하죠? 인터넷에서 패킷도 그래요. 빠지기도 하고, 순서가 뒤바뀌기도 해요. 그래도 글이 멀쩡히 도착하는 건 TCP 덕분이에요.

01

빠짐없이, 정확히

지난 강에서 봤듯이
데이터는 작은 조각, 패킷이 돼서
여러 길을 따로따로 건너가요.
그런데 가는 길은 완벽하지 않아요.
조각 하나가 도중에 빠질 수도,
뒤 조각이 먼저 도착할 수도 있어요.
그래도 받는 쪽에는
하나도 안 빠지고, 순서대로 닿아야 해요.
그 일을 맡은 약속이 TCP예요.

두 카드를 눌러 TCP의 약속을 켜봐요

TCP가 약속하는 두 가지를 눌러봐요. 하나도 안 빠지게, 그리고 순서대로.

목표는 분명해졌어요.
빠짐없이, 순서대로.
말은 쉽지만,
길이 완벽하지 않으니 쉽지 않아요.
TCP는 이걸
세 가지 작은 습관으로 풀어요.
받았다고 알려주기,
안 오면 다시 보내기,
번호 보고 순서 맞추기.
하나씩 따라가봐요.

02

받았다고 알려요

첫 번째 습관은 확인이에요.
받는 쪽은 조각이 도착할 때마다
'잘 받았어요'라고 짧게 답해요.
이 답을 확인 신호, ACK라고 불러요.
택배를 받고 수령 확인을 누르는 것과
똑같아요.
보낸 쪽은 ACK가 와야
그 조각이 무사히 닿은 걸 알아요.
ACK가 없으면, 아직 모르는 거죠.

보낸 쪽받는 쪽
도착한 패킷을 눌러 확인(ACK)을 돌려보내요

도착한 패킷을 눌러 '받았어요' 확인(ACK)을 돌려보내요. ACK가 돌아가면 보낸 쪽이 안심해요.

조각마다 ACK가 오가니
보낸 쪽은 무엇이 닿았는지 알게 됐어요.
주고받는 말이 하나 더 늘어
조금 느려 보일 수도 있어요.
하지만 이 한마디 덕분에
빠진 조각을 콕 집어낼 수 있어요.
그럼 ACK가 안 온 조각은
어떻게 해야 할까요?
답은 간단해요. 다시 보내요.

03

안 오면 다시 보내요

두 번째 습관은 재전송이에요.
보낸 쪽이 한참을 기다려도
어떤 조각의 ACK가 안 오면,
'아, 저건 길에서 빠졌구나' 하고
그 조각을 똑같이 다시 보내요.
받는 쪽은 다시 온 조각을 받고
이번엔 ACK를 돌려줘요.
이렇게 빠진 조각을 메우니
결국 하나도 안 빠지게 돼요.

빠진 조각(빈자리)을 눌러 다시 보내요

확인(ACK)이 안 돌아온 조각을 눌러 다시 보내요. 다시 보낸 조각이 도착하면 빈자리가 메워져요.

재전송 덕분에
빠진 조각이 더는 없어요.
이제 받는 쪽 손에는
모든 조각이 다 모였어요.
그런데 한 가지가 남았어요.
조각들은 따로따로 길을 건너서
도착한 차례가 뒤죽박죽이에요.
2번보다 5번이 먼저 와 있기도 해요.
그럼 이 순서를 어떻게 바로잡을까요?

04

번호 보고 순서를 맞춰요

세 번째 습관은 순서 맞추기예요.
TCP는 조각마다 번호를 붙여 보내요.
1번, 2번, 3번 하고요.
도착 차례가 뒤바뀌어도 괜찮아요.
받는 쪽이 번호를 보고
작은 번호부터 차례로 줄을 세우거든요.
5번이 먼저 와도
2번 자리를 비워두고 기다려요.
번호 순으로 다 채워지면
원래 글이 그대로 되살아나요.

뒤섞여 도착
번호 순으로 정렬
1
.
2
.
3
.
4
.
번호 순(1, 2, 3, 4)으로 눌러 줄을 세워요

뒤섞여 도착한 조각을 번호 순(1, 2, 3, 4)으로 눌러 줄을 세워요. 다 맞추면 원래 글이 살아나요.

번호대로 줄을 세웠더니
뒤섞였던 조각이
원래 글로 딱 맞춰졌어요.
빠진 건 다시 받아 메웠고,
순서는 번호로 바로잡았어요.
받는 사람 눈에는
패킷이 빠진 적도, 뒤바뀐 적도 없는 것 같죠.
그 모든 수고를
TCP가 뒤에서 조용히 해준 거예요.

05

정리해볼까요

한 줄로 모으면 이래요.
패킷은 빠지거나 순서가 뒤바뀔 수 있어요.
TCP는 받으면 확인(ACK)을 보내고,
안 오면 다시 보내고(재전송),
번호로 순서를 맞춰요.
그래서 받는 쪽엔 늘
빠짐없이, 순서대로 도착하죠.
빠르기보다 믿음직함, 그게 TCP의 약속이에요.

핵심을 차례로 눌러 되짚어봐요

핵심을 차례로 눌러 되짚어봐요. (빠짐/뒤섞임 → 받으면 ACK → 안 오면 재전송 → 번호로 순서 맞춤)

TCP는 안전을 위해
확인하고, 다시 보내고, 줄을 세워요.
그만큼 조금 더 기다리는 셈이죠.
그런데 그 기다림이 아까운 경우도 있어요.
목소리 통화나 게임처럼
조금 빠지더라도 빠른 게 나은 일이요.
그럴 땐 다른 방식을 써요.
다음 강에서, 확인을 생략하고
빠르게 보내는 방식을 만나봐요.

한 줄 정리패킷은 도중에 빠지거나 순서가 뒤바뀔 수 있어요. TCP는 그걸 알아서 메워줘요. 받으면 받았다고 확인(ACK)을 보내고, 확인이 안 오면 그 조각을 다시 보내고(재전송), 도착한 조각에 붙은 번호로 순서를 맞춰요. 그래서 받는 쪽에는 늘 '빠짐없이, 순서대로' 도착해요. 빠르기만 한 게 아니라 믿을 수 있게 보내는 약속, 그게 TCP예요.
네트워크
이 페이지가 도움 됐다면 후원하기