패킷이 길을 찾는 방법
라우터는 지날 때마다 패킷의 TTL을 1씩 줄입니다. 0이 되면 패킷을 버리므로, 고리에 빠진 패킷이 영원히 돌 수 없습니다.
읽기 전에 아래 시뮬레이터부터 만져 보세요. TTL을 2로 두고 보내기를 누른 다음, 64로 바꿔 한 번 더 보냅니다. 처음 보냈을 때 패킷이 어디서 멈추는지 눈여겨보면 됩니다. 여유가 있으면 TTL을 3, 4, 5로도 바꿔 보세요. 패킷이 버려지는 라우터가 한 칸씩 뒤로 물러나다가, 5에서는 서버까지 닿습니다.
끌어서 돌리고, 휠이나 두 손가락으로 확대하세요.
방금 본 것: 패킷마다 붙은 카운트다운
TTL 2로 보냈을 때는 모든 패킷이 두 번째로 만난 라우터에서 버려지고 빨간 메시지가 돌아왔습니다. 64로 보냈을 때는 라우터 넷을 지나 60이 남은 채 서버에 닿았습니다. IPv4 헤더에는 TTL(Time to Live)이라는 8비트 칸이 있어서 가장 큰 값이 255입니다. RFC 791은 라우터마다 이 값을 적어도 1씩 줄이라고 정했고, 많은 컴퓨터는 64에서 시작합니다. 집에서 보낸 패킷이라면 집 공유기가 그 값을 처음 줄이는 라우터입니다. 값이 0이 되면 라우터는 패킷을 버리고 보낸 쪽에 ICMP 「시간 초과」 메시지(RFC 792)를 돌려보냅니다. 화면에 돌아온 빨간 메시지가 바로 그 메시지입니다.
카운트다운은 왜 필요할까요? 라우터 표에 실수가 있으면 패킷이 같은 곳을 빙빙 돌 수 있고, 한도가 없다면 그 패킷이 연결을 끝없이 차지합니다. 이름에 「시간」이 들어 있고, RFC 791도 문서상으로는 초 단위라고 적었습니다. 하지만 라우터마다 적어도 1씩 빼므로 실제로는 지나온 라우터 수를 세는 숫자처럼 움직입니다. IPv6는 같은 칸에 더 알기 쉬운 이름을 붙였습니다. 홉 제한(Hop Limit)입니다.
traceroute 단추는 이 규칙으로 경로 지도를 그립니다. 먼저 TTL 1인 시험 패킷을 보냅니다. 첫 번째 라우터가 이 패킷을 버리면서 답을 보내고, 그 답에서 라우터 주소가 드러납니다. TTL 2를 보내면 두 번째 라우터가 드러나고, 목적지가 답할 때까지 이렇게 이어 갑니다. 단추를 누르고 만들어지는 목록을 읽어 보세요. R1-R3를 끊고 다시 보내면 패킷이 다른 길로 돌아가는 모습도 보입니다.
라우터는 표에서 한 줄만 찾습니다
내 노트북에서 다른 대륙의 서버까지 가는 길 전체를 아는 라우터는 하나도 없습니다. 라우터는 저마다 결정을 딱 하나 내립니다. 받는 주소가 이것이면 이웃 가운데 누구에게 넘길까? 패킷이 한 칸(한 홉) 움직이면, 거기서 다음 라우터가 다시 정합니다. 경로는 이렇게 그 자리에서 내린 선택들이 사슬처럼 이어진 결과입니다.
결정은 전달 표에서 나옵니다. 전달 표는 접두사마다 넘겨줄 이웃을 적어 둔 목록입니다. 라우터는 받는 주소와 맞는 항목 가운데 접두사가 가장 긴 것을 고릅니다. 접두사가 길수록 더 꼭 맞는 항목이기 때문입니다. 표에 203.0.0.0/16은 이웃 B로, 203.0.113.0/24는 이웃 A로 적혀 있다고 합시다. 203.0.113.9로 가는 패킷은 두 항목에 다 맞지만 더 긴 /24가 이겨서 A로 갑니다. 203.0.7.1로 가는 패킷은 /16에만 맞으니 B로 갑니다. 주소를 위아래로 맞춰 적어 보면 203.0.113.9가 두 접두사로 모두 시작한다는 것이 눈에 보입니다. 표에는 대개 「나머지 전부」를 위한 기본 항목도 있는데, 집 공유기에서는 이 항목이 통신사(ISP)를 가리킵니다.
| 받는 주소 | 맞는 항목 | 보낼 곳 |
|---|---|---|
| 203.0.113.9 | 203.0.113.0/24 (A), 203.0.0.0/16 (B), 기본 (ISP) | A, 가장 김(24비트) |
| 203.0.7.1 | 203.0.0.0/16 (B), 기본 (ISP) | B, 가장 김(16비트) |
| 8.8.8.8 | 기본 0.0.0.0/0 (ISP) | ISP |
표는 누가 채울까
한 회사 안에서는 라우터들이 라우팅 프로토콜로 자기가 닿을 수 있는 곳을 서로 알려 주고, 연결이 끊기면 길을 새로 계산합니다. 인터넷을 이루는 수만 개의 독립된 네트워크 사이에서는 경계 경로 프로토콜(BGP, RFC 4271)이 「나는 198.51.100.0/24에 닿을 수 있다」 같은 알림을 전합니다. 케이블이 끊기면 그 케이블을 지나던 경로가 철회되고, 트래픽은 남은 길로 옮겨 갑니다. 통신사끼리 주고받는 이런 알림 덕분에 우리나라 통신사 네트워크에서 다른 나라 서버까지 길이 이어집니다. 시뮬레이터에서 R1-R3를 끊었을 때도 같은 일이 일어났습니다.
사라지는 패킷은 대부분 꽉 찬 대기열에서 떨어집니다
라우터는 패킷을 기다리게도 합니다. 붐빌 때는 나가는 연결이 실어 나를 수 있는 것보다 패킷이 빨리 들어오므로, 라우터마다 메모리에 대기열을 둡니다. 대기열이 가득 차면 다음에 들어온 패킷은 그냥 버려집니다. 버렸다고 누구에게 알리지도 않습니다. 보낸 쪽이 나중에 스스로 알아챌 뿐이고, 그것도 대개 기다리던 확인 응답이 오지 않아서 드러납니다. 인터넷에서 패킷이 사라지는 가장 흔한 까닭이 이것이고, 케이블이 끊기는 일보다 잦습니다. 와이파이 신호가 약하면 프레임이 망가져 버려야 하는 일도 생깁니다. IP 자체는 아무것도 약속하지 않습니다. RFC 791은 IP가 믿을 수 있는 통신 수단을 제공하지 않으며, 받았다는 확인도 다시 보내기도 없다고 적어 두었습니다. 사라진 데이터를 되찾는 일은 양 끝 컴퓨터의 몫이고, 그 이야기는 다음 단원에서 이어집니다.
3,000,000바이트 사진은 패킷 2055개
연결마다 패킷 하나의 최대 크기가 정해져 있습니다. 이더넷에서 프레임 하나에 실을 수 있는 데이터는 최대 1500바이트입니다(RFC 894). 여기서 IPv4 헤더 20바이트와 TCP 헤더 20바이트를 빼면 패킷 하나에 내 데이터가 약 1460바이트 들어갑니다. 그러니 3,000,000바이트짜리 사진에는 3,000,000 ÷ 1460 ≈ 2054.8, 올림해서 패킷 2055개가 필요하고, 이 패킷들은 하나하나 따로 길을 찾습니다. 1단원에서 지하철에서 올린 사진이 이 크기였다면 작은 배달이 2055번 일어났습니다.
- TTL 64로 떠난 패킷이 라우터 4개를 지났습니다. 도착할 때 TTL은 얼마입니까?
- TTL은 8비트 칸입니다. 담을 수 있는 가장 큰 값은 얼마입니까?
- 패킷의 TTL이 0이 되면 라우터는 어떻게 합니까?
- 버리고 보낸 쪽에 ICMP 시간 초과를 보낸다
- TTL을 64로 바꿔 계속 보낸다
- 보낸 쪽으로 되돌려 보낸다
- 네트워크가 한가해질 때까지 보관한다
- TTL은 왜 있습니까?
- 경로 고리에 빠진 패킷이 영원히 돌지 않게 하려고
- 빛의 속도를 재려고
- 웹 페이지를 얼마나 캐시할지 정하려고
- 파일의 패킷 수를 세려고
- traceroute가 TTL 1인 시험 패킷을 보냅니다. 누가 답합니까?
- 경로의 첫 번째 라우터
- 목적지 서버
- DNS 리졸버
- 아무도 답하지 않는다
- 표에 203.0.113.0/24 → A, 203.0.0.0/16 → B가 있습니다. 203.0.113.9로 가는 패킷은 어디로 갑니까?
- A
- B
- 둘 다
- 어디에도 가지 않는다
- 같은 표에서 203.0.7.1로 가는 패킷은 어디로 갑니까?
- B
- A
- 둘 다
- 버려진다
- 패킷 하나에 데이터가 약 1460바이트 들어갑니다. 3,000,000바이트 파일에는 패킷이 몇 개 필요합니까?
- 인터넷의 독립 네트워크들 사이에서 경로 알림을 전하는 프로토콜은 무엇입니까?
- BGP
- DNS
- HTTP
- UDP
- 시뮬레이터에서 R5와 서버 사이를 끊었습니다. 어떻게 됩니까?
- 아무것도 지나가지 못한다. 서버로 가는 연결이 하나뿐이다
- 패킷이 R4로 돌아간다
- 패킷이 더 빨리 도착한다
- UDP 패킷만 지나간다
- 「라우터는 서버까지 가는 길 전체를 알고 있다.」 라우터는 전달 표를 보고 다음 한 칸만 고릅니다. 경로는 그 선택들이 이어진 결과일 뿐이고, 같은 메시지의 패킷끼리도 길이 달라질 수 있습니다. 택배 기사가 다음 물류 센터까지만 알고 짐을 넘기는 것과 비슷합니다.
- 「TTL은 패킷에 남은 시간(초)이다.」 RFC 791이 초 단위로 설명하긴 하지만, 라우터마다 적어도 1씩 빼므로 실제로는 지나온 라우터 수를 셉니다. 그래서 IPv6에서는 이름이 홉 제한(Hop Limit)으로 바뀌었습니다. DNS 레코드에 붙는 TTL은 이름만 같은 다른 값이고, 그쪽은 정말 초 단위입니다.
- 「패킷이 사라지는 건 대부분 케이블이 끊겨서다.」 대부분은 대기열이 꽉 찬 라우터가 버린 패킷이고, 약한 와이파이 신호도 프레임을 망가뜨립니다. 케이블이 끊기는 일은 이보다 드물고, 끊겨도 라우터들이 다른 길로 돌리는 경우가 많습니다. 출근 시간 지하철 개찰구를 떠올리면 쉽습니다. 들어오는 사람이 빠져나가는 사람보다 많으면 줄이 길어지고, 줄이 넘치면 더는 받지 못합니다.
- 「IP가 패킷이 꼭 도착하도록 책임진다.」 RFC 791은 IP가 믿을 수 있는 통신 수단을 제공하지 않는다고 적었습니다. 받았다는 확인도 다시 보내기도 없습니다. 되찾는 일은 양 끝 컴퓨터가 맡고, 대개 TCP가 합니다. IP는 주소를 붙여 내보낼 뿐, 도착했는지는 확인하지 않습니다.
- 라우터는 전달 표를 보고 한 칸씩 정하며, 가장 길게 맞는 접두사가 이깁니다.
- BGP는 네트워크 사이에 경로 알림을 퍼뜨리고, 연결이 끊기면 경로를 철회합니다.
- TTL(IPv6는 홉 제한)은 라우터마다 1씩 줄고, 0이 되면 패킷을 버리고 ICMP로 알립니다.
- traceroute는 TTL 1, 2, 3…을 차례로 보내 경로를 그립니다.
이 과정의 출처 (28)
- (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then operators and papers, history sources last)
- IETF RFCs (rfc-editor.org): RFC 768 UDP (1980, 8-byte header)
- RFC 791 IPv4 (1981, 32-bit addresses, "does not provide a reliable communication facility", TTL field "measured in units of seconds" but every module must decrease it by at least one, so it is only an upper bound)
- RFC 792 ICMP (Time Exceeded)
- RFC 801 NCP/TCP transition plan (1 January 1983)
- RFC 894 Ethernet (1500-byte payload)
- RFC 1034 and RFC 1035 DNS (1987, HOSTS.TXT kept by SRI-NIC, labels up to 63 octets and names up to 255, TTL in seconds)
- RFC 1122 (127.0.0.0/8 loopback)
- RFC 1918 private addresses (10/8, 172.16/12, 192.168/16)
- RFC 2131 DHCP, RFC 3022 NAT, RFC 3596 AAAA records, RFC 3849 and RFC 5737 documentation addresses, RFC 4271 BGP-4, RFC 4291 IPv6 text form, RFC 6298 TCP retransmission timer (initial RTO 1 second)
- RFC 6335 port ranges (0-1023, 1024-49151, 49152-65535)
- RFC 7766 DNS over TCP, RFC 8200 IPv6 (128-bit addresses, Hop Limit)
- RFC 8446 TLS 1.3 (one round-trip handshake)
- RFC 9000 QUIC and RFC 9114 HTTP/3, RFC 9110 HTTP semantics (status code classes)
- RFC 9293 TCP (three-way handshake, sequence numbers)
- IANA: ip-parameters registry (recommended default TTL 64)
- IPv4 free pool depleted 3 February 2011 (NRO and ARIN announcements)
- Official documentation: MDN Web Docs "How does the Internet work?" (45 cables for 10 computers, switches, routers, MAC and IP addresses, internet and web)
- "What is a URL?", "HTTP response status codes" (developer.mozilla.org)
- Cloudflare Learning Center: "What is DNS?" (four kinds of DNS server, 8 steps of an uncached lookup, browser and OS caches, TTL)
- "What is HTTP/3?" (cloudflare.com/learning)
- Google Chrome Help, "Browse in Incognito mode" (support.google.com/chrome/answer/95464, checked 2026-10-19: Incognito limits what is saved to the device; websites and organisations that manage your network, like your school, employer or internet service provider, may be able to observe your activity)
- Operators and papers: root-servers.org (13 root name servers run by 12 organisations, 2047 instances on 2026-10-17)
- Jacobson and Karels 1988, Congestion Avoidance and Control (loss mostly congestion)
- History blocks only: UCLA Samueli School of Engineering, Internet50 (first ARPANET message "LO", UCLA to SRI, 29 October 1969, 22:30)
- historyofinformation.com and Wikipedia ARPANET (Kline)
- Spiceworks/SRI history (HOSTS.TXT kept by SRI-NIC)
- Numbers (2^32, 2^96, 45 and 6 cables, packet counts, round-trip times)
확인한 날: 2026-10-17