30회 가량 ACSA 관련 교육 포스팅을 진행하면서 Layer 2 중심의 내용을 다뤄봤습니다.
이제는 Layer 2에서 한 단계 올라가 Layer 3 내용을 얘기해볼까 합니다.
Layer 3의 IP 패킷과 라우팅, 게이트웨이 등에 대한 내용을 살펴보겠습니다.
그럼 라우팅이 무엇인지부터 한 번 알아보겠습니다.
라우팅
이미 우리는 같은 네트워크(브로드캐스트 도메인)에서 장치간 어떻게 통신하는지 알고 있습니다. Layer 2 스위치는 Layer 2 프레임 헤더 정보를 사용하여 동일한 LAN의 장치로 프레임을 전송합니다. 출발지 MAC주소를 기준으로 MAC주소 테이블을 생성하고 목적지 MAC주소를 기반으로 프레임을 전송한다는 사실을 다시 한 번 기억하고 Layer 3 통신을 한 번 살펴보겠습니다.
Layer 3 라우터는 다른 LAN 또는 다른 브로드캐스트 도메인 사이에서 IP주소를 기반으로 패킷을 이동 시킵니다.
예전 OSI 7계층을 설명하면서 Layer 3는 네트워크 계층을 나타낸다고 했습니다. Layer 3의 장치들은 IP주소를 분석하고 출발지에서 목적지까지 가장 최적의 경로를 선택하여 패킷을 전송하는 라우팅을 수행합니다.
IP주소 (IP address)
기본적으로 라우팅(경로) 결정을 Layer 3의 주소의 분석을 기반으로 합니다. 여기서 인터넷 프로토콜(IP)가 네트워크 내 각 장치에 대한 식별자 또는 주소를 제공합니다.
현재 일반적으로 널리 사용되는 IP버전은 IPv4(버전 4)와 IPv6(버전 6), 두 가지가 있습니다. 이 두 버전간의 주요 차이점은 주소의 공간입니다. IPv4는 약 42억 9천만개의 IP주소를 할당할 수 있지만, IPv6는 340의 undecillion(10의 36제곱), 즉 거의 무제한으로 사용이 가능합니다.
IPv4 주소는 10진수 표기법으로 표현하여 32비트로 구성됩니다. 이 표기법은 옥텟(Octets)이라고 하는 4개의 섹션으로 나눕니다. 이름에서 알 수 있듯이 각 옥텟은 8비트(1바이트)로 구성됩니다. 아래 그림은 동일한 LAN에각각 고유한 IP주소를 가진 세 개의 호스트를 보여줍니다.
참고: 옥텟은 8비트로 구성되어 있기 때문에 한 옥텟은 십진수 0부터 255까지입니다.
IPv4 주소
IP주소는 네트워크ID와 호스트ID, 두 부분으로 구성됩니다. 네트워크 ID는 네트워크를 식별하는 주소의 왼쪽 부분으로 가장 중요한 부분입니다. 호스트ID는 개별 호스트를 식별하는 주소 오른쪽 부분입니다.
네트워크ID와 호스트ID를 이해하기 가장 쉬운 방법은 집 주소를 생각해보면 좋습니다.
네트워크ID는 도로명 이름과 유사하고, 호스트ID는 건물 번호와 유사하다고 생각해볼 수 있습니다.
IPv4주소는 항상 32비트입니다. 어떤 경우에는 16비트가 네트워크를 나머지 16비트가 호스트를 나타내지만, 또 다른 경우에는 24비트가 네트워크를 나머지 8비트가 호스트를 나타내기도 합니다. 거의 모든 경우의 수로 네트워크와 호스트간에 비트 조합이 있을 수 있습니다. 네트워크와 호스트간의 구분은 서브넷 마스크에 의해 나눠집니다.
Network Mask
네트워크 마스크는 IP주소의 네트워크 ID와 호스트ID를 나타내는 비트의 수를 보여주는 IP 매개변수(Parameter)입니다. 32비트로 구성되어 있는 네트워크 마스크는 모든 IP 네트워크 장치에 대한 필수 매개변수입니다.
네트워크 마스크는 두 장치(엔드포인트)가 동일한 네트워크에 있는지 아니면 다른 네트워크에 있는 확인합니다. 이 프로세스는 간단한 비교로 이뤄집니다.
출발지와 목적지의 네트워크 ID가 같으면 두 장치가 동일한 브로드캐스트 도메인(동일 네트워크)에 있는 것입니다. 두 장치간 통신은 Layer 2 스위칭으로 충분합니다. 하지만, 출발지와 목적지의 네트워크 ID가 다르다면 장치가 서로 다른 네트워크에 있다는 것입니다. 이럴 경우에는 Layer 3 라우팅 통신이 필요합니다.
네트워크 마스크는 IPv4와 마찬가지로 32비트 길이를 갖고 있습니다. 마스크는 연속된1과 0의 2진수 블록으로 이뤄져 있습니다. 1은 네트워크 ID 에 할당된 IPv4 주소 부분을 나타내고, 0은 호스트 ID에 할당된 IPv4 주소 부분을 나타냅니다.
위 그림을 보면 좀 더 이해가 쉬울 것입니다. 마스크의 숫자 1이 끝나는 지점과 0이 시작하는 지점이 네트워크ID와 호스트ID를 구분하는 부분입니다.
네트워크 마스크는 여러 가지 방식으로 표기합니다. IPv4와 마찬가지로 10진수와 점으로 이뤄진 4개의 옥텟을 사용하여 표기하기도 하며, Prefix를 표기하는 것으로 대체하기도 합니다. 이 경우에는 IP주소 뒤에 슬래시(/)와 숫자로 표기합니다.
위 그림의 예시로는 10.1.10.100/24로 표기합니다. 여기서 Prefix 24는 네트워크 마스크의 1의 개수를 의미합니다.
IP 라우팅
장치가 다른 네트워크에 있는 또 다른 장치로 통신을 해야 할 때, 브로드캐스트 도메인 내 어떤 네트워크 장치가 트래픽을 목적지 네트워크로 라우팅 할 수 있는지 알아야 합니다. 이 정보는 IP 라우팅을 사용하는 컴퓨터들에게 제공됩니다.
엔드 포인트의 경우에 이 정보는 “Static route”의 형태로 수동으로 추가되어야 합니다. 그러나 라우터나 멀티레이어 스위치는 수동으로 추가된 “Static route”을 사용하기도 하지만, 라우팅 프로토콜을 사용하여 각 목적지에 대한 최적의 경로를 자동으로 결정할 수 있습니다.
Static 라우팅
Static 라우팅을 위해서 라우터 1에서 라우터 2에 대한 다음 정보를 지정해야 합니다.
- 목적지 IP주소: 가고 싶은 곳
- 서브넷 마스크: 목적지 IP주소의 네트워크 부분과 호스트 부분을 구분하는 방법
- Next-hop IP주소: 패킷을 목적지로 보낼 수 있는 현재 네트워크상의 라우터 IP주소
위 그림은 두 개의 라우터(Core-1 / Core-2)로 연결된 세 개의 네트워크를 나타냅니다.
Core-1은 네트워크 A와 네트워크 B를 연결하고, Core-2는 네트워크 B와 네트워크 C를 연결합니다.
만약, 호스트 A(네트워크 B)가 Server-1(네트워크 A)와 통신해야 하는 경우에는 녹색으로 표시된 첫번째 라우팅을 사용해야 합니다.
첫번째 라우팅의 내용은 “마스크가 255.0.0.0(/8)인 목적지 10.0.0.1에 도달하기 위해서는 IP주소 172.16.0.1를 갖고 있는 Next-hop 라우터로 가야 합니다.” 라는 의미입니다.
그렇다면, Server-2로 통신해야 할 경우는 어떨까요?
당연히 빨간색으로 표시된 두번째 라우팅을 사용할 것입니다. “마스크가 255.255.255.0(/24)인 목적지 192.168.0.1에 도착하기 위해서는 IP주소 172.16.0.2를 갖고 있는 Core-2 라우터로 가야 합니다.”라는 내용입니다.
Default Gateway (기본 게이트웨이)
기본 게이트웨이(Default Gateway, DG)는 브로드캐스트 도메인 또는 네트워크의 엔드포인트 장치에서 네트워크의 모든 목적지로 라우팅하는 장치입니다. 쉽게 얘기하면, 호스트에게 “어디든 외부 네트워크로 나가려면, 다음의 next-hop 주소로 가세요.”라고 할 때, 그 next-hop의 IP주소를 갖고 있는 장치입니다.
기본 게이트웨이는 엔드 포인트간 단일 경로만 필요하기 때문에, 라우팅 결정을 최적화하고 단순화합니다.
그림을 살펴보면 동일 네트워크에 있는 호스트 A와 호스트 B에 대한 기본 게이트웨이로 상단 라우터가 위치하는 것을 확인할 수 있습니다.
참고: 동일한 서브넷이라 하더라도 네트워크에 두 개 이상의 라우터가 있는 경우 엔드포인트별로 서로 다른 기본 게이트웨이를 가질 수 있습니다.
오늘은 Layer 3에 필요한 기본적인 것들을 알아보았습니다. Layer 3의 라우팅은 앞서 얘기한 것처럼 IP주소를 기반으로 동작하게 되며, 이 IP주소와 함께 서브넷마스크, 게이트웨이까지 알아보았습니다.
다음 포스팅에서는 본격적으로 라우팅에 대해 알아보겠습니다.