라우팅: 네트워크 간의 통신을 수행할 때 최적의 경로를 결정하는 과정
다음의 내용에 집중하여 공부해 볼 것!
- 라우팅이 어떻게 이루어지는지 -- 이 글에서 다룰 내용
- 네트워크 간의 통신이 어떤 유형으로 분류될 수 있는지
데이터 링크 계층의 한계
- 물리 계층과 데이터 링크 계층만으로 LAN을 넘어서 통신하기 어려운 두 가지 이유
- 다른 네트워크까지의 도달 경로를 파악하기 어려움 (∵ 네트워크 계층, 네트워크 계층의 장비가 필요하기 때문)
- 모든 네트워크에 속한 모든 호스트의 위치를 특정하기 어려움
대표적인 네트워크 계층의 장비: 라우터(router)
- 라우터(router) - 라우팅을 수행하는 대표적인 장비
- 라우팅(routing) - 패킷이 이동할 최적의 경로를 결정하는 것
네트워크 간 통신을 가능케 하는 네트워크 계층의 장비
- 네트워크 간 통신 과정에서 패킷은 여러 라우터를 거쳐서 다양한 경로로 이동할 수 있음
- 패킷은 여러 대의 라우터를 깡충깡충 거치듯 수신지까지 이동
- 홉(hop): 라우팅 도중 패킷이 호스트와 라우터 간에, 혹은 라우터와 라우터 간에 이동하는 한 과정
- IP 헤더 필드 중 TTL(Time to Live) 값은 한 홉 당 1씩 감소
- hop-by-hop routing
라우팅 과정(홉 수) 확인
- 윈도우 - tracert www.google.com
- 리눅스/macOS - traceroute www.google.com
- 위의 경우 18개의 홉을 거침
- traceroute는 UDP 패킷과 ICMP 오류 보고 기능을 사용하며, UDP 패킷을 경로상의 각 게이트웨이나 라우터에 세 번 전송한다.
- 출력은 게이트웨이 이름, 게이트웨이의 IP 주소, 게이트웨이에 대한 세 번의 왕복 시간(RTT; Round Trip Time)이 표시된다.
- *(별표)는 보안상의 이유로 ICMP를 차단하였거나 문제가 있어 응답이 없을 경우 출력된다.
- 호스트는 TTL 값을 1씩 증가시키면서 해당 거리의 라우터를 확인하고 TTL 값이 0이 되면 ICMP Time Exceeded 메시지를 출발지로 보낸다. 이는 목적지 호스트에 도착할 때까지 계속된다.
ex. 1→0, 2→0, 3→0... - 호스트는 목적지 호스트가 사용하지 않을 것 같은 UDP 포트 번호(30,000보다 큰 값)를 선택해 보내는데 패킷이 목적지에 도달했다면 ICMP Destination Unreachable 메시지를 출발지로 보내어 경로를 추적할 수 있게 된다.
- tracert와의 차이점은 tracert는 ICMP Echo 메시지를 기반으로 한다.
[출처: https://www.ibm.com/docs/ko/aix/7.1?topic=analysis-traceroute-command, https://techjuny.tistory.com/entry/Ping-Traceroute-Tracert, https://codeyk.tistory.com/29, https://blog.innern.net/115]
그렇다면 라우터는 라우팅을 어떻게 수행할까?
- 학습의 주안점: 라우팅의 핵심인 라우팅 테이블(routing table)
- 라우팅 테이블이 만들어지는 방법과 프로토콜에 따른 라우팅의 분류 - 라우터가 어떤 패킷을 받았을 때 이 패킷을 어디로 이동시켜야 하는지의 정보가 담긴 표
- 라우팅 테이블을 수동으로 만들건지, 자동으로 만들건지에 대한 구분
- Static Routing
- Dynamic Routing: 라우팅 프로토콜이 사용 - 라우팅 테이블에 어떤 내용들이 채워지느냐에 대한 구분
- Interior Gateway Protocols (IGP): AS 내부
- Exterior Gateway Protocols (EGP): AS 외부
라우팅 테이블(Routing Table)
- 특정 수신지까지 도달하기 위한 정보를 명시한 표와 같은 정보
- 라우터는 라우팅 테이블을 참고하여 수신지까지의 도달 경로를 판단
라우팅 테이블에 포함된 정보
- 수신지 IP 주소와 서브넷 마스크
- 최종적으로 패킷을 전달할 대상 - 다음 홉(next hop)
- 최종 수신지까지 가기 위해 다음으로 거쳐야 할 호스트의 IP 주소나 인터페이스
- 게이트웨이라고 명시되기도 함 - 네트워크 인터페이스
- 패킷을 내보낼 장소
- 인터페이스(NIC) 이름이 직접 명시되거나 인터페이스에 대응하는 IP 주소 명시 - 메트릭(metric)
- 해당 경로로 이동하는 데 드는 비용
- 라우팅 테이블의 여러 경로 중 메트릭이 낮은 경로를 선호
* 라우팅 테이블 정의 및 예시
디폴트 라우트(default route): 라우팅 테이블에 경로가 없을 때
- 기본적으로 패킷을 내보냇 경로
- "모든 IP 주소"를 의미하는 0.0.0.0/0로 명시
- 일반적으로 기본 게이트웨이 주소
- 기본 게이트웨이: 네트워크 외부로 나아가기 위한 첫 경로, 일반적으로 라우터/공유기 주소 - 라우팅 테이블에 따로 경로가 등록되어 있지 않은 패킷들을 기본적으로 기본 게이트웨이(라우터)에게 전달
라우팅 테이블 확인하기
- 윈도우 - route print
- 수신지 IP 주소(네트워크 대상), 서브넷 마스크(네트워크 마스크), 게이트웨이, 인터페이스(에 할당된 IP 주소), 메트릭 출력
- macOS, 리눅스 - netstat -rn
- 서브넷 마스크는 CIDR 표기법으로 수신지 IP 주소와 함께 명시
'network' 카테고리의 다른 글
[network] 혼자 공부하는 네트워크 04-1 전송 계층 개요: IP의 한계와 포트(241017) (2) | 2024.10.17 |
---|---|
[network] 혼자 공부하는 네트워크 03-3 라우팅의 분류와 라우팅 프로토콜 (240815) (1) | 2024.08.15 |
[network] 혼자 공부하는 네트워크 03-2 추가: 127.0.0.1과 0.0.0.0 (240813) (0) | 2024.08.13 |
[network] 혼자 공부하는 네트워크 03-2 정적 IP 주소와 동적 IP 주소 (240812) (0) | 2024.08.12 |
[network] 혼자 공부하는 네트워크 03-2 공인 IP 주소와 사설 IP 주소 (240811) (1) | 2024.08.11 |