왜 라우터가 필요한가
지난 장에서 우리는 한 가지 중요한 결정을 배웠다. 컴퓨터는 목적지 IP 주소를 보고 이렇게 판단한다.
"저 주소가 나와 같은 네트워크 안에 있는가?"
같은 네트워크 안에 있으면 가까운 네트워크 안에서 상대의 MAC 주소를 찾아 직접 보낸다. 중간에 스위치가 있다면 스위치가 그 프레임을 알맞은 포트로 넘겨 준다. 하지만 다른 네트워크에 있으면 그렇게 바로 보낼 수 없다. 같은 동네 안의 집은 골목길로 찾아갈 수 있지만, 다른 도시의 집은 먼저 고속도로 입구로 가야 하는 것과 비슷하다.
이때 고속도로 입구 역할을 하는 장비가 라우터다. 라우터는 서로 다른 네트워크를 이어 주는 장치다. 더 정확히 말하면, 라우터는 들어온 데이터 묶음의 목적지 IP 주소를 보고 "다음에는 어느 네트워크 쪽으로 보내야 하는가"를 고른다.
여기서 데이터 묶음을 패킷이라고 부른다. 패킷은 택배 상자에 비유할 수 있다. 상자 안에는 실제 내용물이 있고, 겉면에는 보내는 주소와 받는 주소가 적혀 있다. 인터넷에서 패킷의 겉면에는 보내는 IP 주소와 받는 IP 주소가 들어 있다. 비유는 여기까지다. 실제 패킷은 종이 상자가 아니라 정해진 형식의 비트 묶음이다.
스위치가 같은 네트워크 안에서 MAC 주소를 보고 가까운 장치를 찾아 주었다면, 라우터는 네트워크와 네트워크 사이에서 IP 주소를 보고 다음 길을 골라 준다. 인터넷다운 모양은 바로 여기서 시작된다. 한 방 안의 네트워크가 여러 개 이어지고, 그 사이를 라우터가 연결하면 작은 인터넷의 뼈대가 만들어진다.
AI 생성 이미지
우리가 만들 모양
간단한 예를 생각해 보자.
네트워크 A:
192.168.10.0/24네트워크 B:
192.168.20.0/24두 네트워크 사이에 라우터 1대
네트워크 A에는 컴퓨터 A가 있다.
컴퓨터 A:
192.168.10.11컴퓨터 A의 게이트웨이:
192.168.10.1
네트워크 B에는 컴퓨터 B가 있다.
컴퓨터 B:
192.168.20.22컴퓨터 B의 게이트웨이:
192.168.20.1
라우터는 양쪽 네트워크에 각각 발을 하나씩 담그고 있다.
라우터의 A쪽 주소:
192.168.10.1라우터의 B쪽 주소:
192.168.20.1
이 구조에서 컴퓨터 A가 컴퓨터 B에게 데이터를 보낸다고 해 보자. 컴퓨터 A는 목적지 192.168.20.22를 보고 자신과 같은 네트워크가 아니라고 판단한다. 그래서 최종 목적지 IP는 192.168.20.22로 그대로 둔 채, 가까운 구간의 받는 MAC 주소는 게이트웨이인 라우터의 MAC 주소로 설정한다.
이 말이 헷갈릴 수 있다. 편지를 생각하면 쉽다. 봉투 겉면의 최종 목적지는 "부산의 어떤 집"이다. 하지만 지금 내가 직접 넘기는 사람은 "동네 우체국 직원"이다. 최종 목적지는 바뀌지 않는다. 다만 지금 이 구간에서 넘겨받을 사람이 우체국 직원일 뿐이다.
네트워크에서도 마찬가지다.
IP 목적지: 끝까지 가야 할 최종 목적지
MAC 목적지: 지금 이 가까운 구간에서 받을 다음 장치
라우터는 그 패킷을 받은 뒤 다시 판단한다. "목적지 IP가 192.168.20.22라면 어느 쪽으로 내보내야 하지?" 그리고 B쪽 네트워크로 패킷을 보낸다. 이때도 최종 목적지 IP는 컴퓨터 B 그대로이지만, 가까운 구간의 MAC 주소는 새로 정해진다.
라우터 안의 길 안내판, 라우팅 테이블
라우터가 길을 고를 수 있는 이유는 머릿속에 길 안내판을 가지고 있기 때문이다. 이 길 안내판을 라우팅 테이블이라고 부른다.
라우팅 테이블은 목적지별로 다음 길을 적어 둔 표다. 전화번호부가 사람 이름과 전화번호를 연결하듯, 라우팅 테이블은 목적지 네트워크와 내보낼 방향을 연결한다.
아주 단순한 라우팅 테이블은 이렇게 생각할 수 있다.
| 목적지 네트워크 | 내보낼 방향 |
|---|---|
192.168.10.0/24 | A쪽 포트 |
192.168.20.0/24 | B쪽 포트 |
라우터가 192.168.20.22로 가는 패킷을 받으면, 라우팅 테이블에서 192.168.20.0/24를 찾는다. 192.168.20.22는 이 범위 안에 있으므로 B쪽 포트로 내보낸다.
여기서 중요한 점은 라우터가 보통 "개별 컴퓨터 하나하나"를 모두 외우지 않는다는 것이다. 라우터는 대개 목적지 컴퓨터 주소가 아니라 목적지 네트워크를 기준으로 길을 찾는다. 택배 분류장이 전국의 모든 사람 이름을 외우는 대신 "이 물건은 대전 방향", "이 물건은 부산 방향"처럼 큰 묶음으로 나누는 것과 같다.
물론 마지막 가까운 네트워크에 도착하면 더 구체적인 처리가 필요하다. 라우터가 B쪽 네트워크로 패킷을 내보낼 때는 컴퓨터 B의 MAC 주소를 알아야 한다. 이때는 같은 네트워크 안에서 MAC 주소를 찾는 과정이 다시 필요하다. 그러나 큰 방향을 고르는 일은 라우팅 테이블이 맡는다.
패킷이 라우터를 지날 때 바뀌는 것과 바뀌지 않는 것
라우터를 이해할 때 꼭 붙잡아야 할 기준이 있다.
패킷의 최종 목적지 IP 주소는 보통 바뀌지 않는다. 컴퓨터 A가 컴퓨터 B에게 보내는 중이라면 목적지 IP는 계속 192.168.20.22다. 중간 라우터는 "이 패킷이 최종적으로 어디로 가야 하는가"를 알아야 하므로, 그 주소를 보고 다음 길을 고른다.
하지만 가까운 구간에서 쓰는 MAC 주소는 매번 바뀔 수 있다. 컴퓨터 A에서 라우터로 갈 때는 받는 MAC 주소가 라우터의 A쪽 MAC 주소다. 라우터에서 컴퓨터 B로 갈 때는 받는 MAC 주소가 컴퓨터 B의 MAC 주소다. 보내는 쪽 MAC 주소도 그 구간에서 실제로 프레임을 내보내는 장치의 MAC 주소로 바뀐다.
즉, IP 주소는 먼 목적지를 가리키는 주소이고, MAC 주소는 지금 이 구간에서 실제로 주고받는 장치를 가리키는 주소다.
이 차이를 이해하면 라우터의 일이 선명해진다. 라우터는 패킷의 목적지 IP를 확인한다. 라우팅 테이블에서 다음 방향을 찾는다. 그리고 그 방향의 가까운 네트워크에서 다음 장치에게 전달할 수 있도록 새 프레임에 담아 내보낸다.
앞 장에서 프레임을 "가까운 네트워크 안에서 오가는 데이터 묶음"이라고 했다. 라우터는 한쪽 네트워크에서 들어온 프레임을 그대로 반대편으로 밀어 넣는 장비가 아니다. 프레임 안에서 IP 패킷을 꺼내 목적지를 확인하고, 다음 네트워크에 맞는 새 프레임으로 다시 포장해 내보낸다.
택배 상자를 큰 운송 자루에서 꺼낸 뒤, 다음 지역으로 가는 다른 자루에 다시 넣는 장면을 떠올리면 된다. 단, 실제 네트워크에서는 사람이 상자를 여는 것이 아니라 장비가 정해진 헤더 정보를 읽고 다시 감싼다.
모르는 목적지는 어디로 보낼까
라우터가 모든 목적지 네트워크를 알고 있으면 좋겠지만, 현실에서는 그렇지 않다. 특히 집이나 작은 회사의 라우터는 전 세계 인터넷의 모든 길을 직접 외우지 않는다.
그래서 라우터에는 자주 기본 경로가 있다. 기본 경로는 "따로 아는 길이 없으면 이쪽으로 보내라"는 규칙이다. 영어로는 default route라고 한다.
기본 경로는 도로 표지판의 "그 외 지역은 고속도로 방향"과 비슷하다. 서울 안의 동네 길은 자세히 알 수 있다. 하지만 먼 도시로 가는 모든 골목까지 알 필요는 없다. 일단 고속도로 입구로 보내면, 더 큰 길을 아는 다음 장비가 이어서 판단한다.
작은 네트워크에서는 이런 모양이 흔하다.
| 목적지 네트워크 | 내보낼 방향 |
|---|---|
192.168.10.0/24 | 내부 A쪽 |
192.168.20.0/24 | 내부 B쪽 |
| 그 밖의 모든 곳 | 위쪽 라우터 |
"그 밖의 모든 곳"이 기본 경로다. 기술적으로는 0.0.0.0/0처럼 표현한다. 이 표기는 모든 IPv4 주소를 가장 넓게 포함한다는 뜻이다. 처음 보면 이상한 주소처럼 보이지만, 의미는 단순하다.
"아는 목적지가 아니면 여기로 보내라."
집에서 인터넷을 쓸 때도 비슷하다. 노트북은 집 안 주소만 직접 판단하고, 나머지는 보통 공유기에게 보낸다. 공유기는 다시 통신사 장비 쪽으로 보낸다. 통신사 장비는 더 큰 인터넷의 길을 알고 있는 라우터들에게 넘긴다. 이렇게 작은 판단들이 이어져 먼 서버까지 도착한다.
길이 여러 개라면 어떻게 고를까
라우터에 목적지로 가는 길이 하나만 있으면 선택은 쉽다. 하지만 실제 네트워크에서는 길이 여러 개일 수 있다. 이때 라우터는 자신이 가진 라우팅 테이블에서 가장 알맞은 항목을 고른다.
가장 중요한 원칙은 "더 구체적인 길이 우선"이라는 것이다.
예를 들어 라우팅 테이블에 이런 항목이 있다고 하자.
| 목적지 네트워크 | 내보낼 방향 |
|---|---|
192.168.20.0/24 | 오른쪽 |
192.168.0.0/16 | 위쪽 |
0.0.0.0/0 | 바깥쪽 |
목적지가 192.168.20.22라면 세 항목 모두 어느 정도 맞는 것처럼 보일 수 있다. 192.168.20.22는 192.168.20.0/24에도 들어가고, 192.168.0.0/16에도 들어가며, 모든 주소를 뜻하는 기본 경로에도 들어간다.
이럴 때 라우터는 가장 좁고 구체적인 범위인 192.168.20.0/24를 고른다. 주소가 더 자세히 맞기 때문이다. 길 안내판에서 "대한민국", "서울", "서울 강남구"가 동시에 보이면 강남구 표지판을 따르는 것이 더 정확한 것과 같다.
이 원칙 덕분에 라우터는 큰 기본 길을 유지하면서도, 특정 네트워크에 대해서는 더 정확한 길을 따로 지정할 수 있다.
TTL: 빙빙 도는 패킷을 막는 안전장치
라우터가 많아지면 한 가지 문제가 생길 수 있다. 잘못된 라우팅 테이블 때문에 패킷이 목적지에 도착하지 못하고 라우터 사이를 계속 돌 수 있다.
예를 들어 라우터 A는 "저 목적지는 라우터 B에게 보내야 한다"고 알고 있고, 라우터 B는 "저 목적지는 라우터 A에게 보내야 한다"고 잘못 알고 있다고 해 보자. 그러면 패킷은 A와 B 사이를 계속 오갈 수 있다.
이런 일을 막기 위해 IP 패킷에는 TTL이라는 값이 있다. TTL은 Time To Live의 줄임말이다. 이름만 보면 시간처럼 보이지만, 실제로는 패킷이 라우터를 몇 번 더 지날 수 있는지를 나타내는 숫자에 가깝다.
TTL은 놀이공원의 이용권에 찍힌 남은 횟수처럼 생각하면 쉽다. 라우터가 패킷을 다음 네트워크로 넘길 때마다 TTL이 1씩 줄어든다. TTL이 0이 되면 라우터는 그 패킷을 더 보내지 않고 버린다.
이 장치가 없으면 길을 잃은 패킷이 네트워크 안을 끝없이 떠돌 수 있다. 그런 패킷이 많아지면 라우터와 회선의 힘을 낭비하고, 정상적인 통신까지 느려질 수 있다. TTL은 패킷 하나가 영원히 살아남지 못하게 제한하는 안전장치다.
TTL 때문에 패킷이 버려졌다고 해서 항상 나쁜 것은 아니다. 오히려 네트워크가 스스로를 보호하는 정상적인 동작이다. 문제는 왜 TTL이 다 닳을 때까지 목적지에 도착하지 못했는지를 찾는 것이다. 보통은 경로가 잘못되었거나, 중간 라우터의 설정이 어긋났거나, 목적지 네트워크로 가는 길이 끊긴 경우가 많다.
고장 나면 어디를 볼 것인가
라우터가 들어가면 확인할 곳도 늘어난다. 하지만 순서를 지키면 어렵지 않다.
먼저 물리적인 연결을 본다. 라우터의 각 포트가 올바른 네트워크에 연결되어 있는지, 케이블이나 무선 연결이 살아 있는지 확인한다. 길 안내판이 아무리 좋아도 도로가 끊겨 있으면 갈 수 없다.
다음으로 각 장치의 IP 주소와 서브넷 마스크를 확인한다. 컴퓨터 A가 192.168.10.11/24인데 게이트웨이를 192.168.20.1로 잡아 두면 첫 출입구부터 잘못 찾는다. 게이트웨이는 보통 내 컴퓨터와 같은 네트워크 안에 있어야 한다. 그래야 컴퓨터가 그 게이트웨이의 MAC 주소를 찾아 프레임을 보낼 수 있다.
그다음 라우터의 양쪽 주소를 본다. 라우터가 네트워크 A와 B를 잇는다면 A쪽에는 A 네트워크에 속한 IP 주소가, B쪽에는 B 네트워크에 속한 IP 주소가 있어야 한다. 라우터는 두 네트워크에 각각 발을 딛고 있어야 한다.
그다음 라우팅 테이블을 확인한다. 목적지 네트워크로 가는 항목이 있는지, 없다면 기본 경로가 있는지 본다. "모르는 목적지는 위쪽 라우터로 보낸다"는 규칙이 빠져 있으면, 라우터는 알지 못하는 목적지의 패킷을 버릴 수밖에 없다.
마지막으로 돌아오는 길을 확인한다. 네트워크 통신은 대부분 왕복이다. A에서 B로 가는 길이 있어도 B에서 A로 돌아오는 길이 없으면 응답이 오지 않는다. 사용자는 "보냈는데 답이 없다"고 느끼지만, 실제 문제는 돌아오는 경로에 있을 수 있다.
라우터 문제를 볼 때는 이 질문들을 차례로 던지면 된다.
패킷이 라우터까지 갈 수 있는가?
라우터는 목적지 네트워크를 알고 있는가?
모르는 목적지라면 기본 경로가 있는가?
다음 라우터나 목적지 네트워크로 실제 연결되어 있는가?
응답이 돌아올 길도 있는가?
이 질문들은 장비 종류가 달라도 거의 변하지 않는다. 특정 명령어보다 중요한 것은 흐름이다. 패킷은 목적지 IP를 들고 이동한다. 라우터는 라우팅 테이블을 보고 다음 방향을 고른다. 가까운 구간마다 MAC 주소로 다시 포장되어 이동한다. 길을 잃고 오래 떠돌면 TTL이 줄어들다가 결국 버려진다.
이제 우리는 한 방 안의 네트워크를 넘어, 여러 네트워크를 이어 붙이는 방법을 알게 되었다. 다음에는 이 재료들을 가지고 작은 인터넷의 설계도를 그려 볼 수 있다. 어떤 네트워크를 만들고, 어디에 라우터를 두고, 어떤 주소를 줄지 정하면 인터넷의 모양이 머릿속에서 조금씩 선명해진다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.