[네트워크] 혼공네트 독서 #7 - 라우팅, 라우팅테이블, 라우터

2026. 1. 23. 19:50·CS/컴퓨터 네트워크

https://dev-dx2d2y-log.tistory.com/187

 

[네트워크] 혼공네트 독서 #6 - IP주소

https://dev-dx2d2y-log.tistory.com/184 [네트워크] 혼공네트 독서 #5 - 네트워크 계층과 IPv4, IPv6 패킷구조, ARPhttps://dev-dx2d2y-log.tistory.com/181 [네트워크] 혼공네트 독서 #4 - 네트워크 장비, 허브와 스위치https:/

dev-dx2d2y-log.tistory.com

저번에는 L3계층에서의 IP주소에 대해서 알아보았다면, 이번에는 라우팅에 대해서 알아보려한다.


라우팅

L3 계층에서는 다른 네트워크 간 소통을 위해서 패킷이 이동할 최적의 경로를 찾아서 이동시켜야한다. 이를 라우팅이라고 한다. 라우팅은 입문서에서 모두 다루기 어려운 주제이므로 책에서는 라우팅의 분류에 주안점을 둔다고. 아마 전공책을 읽으면 라우팅에 대해서 더 깊게 다룰 수 있지 않을까 생각된다.


라우터

L3계층에서 네트워크 장비는 라우터만 알아도 될 정도로 핵심적인 네트워크 장치. 일반적인 가정용 공유기가 이 역할을 수행한다. 여기에 NAT이나 DHCP 서버기능 등을 제공하는 정도.

 

원거리에 있는 호스트와 패킷을 교환하게되면, 해당패킷을 여러 대의 라우터를 거쳐서 호스트에게 도달한다. 호스트와 라우터, 또는 라우터와 라우터 간 정보가 이동하는 하나의 과정을 홉이라고 한다. 즉, 호스트와 호스트 간 통신은 여러 홉을 거쳐서 진행된다.

 

tracert를 CMD창에 입력하면 패킷이 구글까지 전송되며 거친 라우터들의 정보가 출력된다. 총 15개의 홉이 일어났다는 것을 알 수 있다.


라우팅 테이블

라우터가 어디로 패킷을 보낼지 알기 위해서는 주변 라우터나 호스트의 정보를 알아야한다. 이를 라우팅 테이블이라고 한다. 라우팅 테이블에 저장되는 정보는 라우팅 방식이나 호스트의 환경에 따라 달라진다. 라우터 뿐 아니라 정보를 내보내야하는 호스트도 라우팅 테이블을 가질 수 있다. 공통적이면서 핵심적인 정보는

 

수신지IP주소 및 서브넷마스크: 패킷을 받을 대상이다.

 

다음 홉: 수신지까지 가기 위해서 다음으로 거칠 호스트의 IP주소나 인터페이스를 의미한다. 게이트웨이라고도 칭함. 그러니까 다음 목적지를 나타낸다.

 

네트워크 인터페이스: L2계층에서 인터페이스(NIC)을 거쳐서 정보를 교환해야하는데, 정보를 교환할 프로토콜을 명시하거나 인터페이스에 대응하는 IP주소가 명시된다.

만약 eth0이 적혀있다면 "이 네트워크 장치의 이더넷 프로토콜 1번 포트로 패킷을 내보내라"라는 의미를 가진다. 호스트부터 라우팅 테이블을 작성하므로 "이 호스트의 이더넷 프로토콜 n번 포트로 패킷을 내보내라" -> "이 라우터의 이더넷 프로토콜 n번 포트로 패킷을 내보내라" ... 이렇게 반복되는 것이다.

프로토콜 포트 번호를 명시하는 것 뿐 아니라 그냥 내보낼 NIC의 IP주소를 그대로 명시하는 방법도 있어서 IP주소가 표시되는 것이다. 더 직관적이다. 만약 192.168.234.80이 적혀있다면 호스트/라우터의 그 IP주소에 해당하는 NIC으로 정보가 나갔음을 의미한다.

 

메트릭(metric): 해당 경로로 이동하는데 드는 비용. 더 낮은 비용으로 패킷을 보내는 것을 우선시한다.

 

CMD에서 route print를 입력하면 라우팅 테이블을 볼 수 있다. 여기서 네트워크 대상과 네트워크 마스크(서브넷 마스크), 게이트웨이(홉), 인터페이스와 메트릭을 볼 수 있다.

 

그래서 네트워크를 사용하면 라우팅 테이블을 확인하고 정보를 정보를 보낸다. 위의 예시에서 만약 224.0.0.0/4 으로 패킷을 보내려면 이미 연결되어 있기 때문에 곧바로 데이터를 전해주면되고, 패킷은 127.0.0.1로 나가거나 192.168.234.80으로 나간다는 것을 알 수 있다. 매트릭이 후자가 더 낮으므로 후자를 사용할 것이다.


디폴트 라우트

다만 위에서 문제가 하나 있다. 호스트가 패킷을 보내려면 반드시 라우팅 테이블을 확인하고 거기에 맞는 게이트웨이로 정보를 넘겨야한다. 근데 문제는 구글의 ip주소는 142.250.196.68 이다. 하지만 라우팅 테이블에는 해당 IP주소에 해당하는 수신지IP 주소가 없다. 이럴 때에는 어떻게 해야하는가?

 

라우팅 테이블에 없는 경로로 패킷을 보내야할 경우에는 기본적으로 패킷을 보낼 경로를 설정한다. 위의 라우팅 테이블에서 0.0.0.0/0이 그 예시로, 이 기본 경로를 디폴트 라우트라고 한다.

 

그래서 구글로 패킷을 보내려는데 142.250.196.68이 없으므로 디폴트 라우트로 패킷을 보낸다. 위에서 게이트웨이가 192.168.235.254 로 설정되므로 그곳으로 정보를 보낸다. 즉, 호스트가 처음에 라우터에게 정보를 보내고, 라우터도 정보가 없으면 디폴트 라우트로 정보를 보내는 과정을 반복하다가 특정 라우터의 라우팅 테이블에 수신지 ip주소에 해당하는 정보가 있다면 그 라우터가 수신호스트에게 정보를 넘긴다.

 

이 과정에서 라우터를 무한하게 돌거나 패킷이 유실되는 것을 방지하기 위해서 TTL과 같은 장치가 존재하는 것이고, L3계층에서는 "보낸다"만 집중하기 때문에 유실정도는 신경쓰지 않아도된다. 그런걸 신경쓰는 것은 L4계층에서 담당한다.


라우팅 테이블 만들기

IP주소 할당과 비슷하게 정적과 동적으로 나뉜다.


정적 라우팅

사용자가 수동으로 라우팅 테이블을 직접 채워넣는 것을 말한다.

관리자권한 CMD에서 route add 를 통해서 직접 추가할 수 있다. 공용와이파이를 사용하더라도 사용자 호스트의 라우팅 테이블만 변경되기 때문에 별 문제는 없다고

 

주로 경로제어를 위해 사용된다. 복수의 네트워크와 연결된 상황에서 보안을 위해서 특정 호스트를 수신지로하는 패킷은 특정 포트로만 이동해야한다면, 이 정적 라우팅을 사용한다.


동적 라우팅

하나하나 라우팅 테이블을 채워주는 것은 시간도 매우 오래걸리고 번거로운데다가, 정적 라우팅으로 설정한 다음 네트워크 장비에서 오류가 발생하면 이 네트워크 장비를 우회하도록 라우팅을 해야한다. 이러한 상황에서 사용되는 것이 동적 라우팅이다.


라우팅 프로토콜

동적 라우팅을 사용한다면 모든 라우터는 패킷을 특정 수신지까지 도달하기 위한 최적의 경로를 찾기 위해서 라우터끼리 서로 정보를 교환한다. 그래서 수신지IP 주소와 다음으로 정보를 넘길 IP주소 등을 명시하는 식으로 등등.. 이럴 때 사용되는 것이 라우팅 프로토콜이다. 라우팅 프로토콜은 라우터끼리 정보를 교환하여 패킷이 이동할 최적의 경로를 찾는 방법이다.

 

라우터들은 라우터들끼리 하나의 네트워크를 이룬다. 이를 AS(Autonomous System)이라고 칭한다. 라우터들은 AS 내부에서 통신할 수도 있고, 외부에서 통신할 수도 있다. 외부와 통신하려면 AS 경계 라우터(ASBR: Autonomous System Boundary Router)를 사용해야한다.

 

아무튼 라우팅 프로토콜은 AS 내부에서 정보를 교환하냐, 외부에서 정보를 교환하냐로 나눌 수 있다. 전자를 IGP(Interior Gateway Protocol), 후자를 EGP(Exterior Gateway Protocol) 이라고 칭한다.


IPG

IGP에 해당하는 프로토콜은 RIP(Routing Information Protocol)와 OSPF(Open Shortest Path First)로 나뉜다.

 

RIP

거리벡터를 기반으로 경로를 찾는다. 여기서 '거리'란 홉의 수를 나타낸다. RIP를 사용하면 인접한 라우터와 수시로 정보를 교환하며 홉 수를 알 수 있는데, 이 때 정보를 보내기 위해서 홉의 수가 가장 적은 경로를 우선적으로 찾는다. 그리고 이 홉의 수는 매트릭에 반영된다. 가령 수신지IP주소와 다음으로 넘길 IP주소와 홉을 반영한 매트릭 등을 입력하는 식으로 등..

 

OSPF

OSPF는 링크 상태 라우팅 프로콜이다. 네트워크는 이리저리 연결된 그물망 형태의 그래프를 띄는데, 현재 네트워크의 상태를 그래프 형태의 데이터베이스 (링크 상태 데이터베이스, LSDB: Link State DataBase)에 저장한다. 그리고 여기에는 라우터들의 연결관계, 연결비용 등을 나타낸다.

 

AS 내에서 라우터들을 표시하고, 그 라우터들의 연결을 그린 뒤에 최적의 경로를 선택한다. 마치 지도에서 길찾기하듯이 경로를 그린다.

 

https://ipcisco.com/lesson/ospf-open-shortest-path-first-overview-ccnp/

생긴건 이렇게?

RIP는 수시로 라우터 간 정보를 교환하는 것과 달리 OSPF는 네트워크 구성이 변경될 때 라우팅 테이블이 갱신된다. 다만 네트워크 규모가 매우 크다면 갱신된 상태를 저장하기 어려우므로 AS를 에어리어라는 하위구조로 나눈 다음에, 정보를 에어리어에서만 교환한다. 즉, AS내의 또 하나의 AS를 만들어 정보를 교환하는셈. 각 에어리어의 경계에는 ABR(Area Border Router)가 있어 에어리어 간 연결을 담당한다.


EGP

대표적인 EGP 에는 BGP(Border Gateway Protocol)이 있다. BGP는 다시 iBGP와 eBGP로 나뉘는데, iBGP는 AS 내부에서 사용할 수 있는 BGP, eBGP는 AS 외부 간 통신에서 사용할 수 있는 BGP이다. 즉, BGP는 AS 내부외부 모두 사용가능하다.

 

AS 간 정보교환을 위해서는 AS 내의 eBGP를 사용하는 라우터가 적어도 한 개 있어야하며, 다른 AS의 eBGP를 사용하는 라우터와 연결되어야한다. 연결된 eBGP 사용 라우터를 피어(Peer), 연결하는 것을 피어링(peering)이라고 한다.

 

속성

RIP와 OSPF에서는 단지 라우터 간 정보를 교환해서 최적의 경로를 계산하면 되었지만, BGP는 최적경로를 결정하는 과정이 다소 복잡한데다가 일정하지도 않다. 이는 BGP가 가지는 속성 때문이다.

이 속성들은 각각 어떤 AS를 거쳤는가, 등이 저장되며 eBGP를 사용하는 라우터 내부에 라우팅 테이블과 함께 저장된다.

 

1. AS-PATH 속성

패킷이 전달되기 위해서는 여러 라우터를 거쳐가야하므로 당연히 여러 AS를 거쳐가야한다. 이 때 메시지가 수신지에 도착할 때 거치는 AS들의 목록을 AS-PATH 속성이라고 칭한다. AS1에서 AS2로 갈 때, 곧장 갔다면 'AS2', AS3을 거쳐서 갔다면 'AS3 AS2'로 AS-PATH가 추가된다.

 

이에따라서 BGP는 AS 간 라우팅을 할 때 AS의 수를 고려한다는 것을 알 수 있다. 만약 최적의 경로로 설정된 AS에 속한 라우터가 다소 많은 편이라면, AS-PATH 길이가 더 짧더라도 패킷이 거쳐야할 홉의 수는 많아지는 상황이 생길 수 있다.

또한 RIP와 같이 단순한 거리가 아니라, 메시지가 어디를 거치는지 경로를 중시한다. 이는 같은 AS를 무한히 도는 것을 방지하기 위해서이다. eBGP를 사용하는 라우터는 자기 자신의 AS가 AS-PATH 속성에 있는 경우 순환으로 간주해 메시지를 버린다. 재전송은 L4에서 담당.

 

2. NEXT-HOP 속성

다음으로 거칠 라우터의 IP주소를 나타낸다. 위의 예시에서 AS1의 AS-PATH 속성이 'AS2'인 경우에는 AS2의 IP주소가, 'AS3 AS2'인 경우에는 AS3의 IP주소가 저장된다.

 

3. LOCAL-PREF 속성

LOCAL PREFerence, 지역 선호도의 약어다. AS 내부에서 어떤 경로를 선호할지를 나타낸다. 일반적으로 위의 두 속성보다 우선시되어 적용되며, 값이 클수록 더 선호한다는 뜻이다. 이는 곧, '이 AS에서는 특정한 이유로 이 경로르 우선시한다.' 내지는 '비효율적이더라도 이 경로를 우선시하겠다'라는 것을 의미한다.


이렇게 라우팅에 대해서 알아보았다. 라우팅에는 라우팅테이블이란 것을 이용하여, 호스트나 라우터는 이 라우팅테이블을 보고 수신하려는 호스트의 IP주소가 있다면 그곳으로 패킷을 전송하고, 없다면 디폴트 라우터로 패킷을 전송한다. 보내진 패킷은 디폴트라우터를 계속 돌다가 수신지 IP주소를 알고 있는 라우터를 만나면 그쪽으로 이동한다.

 

효율적으로 패킷을 보내기 위해서는 특정 수신지로의 최적의 경로를 알고있어야하는데, 이럴 때 라우터끼리 정보를 교환하여 이를 알 수 있다. 이 때 라우터끼리 네트워크를 형성하는데, 이를 AS라고 칭하며, AS 내부에서는 IGP, 외부 간 정보교환은 EGP를 사용한다.

 

따라서 패킷은 호스트의 라우팅 테이블의 수신지 정보가 없다면 디폴트 라우터로 정보를 보내게되고, 이 라우터는 기존에 교환했던 정보를 통해서 특정 라우터로 정보를 보내거나, 해당 디폴트 라우터가 속한 AS 외부로 정보를 보낸다. 이 때 외부 AS로 정보를 보내기 위해서는 ASBR에게 정보를 넘기고, ASBR이 정보를 받아서 다시 특정 ASBR로 정보를 넘기고 하는 것을 반복한다.


L3는 이정도로 끝이긴한데 좀 전공책이 궁금해지긴하다. 지면이 부족하다는 이슈로 어느정도 간략화되거나 생략된 내용이 꽤 있어서 전공책을 한 번 읽어보고 싶긴함

'CS > 컴퓨터 네트워크' 카테고리의 다른 글

[네트워크] 혼공네트 독서 #9 - TCP  (0) 2026.01.26
[네트워크] 혼공네트 독서 #8 - L4계층  (0) 2026.01.24
[네트워크] 혼공네트 독서 #6 - IP주소  (1) 2026.01.17
[네트워크]IPv4 패킷필드에서 옵션은 무엇을 담당하는가?  (0) 2026.01.16
[네트워크] 혼공네트 독서 #5 - 네트워크 계층과 IPv4, IPv6 패킷구조, ARP  (1) 2026.01.15
'CS/컴퓨터 네트워크' 카테고리의 다른 글
  • [네트워크] 혼공네트 독서 #9 - TCP
  • [네트워크] 혼공네트 독서 #8 - L4계층
  • [네트워크] 혼공네트 독서 #6 - IP주소
  • [네트워크]IPv4 패킷필드에서 옵션은 무엇을 담당하는가?
컬러잇
컬러잇
탄천러너지망생
  • 컬러잇
    Color it
    컬러잇
  • 전체
    오늘
    어제
    • 분류 전체보기 (252)
      • 신년사 (3)
        • 2025년 (2)
        • 2026년 (1)
      • CS (79)
        • JVM (12)
        • 인프라 (6)
        • 백엔드 (22)
        • 논리회로 (5)
        • 언어구현 (1)
        • 인공지능 (1)
        • 코드설계 (3)
        • 컴퓨터구조 (9)
        • 데이터베이스 (4)
        • 컴퓨터 네트워크 (16)
      • 보안 (3)
        • 웹보안 (3)
        • AI보안 (0)
        • 시스템보안 (0)
        • 네트워크보안 (0)
      • 언어공부 (65)
        • Java | Kotlin (49)
        • JavaScript | TypeScript (9)
        • C | C++ (6)
      • 개인 프로젝트 (11)
        • [2025] Happy2SendingMails (3)
        • [2026] 골든리포트! (8)
        • 기타 이것저것 (0)
      • 팀 프로젝트 (29)
        • [2025][GDG]홍대 맛집 아카이빙 프로젝트 (29)
      • 알고리즘 (13)
        • 백준풀이기록 (11)
      • 에러 수정일지 (4)
      • 고찰 (33)
        • CEOS 23기 회고록 (9)
        • 놀이터 (0)
  • 링크

    • 교양있는컬러잇
  • 최근 글

  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.5
컬러잇
[네트워크] 혼공네트 독서 #7 - 라우팅, 라우팅테이블, 라우터
상단으로

티스토리툴바