라우팅이란? (정적 vs 동적 라우팅)
라우팅이란?
라우팅(Routing)은 네트워크에서 데이터 패킷이 출발지에서 목적지까지 도달하도록 가장 적절한 경로를 선택하고 데이터를 전달하는 과정을 의미한다. 데이터 패킷은 전송해야 할 정보를 담은 단위이며, 라우팅은 이 패킷이 어디를 통해, 어떤 경로를 따라 이동할지를 결정한다. 이 과정을 통해 선택된 실제 경로를 라우트(Route)라고 부른다.
오늘날 인터넷은 수십억 개의 기기와 서버가 서로 연결된 복잡한 구조를 이루고 있다. 이러한 환경에서는 단순한 연결만으로는 충분하지 않으며, 어떤 경로를 선택해 데이터를 보내야 가장 빠르고 안정적인가가 매우 중요해졌다. 라우터(Router)는 이런 역할을 수행하는 핵심 장비로, 수많은 경로 중 최적의 길을 찾아내고 네트워크 트래픽을 적절히 분산시켜 전체 네트워크의 성능과 안정성을 지키는 중요한 역할을 담당한다.
라우팅의 주요 개념
- 라우팅(Routing): 데이터가 출발지에서 목적지까지 도달하기 위해 최적의 경로를 선택하는 과정
- 라우트(Route): 라우팅을 통해 결정된 실제 데이터 전송 경로
- 데이터 패킷(Data Packet): 네트워크를 통해 전달되는 정보의 최소 단위로, 목적지까지 경로를 따라 이동
- 라우터(Router): 데이터 패킷이 올바른 경로로 이동할 수 있도록 라우팅을 수행하고, 경로를 관리하는 네트워크 장비
라우팅의 개념은 Android 프레임워크에서도 쉽게 확인 할 수 있다.
- 라우팅은 Android 앱 내에서 사용자가 어떤 화면으로 이동할지 경로를 결정하는 과정과 비슷하다. 예를 들어, Intent를 사용하여 로그인 후 메인 화면으로 이동하거나, 알림을 눌러 상세 페이지로 이동하는 화면 전환 흐름을 설계하는 것이 라우팅에 해당한다.
- 라우트는 사용자가 이동할 특정 화면을 나타내는 실제 경로이다. 예를 들어, Intent(MainActivity.class)로 메인 화면을, Intent(ProfileActivity.class)로 프로필 화면을 지정하여 화면을 전환하는 방식이다. 이때, startActivity()를 호출하여 실제 화면을 전환한다.
- 데이터 패킷은 Android 앱에서 화면 전환 시 함께 전달하는 데이터(예: 사용자 ID, 게시물 번호)로 비유할 수 있다. 사용자가 화면 간 이동할 때 필요한 정보를 함께 보내는 것이다. Intent를 사용하면 putExtra() 메서드를 통해 이러한 데이터를 함께 전달할 수 있다.
- 라우터는 이러한 모든 경로를 관리하고 연결하는 역할을 한다. Android에서 Intent는 라우터 역할을 수행하여, 데이터 패킷을 목적지 액티비티로 전달하고, 해당 화면을 표시하는 역할을 한다. 즉, Intent를 사용해 화면 전환과 함께 데이터를 전달하는 방식으로 라우팅이 이루어진다.
라우팅 테이블
라우터는 내부에 라우팅 테이블(Routing Table)을 가지고 있으며, 이는 목적지 주소별로 "어디로 패킷을 보내야 할지"를 기록한 일종의 지도이다.
라우팅 테이블의 기본 항목
- 목적지 네트워크(Destination): 패킷이 최종적으로 도달해야 하는 주소.
- 다음 경유지(Next Hop) 또는 인터페이스: 패킷을 어느 방향으로 넘길지 지정.
- 경로 메트릭(Metric): 복수의 경로 중 어떤 경로를 우선 선택할지 결정하는 기준. 값이 낮을수록 우선순위가 높다.
- 경로 생성 방법: 경로가 정적(수동 설정)인지 동적(자동 갱신)인지 나타낸다.
라우터는 수신한 패킷의 목적지 주소를 기준으로 테이블을 빠르게 조회한 후, 어떤 경로로 패킷을 전송할지 즉시 결정한다. 이 과정을 통해 네트워크 트래픽이 최적화되고, 전체 시스템의 안정성과 효율성이 유지된다.
그러면 네트워크에서 라우팅, 즉 라우팅 테이블을 만드는 과정인 정적 라우팅(Static Routing)과 동적 라우팅(Dynamic Routing) 두가지에 대해서 알아보자.
정적 라우팅 (Static Routing)
정적 라우팅은 네트워크 관리자가 수동으로 경로를 입력하여 라우터에 알려주는 방식이다. 지정된 경로만을 이용해 패킷을 전달하기 때문에 구조가 단순하고 예측 가능하다.
정적 라우팅의 특징
- 네트워크 트래픽이 적고, 구조가 복잡하지 않을 때 적합
- 설정은 간단하지만, 장애나 경로 변경 발생 시 수작업이 필요함
- 보안성이 높음 (외부의 경로 변경 공격에 덜 민감)
Android에서 정적 라우팅은 Intent를 사용해 특정 Activity로 이동하는 것과 유사하다.
startActivity(Intent(this, DetailActivity::class.java))
정적 라우팅은 고정된 대상이 존재하므로, 변화에 취약하다.
동적 라우팅 (Dynamic Routing)
동적 라우팅은 라우터들이 서로 정보를 교환하면서 네트워크 상태에 따라 최적 경로를 자동으로 계산하는 방식이다. 이 방식은 변동성이 큰 네트워크에서 유리하며, 경로 변경에 대한 자동 반응이 필요할 때 적합하다.
동적 라우팅의 특징
- 라우터들 간에 정보를 교환하여 최적의 경로를 자동으로 계산함
- 네트워크가 복잡하고, 경로가 자주 바뀌는 환경에서 효과적
- 경로가 자동으로 업데이트되기 때문에 관리자가 개입할 필요가 줄어둠
- 네트워크 변경이 발생했을 때 수렴 속도가 중요한 요소임
대표적인 동적 라우팅 프로토콜
- RIP (Routing Information Protocol)
- 거리 벡터 기반. 홉 수(hop count)로 최단 경로 선택
- 최대 홉 수 15로 제한 → 대규모 네트워크에는 부적합
- OSPF (Open Shortest Path First)
- 링크 상태 기반. 각 링크의 상태를 종합해 최적 경로 계산
- 빠른 수렴 속도, 복잡한 네트워크에 강력
- BGP (Border Gateway Protocol)
- 자율 시스템(AS) 간 라우팅을 위한 프로토콜
- 인터넷 백본을 구성하는 데 필수
Android에서 동적 라우팅은 상황에 따라 화면 전환을 자동으로 처리하는 로직과 비슷하다. 예를 들어, 앱 내에서 사용자의 상황에 따라 자동으로 화면을 전환하는 방식이다. 이렇게 동적 라우팅은 앱 내에서 화면을 이동할 때 발생할 수 있는 다양한 변수를 고려하여 경로를 선택하는 과정이다.
정적 라우팅 vs 동적 라우팅
구분 | 정적 라우팅 | 동적 라우팅 |
설정 방법 | 수동 | 자동 |
네트워크 규모 | 작음 | 큼 |
관리 편의성 | 변화에 취약 | 변화에 강함 |
초기 설정 | 간단 | 복잡 |
유지보수 | 수작업 필요 | 자동 업데이트 |
정적 라우팅은 작고 고정된 네트워크 환경에 적합하며, 변화가 거의 없는 네트워크에서는 매우 효율적으로 운영할 수 있다. 반면, 동적 라우팅 프로토콜은 크고 변동이 많은 네트워크 환경에서 경로를 자동으로 조정할 수 있기 때문에 유연성이 뛰어나다.