라우팅은 무엇인가?
라우팅 (Routing)
--
라우팅은
라우터의 핵심 기능으로
패킷이 이동할 최적의 경로를 설정한 뒤에 해당 경로로 패킷을 이동시키는 것을 의미한다.
라우터 (Router)는
네트워크 계층의 핵심 기능을 담당하는 장치로
서로 다른 네트워크를 연결하고, 데이터를 적절한 목적지로 전달하는 역할을 수행하는 네트워크 장비다.
허브 or 스위치보다 높은 계층에 속하는 장비로
기능적으로는 사실상 컴퓨터와 매우 유사하다고 볼 수 있다.
(가정환경에서는 공유기가 라우터의 역할을 대신하며, 이를 "홈 라우터"라고도 부른다.)
(사실 공유기는 라우터 기능뿐만 아니라 "NAT", "DHCP 서버", "방화벽" 등 다양한 장치의 기능이 함축된 네트워크 장비다.)
멀리 떨어져 있는 호스트 간의 통신 과정에서
패킷은 서로에게 도달하기까지 여러 라우터를 거쳐서 다양한 경로로 이동하여 통신이 이루어지며,
패킷이 호스트와 라우터, 라우터와 라우터 간에 이동하는 하나의 과정을 "홉(Hop)"이라고 부른다.
즉, 패킷은 여러 홉을 거쳐 라우팅 될 수 있는 것이다.
--
라우팅 테이블 (Routing Table)
--
라우팅 테이블은
특정 수신지까지 도달하기 위한 정보를 라우터가 저장하고 관리하는 일종의 표 같은 정보로,
라우터는 해당 라우팅 테이블을 참고하여 수신지까지의 도달 경로를 판단한다.
라우팅 테이블에 포함된 정보는
라우팅 방식 or 호스트의 환경에 따라 달라질 수 있지만, 공통적인 정보들이 존재한다.
- 수신지 IP 주소 & 서브넷 마스크 : 최종적으로 패킷을 전달할 대상
- 다음 홉 : 최종 수신지까지 가기 위해 다음으로 전달해야 할 호스트 IP 주소 or 인터페이스
(게이트웨이라고 명시하기도 함) - 네트워크 인터페이스 : 패킷을 내보낼 통로
- 메트릭 : 해당 경로로 이동하는 데에 드는 비용
(메트릭이 낮은 경로를 선호)
예시
위와 같은 라우팅 테이블은
수신자가 192.168.222.0/24 (범위 192.168.222.1 ~ 192.168.222.254)인 패킷을
eth0(인터페이스)를 통해 다음 홉인 192.168.222.1(게이트웨이)로 전송한다는 것을 의미한다.
다만 전달할 패킷이 라우팅 테이블에 명시되지 않은 경로로 전송해야 하는 경우도 존재한다.
(패킷 내의 수신지 IP 주소가 라우팅 테이블에 있는 수신지 IP 주소, 서브넷 마스크 항목에 해당하지 않는 경우)
이러한 경우 기본 경로(디폴트 라우트)를 설정할 수 있다.
디폴트 라우트는
모든 IP를 의미하는 0.0.0.0/0으로 명시할 수 있다.
그래서 만약 수신지 IP가 132.131.22.1인 패킷을 전달해야 하는 경우
해당 IP 주소는 라우팅 테이블에 명시되어 있지 않아 디폴트 라우트가 지정한 경로로 전송하게 된다.
--
정적 라우팅 & 동적 라우팅
--
"정적 라우팅"과 "동적 라우팅"은 "라우팅 테이블"을 만드는 2가지 방법이다.
정적 라우팅 (Static Routing)
사용자가 수동으로 직접 작성한 라우팅 테이블을 기반으로 라우팅 되는 방식이다.
동적 라우팅 (Dynamic Routing)
자동으로 만들어진 라우팅 테이블을 기반으로 라우팅되는 방식이다.
그래서 동적 라우팅을 하면 라우팅 테이블의 항목이 수시로 변할 수 있다.
자동으로 라우팅 테이블 항목을 만들어지는 방법
모든 라우터는 특정 수신지까지 도달하기 위한 최적의 경로를 찾아
라우팅 테이블에 추가하려고 노력한다.
이를 위해서 라우터끼리 서로 자신의 정보를 교환하게 되는데
이 과정에서 사용되는 프로토콜이 바로 동적 라우팅 프로토콜이다.
라우팅 프로토콜 (Routing Protocol)
라우터끼리 자신들의 정보를 교환하며 패킷이 이동할 최적의 경로를 찾기 위한 프로토콜이다.
--
'CS > 네트워크' 카테고리의 다른 글
[전송 계층] TCP와 UDP (0) | 2024.11.21 |
---|---|
[전송 계층] 전송 계층 (0) | 2024.11.20 |
[네트워크 계층] IP 주소 (0) | 2024.11.18 |
[네트워크 계층] ARP (Address Resolution Protocol) (0) | 2024.11.17 |
[네트워크 계층] IP (0) | 2024.11.16 |