본문 바로가기

혼자 공부하는 네트워크

[혼공네트] Ch3. 네트워크 계층

3-1 LAN을 넘어서는 네트워크 계층

LAN을 넘어서 다른 네트워크와 통신하기 위해서는 네트워크 계층의 역할이 필수적이다.

네트워크 계층에서는 IP 주소를 이용해 송수신지 대상을 지정하고, 다른 네트워크에 이르는 경로를 결정하는 라우팅을 통해 다른 네트워크와 통신한다. 

 

데이터 링크 계층의 한계

1. 물리 계층과 데이터 링크 계층만으로는 다른 네트워크까지의 도달 경로를 파악하기 어렵다.

서로 다른 LAN에 속한 컴퓨터들이 정보를 주고받는다면, 해당 패킷은 서로에게 도달하기까지 수많은 네트워크 장비를 거치며 다양한 경로를 통해 이동한다. 통신을 빠르게 주고받으려면 이 중에 최적의 경로로 패킷이 이동해야한다. 이렇게 패킷이 이동할 최적의 경로를 결정하는 것을 라우팅이라고 한다. 물리 계층과 데이터 링크 계층의 장비로는 라우팅을 할 수 없지만, 네트워크 계층의 장비로는 가능하다. 

 

2. MAC 주소만으로는 모든 네트워크에 속한 호스트의 위치를 특정하기 어렵다.

현실적으로 모든 호스트가 모든 네트워크에 속한 모든 호스트의 MAC 주소를 알기 어렵다. 그래서 MAC 주소만으로는 모든 호스트를 특정하기 어렵다. 택배 수신인 역할을 하는 정보가 MAC 주소라면, 수신지 역할을 하는 정보는 네트워크 계층의 IP 주소다. 택배 배송 과정에서 수신인보다 수신지를 우선적으로 고려하는 것처럼, 네트워크에서도 MAC 주소와 IP 주소를 함께 사용하고, 기본적으로 IP 주소를 우선으로 활용한다. 

MAC을 물리 주소하고 부르는 것처럼 IP 주소는 논리 주소라고 부른다. MAC 주소는 일반적으로 NIC마다 할당되는 고정된 주소이지만, IP 주소는 호스트에 직접 할당이 가능하다. DHCP라는 프로토콜을 통해 자동으로 할당받거나 사용자가 직접 할당할 수 있고, 한 호스트가 복수의 IP 주소를 가질 수도 있다.

 

인터넷 프로토콜

네트워크 계층의 가장 핵심적인 프로토콜은 인터넷 프로토콜(IP)이다. IP는 IPv4, IPv6으로 두 가지 버전이 있다. 일반적으로 IP 주소를 이야기할 때는 주로 IPv4를 의미하는 경우가 많다. 

 

IP 주소 형태

IP 주소는 4바이트로 주소를 표현할 수 있고,숫자당 8비트로 표현되기에 0~255 범위 안에 있는 4개의 10진수로 표기된다. 각 10진수는 점(.)으로 구분되며, 점으로 구분된 8비트의 10진수를 옥텟이라고 한다.

 

IP의 기능

IP의 기능은 대표적으로 두 가지의 기능이 있다. IP 주소 지정과 IP 단편화이다. 

IP 주소 지정은 IP 주소를 바탕으로 송수신 대상을 지정하는 것을 의미한다. IP 단편화는 전송하고자 하는 패킷의 크기가 MtU라는 최대 전송 단위보다 클 경우, 이를 MTU 크기 이하의 복수의 패킷으로 나누는 것을 의미한다. 

MTU는 한 번에 전송 가능한 IP 패킷의 최대 크기를 의미한다. IP 패킷의 헤더도 MTU 크기에 포함이 된다. 일반적인 MTU 크기는 1500바이트이며, MTU이라로 나누어진 패킷은 수신지에 도착하면 다시 재조합된다. 

 

IPv4

프레임의 데이터 필드에는 상위 계층에서 전달받거나 상위 계층으로 전달해야할 내용이 명시되어 있다. 따라서 IPv4 패킷은 프레임의 페이로드로 데이터 필드에 명시 된다.

IPv4 패킷은 그림과 같은 형식을 띄고 있다. 식별자, 플래그, 단편화 오프셋 필드는 IP 단편화 기능에 관여하고, 송신지 IP 주소, 수신지 IP 주소는 IP 주소 지정 기능에 관여한다. 

 

  • 식별자: 식별자는 패킷에 할당된 번호이다. 만일 메세지 전송 과정에서 IPv4 패킷이 여러 조각으로 쪼개져서 전송되었다면, 수신지에서는 이들을 재조합해야 한다. 이때 쪼개져서 수신지에 도착한 IPv4 패킷들이 어떤 메세지에서부터 쪼개졌는지를 인식하기 위해서 식별자를 사용한다. 
  • 플래그: 플래그는 총 3개의 비트로 구성된 필드이다. 첫번째 비트는 항상 0으로 예약된 비트로 현재 사용하지 않는다. 사용되는 나머지 두 개의 비트 중에서 하나는 DF라는 이름이 붙은 비트이다. 이는 Don't Fragment의 약어로, IP 단편화를 수행하지 말라는 표시이다. 만일 이 비트가 1로 설정되어 있다면 IP 단편화를 수행하지 않고, 0으로 설정되어 있따면 IP 단편화가 가능하다.
    또 하나의 비트는 ML라는 비트이다. More Fragment의 약어로, 단편화된 패킷이 더 있는지를 나타낸다. 0이라면 이 패킷이 마지막 패킷임을 의미하고, 1이라면 쪼개진 패킷이 아직 더 있다는 것을 의미한다. 
  • 단편화 오프셋: 단편화 오프셋은 패킷이 단편화되기 전에 패킷이 초기 데이터에서 몇 번째로 떨어진 패킷인지를 나타낸다. 단편화되어 전송되는 패킷들은 수신지에 순서대로 도착하지 않을 수 있다. 따라서 수신지가 패킷들을 순서대로 재조합하려면 단편화된 패킷이 초기 데이터에서 몇 번째 데이터에 해당하는 패킷인지 알아야 한다. 이를 판단하기 위해 단편화 오프셋이 활용된다. 
  • TTL: TTL은 Time To Live의 약어로 패킷의 수명을 의미한다. 멀리 떨어진 호스트끼리 통신할 때 패킷은 여러 라우터를 거쳐 이동할 수 있다. 패킷이 하나의 라우터를 거칠 때마다 TTL이 1씩 감소하며, TTL이 0으로 떨어진 패킷은 폐기된다. 패킷이 호스트 또는 라우터에 한번 전달되는 것을 이라고 한다. 즉, TTL 필드의 값은 홉마다 1씩 감소한다. TTL 필드의 존재 이유는 무의미한 패킷이 네트워크 상에 지속적으로 남아있는 것을 방지하기 위함이다. 
  • 프로토콜: IP 패킷의 프로토콜은 상위 계층의 프로토콜이 무엇인지를 나타내는 필드이다. 예를 들어 전송 계층의 대표적인 프로토콜인 TCP는 6번, UDP는 17번이다.
  • 송신지 IP 주소, 수신지 IP 주소: 이름 그대로 송수신지의 IPv4 주소를 알 수 있다.

 

IPv6

이론적으로 할당 가능한 IPv4 주소는 약 43억개이다. 전 세계 인구가 하나씩 IP 주소를 가지고 있어도 부족한 숫자이다. 결국 약 IPv4의 주소의 총량은 쉽게 고갈될 수 있다. 이런 이유로 IPv6이 등장했다. IPv6 주소는 16바이트로 주소를 표현할 수 있고, 콜론(;)으로 구분된 8개 그룹의 16진수로 표기된다. 다시말해 할당 가능한 IPv6 주소는 이론적으로 무한에 가까운 개수를 할당할 수 있다. 

IPv6 패킷의 기본 헤더는 IPv4에 비해 간소화되어 있다.

 

  • 다음 헤더: 다음 헤더 필드는 상위 계층의 프로토콜을 가리키거나 확장 헤더를 가리킨다. IPv6는 추가적인 헤더 정보가 필요할 경우에 기본 헤더와 더불어 확장 헤더라는 추가 헤더를 가질 수 있다. 확장 헤더는 기본 헤더와 페이로드 데이터 사이에 위치한다. 또한 다른 확장 헤더를 가질 수도 있다. 확장 헤더의 종류는 다양하기 때문에 상황에 맞는 다양한 정보를 운반할 수 있다. 
  • 홉 제한: 홉 제한 필드는 IPv4 패킷의 TTL 필드와 비슷하게 패킷의 수명을 나타낸다.
  • 송신지 IP 주소, 수신지 IP 주소: IPv6 주소 지정이 가능하다.

 

ARP

상대 호스트의 IP 주소는 알지만, MAC 주소는 알지 못하는 상황이 있을 수 있다. 이럴 때 ARP 프로토콜을 사용한다.

ARP는 IP 주소를 통해 MAC 주소를 알아내는 프로토콜이다. 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아낼 수 있다. 

호스트 A와 B가 모두 동일한 네트워크에 속한 상태에서 A가 B에게 패킷을 보낸다고 가정하자. A는 B의 IP 주소를 알고 있지만, MAC 주소는 모르는 상황이다.  여기서 ARP가 사용된다. ARP의 동작 과정은 다음과 같다.

 

1. ARP 요청

우선 A는 네트워크 내의 모든 호스트에게 브로드캐스트 메세지를 보낸다. 이 메세지는 ARP 요청이라는 ARP 패킷이다. ARP 요청은 "xx.xx.xx.xx라는 IP와 통신하고 싶은데 이 IP의 MAC 주소를 알 수 있나요?"와 동일하다.

 

2. ARP 응답

네트워크 내의 모든 호스트가 ARP 요청 메세지를 수신하지만, B를 제외한 나머지 호스트는 자신의 IP 주소가 아니므로 이를 무시한다. B는 자신의 MAC 주소를 담은 메세지를 전송한다. 이 유니캐스트 메세지는 ARP 응답이라는 ARP 패킷이다. B의 MAC 주소가 포함된 메세지를 수신한 A는 B의 MAC 주소를 알게 된다.

 

3. ARP 테이블 갱신

ARP를 활용할 수 있는 모든 호스트는 ARP 테이블이라는 정보를 유지한다. ARP 테이블은 IP 주소와 그에 맞는 MAC 주소 테이블을 대응하는 표이다. A는 B의 MAC 주소를 알게 되면 호스트 B의 IP 주소와 MAC 주소의 연관 관계를 ARP 테이블에 추가한다. 이 ARP 테이블은 일정 시간이 지나면 삭제되고, 임의로 삭제할 수 있다. 여기까지 이루어지면 앞으로 A는 B와 통신할 때 굳이 브로드캐스트로 ARP 요청을 보낼 필요가 없다. 

 

그러면 통신하고자 하는 호스트 A와 B가 서로 다른 네트워크에 속해 있으면 어떻게 해야할까?

호스트 A와 호스트 B가 동일한 네트워크에 있지 않는다. 만일 호스트 A가 라우터의 MAC 주소를 모른다면 ARP 요청, ARP 응답 과정을 통해 라우터의 MAC 주소를 얻어와서 이를 향해 패킷을 전송한다. 

이제 라우터에서 호스트 B에게 패킷을 전달해야 한다. 만일 라우터가 호스트 B의 MAC 주소를 모른다면 똑같이 ARP 요청 - ARP 응답 과정을 통해 호스트 B의 MAC 주소를 얻어와야만 호스트 B에게 패킷을 전달할 수 있다. 

 

이 상황은 매우 간략화된 예시로, 실제로는 라우터 간의 통신을 주고받을 때 ARP만 사용하지 않는다. 

💡 IP 단편화는 되도록 하지 않는 것이 좋다.
데이터가 여러 패킷으로 쪼개지면 전송해야할 패킷의 헤더들이 많아지고, 이는 불필요한 트래픽 증가와 대역폭 낭비로 이어질 수 있기 때문이다. IP 단편화를 피하려면 IP 단편화 없이 주고 받을 수 있는 최대 크기만큼 전송해야 한다. 이를 경로 MTU라고 한다. 

Ch.03-1 확인 문제 1

IPv4의 대표적인 기능 두가지 → IP 주소 지정, IP 단편화


 

3-2 IP 주소

하나의 IP 주소는 크게 네트워크 주소와 호스트 주소로 이루어진다. 네트워크 주소는 호스트가 속한 특정 네트워크를 식별하는 역할을 하며, 호스트 주소는 네트워크 내에서 특정 호스트를 식별하는 역할을 한다.

 

네트워크 주소와 호스트 주소

네트워크 주소는 네트워크 ID, 네트워크 식별자 등으로 부리기도 하면, 호스트 주소는 호스트 ID, 호스트 식별자 등으로 부른다. 

IP 주소에서 네트워크 주소와 호스트 주소를 구분하는 범위는 유동적일 수 있다. 네트워크 주소가 하나의 옥텟으로 이루어져있다면 한 네트워크당 호스트 주소 할당에 24비트를 사용할 수 있어 상대적으로 많은 호스트에 IP 주소를 할당할 수 있다. 만약 네트워크 주소가 세 개의 옥텟으로 이루어져있다면, 네트워크 당 호스트 주소 할당에 8비트를 사용할 수 있으며, 상대적으로 적은 호스트에 IP 주소를 할당할 수 있다. 하나의 IP 주소에 호스트 주소의 공간의 얼마나 할당하는 것이 좋은지 고민하여 생겨난 개념이 IP 주소의 클래스이다.

 

클래스풀 주소 체계

클래스는 네트워크 크기에 따라 IP 주소를 분류하는 기준이다. 클래스를 이용하면 필요한 호스트 IP 개수에 따라 네트워크 크기를 가변적으로 조정해 네트워크 주소와 호스트 주소를 구획할 수 있다. 클래스 기반으로 IP 주소를 관리하는 주소 체계를 클래스풀 주소 체계하고 한다. 

총 5개의 클래스가 있다. 각각 A 클래스, B 클래스, C 클래스, D 클래스, E 클래스가 있다. 이 중에 D와 E는 각각 멀티캐스트를 위한 클래스, 특수한 목적을 위해 예약된 클래스이기 때문에, 네트워크의 크기를 나누는데 실질적으로 사용되는 클래스는 A, B, C이다. 

A 클래스는 B와 C에 비해 할당 가능한 호스트 주소의 수가 많다. 네트워크 주소는 0으로 시작하고 1옥텟으로 구성되며, 호스트 주소는 3옥텟으로 구성된다. A 클래스로 나타낼 수 있는 IP 주소의 범위는 10진수로 표현하면 0.0.0.0 ~ 127.255.255.255 이다. 가장 처음 옥텟의 주소가 0~127일 경우 A 클래스 주소임을 짐작할 수 있다.

 

B 클래스의 네트워크 주소는 비트 10으로 시작하고 2옥텟으로 구성되며, 호스트도 2옥텟으로 구성된다. B 클래스로 나타낼 수 있는 IP 주소의 범위는 10진수로 표현하면 128.0.0.0 ~ 191.255.255.255 이다. 따라서 가장 처음 옥텟 주소가 128~191일 경우 B 클래스 임을 짐작할 수 있다.

 

C 클래스의 네트워크 주소는 비트 110으로 시작하고 3옥텟으로 구성되며, 호스트도 1옥텟으로 구성된다. C 클래스로 나타낼 수 있는 IP 주소의 범위는 10진수로 표현하면 192.0.0.0 ~ 223.255.255.255 이다. 따라서 가장 처음 옥텟 주소가 192~223일 경우 C 클래스 임을 짐작할 수 있다.

 

다만 호스트 주소 공간을 모두 사용할 수 있는 것은 아니다. 호스트 주소가 전부 0인 IP 주소와 호스트 주소가 전부 1인 IP 주소는 특정 호스트를 지칭하는 IP 주소로 활용할 수 없다. 전자는 해당 네트워크 자체를 의미하는 네트워크 주소로 사용되고, 후자는 브로드캐스트를 위한 주소로 사용된다. 

클래스 초기 비트 네트워크 주소 비트/
호스트 주소 비트
할당 가능한 네트워크 수 할당 가능한 호스트 수
A 0 8 / 24 2⁷(128) 2²⁴(16,777,216) - 2
B 10 16 / 16 2¹⁴(16,384) 2¹⁶(65,536) - 2
C 110 24 / 8 2²¹(2,097,152) 2⁸(256) - 2

 

클래스리스 주소 체계

클래스풀 주소 체계를 이용하면 네트워크의 영역을 결정하고 할당 가능한 호스트의 주소 공간을 유동적으로 관리할 수 있지만, 이 방식에는 한계가 있다. 클래스별 네트워크의 크기가 고정되어 있기에 여전히 다수의 IP 주소가 낭비될 가능성이 크다는 문제가 있다. 단적인 예로 A 클래스 하나당 할당 가능한 호스트 IP 주소는 1,600만개 이사이고, B 클래스 네트워크 하나당 할당 가능한 호스트 IP는 6만개가 넘는다. 단일 조직에서 이 정도의 호스트가 필요한 경우는 많지 않다. 게다가 A, B, C 클래스 외에는 다른 크기의 네트워크를 구성할 수도 없다. 

그래서 클래스풀 주소 체계보다 더 유동적이고 정교하게 네트워크를 구획할 수 있는 클래스리스 주소 체계가 등장했다. 클래스의 개념 없이 클래스에 구애받지 않고 네트워크의 영역을 나누어서 호스트에게 IP 주소 공간을 할당하는 방식이다. 

 

서브넷 마스크

클래스리스 주소 체계는 클래스를 이용하지 않으므로 IP 주소상에서 네트워크 주소와 호스트 주소를 구분 짓는 수단으로 서브넷 마스크를 이용한다.  서브넷 마스크는 IP 주소 상에서 네트워크 주소는 1, 호스트 주소는 0으로 표기한 비트열을 의미한다. 서브넷 마스크를 이용해 클래스를 원하는 크기로 더 잘게 쪼개어 사용하는 것을 서브네팅이라고 한다.

 

서브네팅: 비트 AND 연산

서브넷 마스크를 이용해 네트워크 주소와 호스트 주소를 구분 짓는 방법은 IP 주소와 서브넷 마스크를 비트 AND 연산하는 것이다. 비트 AND 연산이란 피연산자가 모두 1인 경우에는 1, 아닌 경우에는 0이 되는 연산이다. 

 

IP 주소가 192.168.219.103 이고 서브넷 마스크가 255.255.255.0이라고 가정해보자.

이 둘에 대해 비트 AND 연산을 수행하면 네트워크 주소를 구할 수 있다.

 

 

서브넷 마스크 표기: CIDR 표기법

서브넷 카스크를 표기하는 방법은 크게 두 가지가 있다.

1. 10진수로 직접 표기하는 방법

2. 'IP 주소/서브넷마스크 상의 1의 개수'로 표기하는 방법

두 번째 방식인 'IP 주소/서브넷 마스크 상의 1의 개수'로 표기하는 방법을 CIDR 표기법이라 한다. IP 주소와 서브넷 마스크를 함께 표기할 수 있는 간단한 표기로 많이 활용된다. 

 

192.168.0.2/25라는 표기가 있다고 가정해보자.

IP 주소를 나타내는 192.168.0.2를 2진수로 표현하면 11000000.10101000.00000000.00000010 이다.

서브넷 마스크를 나타내는 25는 1이 총 25개라는 뜻으로 11111111.11111111.11111111.10000000 을 의미한다. 10진수로 표현하면 255.255.255.128과 동일하다. 서브넷 마스크를 IP 주소와 비트 AND 연산을 하면 결과는 192.168.0.0이다. 즉, 네트워크 주소는 192.168.0.0이다. 호스트는 7비트로 표현되므로, 192.168.0.0과 브로드캐스트 192.168.0.127을 제외한 총 126개의 호스트를 할당할 수 있는 192.168.0.0이라는 네트워크에 속한 2라는 호스트를 의미한다.

 

공인 IP 주소와 사설 IP 주소

전 세계에는 고유한 IP 주소가 있고, 고유하지 않은 IP 주소가 있다. 

 

공인 IP 주소

공인 IP 주소는 전 세계에서 고유한 IP 주소이다. 네트워크 간의 통신, 인터넷을 이용할 때 사용하는 IP 주소가 바로 공인 IP 주소이다. 공인 IP 주소는 ISP나 공인 IP 주소 할당 기관을 통해 할당받을 수 있다.

 

사설 IP 주소와 NAT

사설 IP 주소란 사설 네트워크에서 사용하기 위한 IP 주소이다. 사설 네트워크란 인터넷, 외부 네트워크에 공개되지 않은 네트워크를 의미한다. LAN 내의 많은 호스트는 사설 IP 주소를 사용한다.

IP 주소 공간 중에서 사설 IP 주소로 사용하도록 특별히 예약된 IP 주소 공간이 있다. 

  • 10.0.0.0/8 (10.0.0.0 ~ 10.255.255.255)
  • 172.16.0.0/12 (172.16.0.0 ~ 172.31.255.255)
  • 192.168.0.0/16 (192.168.0.0 ~ 192.168.255.255)

사설 IP 주소의 할당 주체는 일반적으로 라우터이다. 할당받은 사설 IP 주소는 해당 호스트가 속한 사설 네트워크 상에서만 유효한 주소이므로, 얼마든지 다른 네트워크 상의 사설 IP 주소와 중복될 수 있다.

예를 들어 사설 IP 주소 범위에 속하는 192.168.0.2라는 주소는 타 사설 네트워크 내 호스트와 중복될 수 있다. 그래서 192.168.0.2라는 사설 IP 주소 만으로는 일반적인 인터넷 접속을 비롯한 외부 네트워크 간의 통신이 어렵다.

 

사설 IP 주소를 사용하는 호스트가 외부 네트워크와 통신하려면 NAT을 사용해야한다.

NAT은 IP 주소를 변환하는 기술이다. 주로 네트워크 내부에서 사용되는 사설 IP 주소와 네트워크 외부에서 사용되는 공인 IP 주소를 변환하는데 사용된다. NAT을 통해 사설 IP 주소를 사용하는 여러 호스트는 적은 수의 공인 IP 주소를 공유할 수 있다. 

대부분의 라우터와 공유기는 NAT 기능을 내장하고 있다. 그렇기에 사설 네트워크 상에서 만들어진 패킷 속 사설 IP 주소는 공유기를 거쳐 공인 IP로 변경되고, 외부 네트워크로 전송된다. 반대로 외부 네트워크로부터 받은 패킷 속 공인 IP 주소는 공유기를 거쳐 사설 IP 주소로 변경되어 사설 네트워크 속 호스트에 이르게 된다. 

 

윈도우 사용자는 ipconfig를 맥os 사용자는 ifconfig를 입력하면 현재 IP를 조회할 수 있다. 만약 10.0.0.0/8, 172.16.0.0/12 192.168.0.0/16 중 하나가 보인다면 이는 사설 IP 주소이다. 검색 사이트에서 IP 주소를 확인하면 공인 IP 주소를 확인할 수 있다. 

 

정적 IP 주소와 동적 IP 주소

호스트에 IP 주소를 할당하는 법은 정적 할당과 동적 할당이 있다. 

 

정적 할당

정적 할당은 호스트에 직접 수작업으로 IP 주소를 부여하는 방식이다. 이렇게 할당된 IP 주소를 정적 IP 주소라고 부른다. 내트워크 설정을 확인해보면 IP 주소를 수동으로 설정할 수 있는 항목이 있다. 일반적으로 부여하고자 하는 IP 주소, 서브넷 마스크, 게이트웨이(라우터) 주소, DNS 주소를 입력한다. 

💡 기본 게이트웨이
게이트웨이의 일반적인 의미는 서로 다른 네트워크를 연결하는 하드웨어적/소프트웨어적 수단을 의미한다. 그중에서 기본 게이트웨이는 호스트가 속한 네트워크 외부로 나가기 위한 기본적인 첫 경로(첫 번째 홉)을 의미한다. 기본 게이트웨이는 네트워크 외부와 연결된 라우터(공유기)의 주소를 의미하는 경우가 많다.

 

 

동적할당과 DHCP

IP 주소를 정적으로 할당하다보면 의도치 않게 잘못된 IP 주소를 입력할 수도 있고, 중복된 IP 주소를 입력할 수도 있다. 

이럴때 사용 가능한 IP 주소 할당 방식이 동적 할당이다. 동적 할당은 호스트에 IP 주소가 동적으로 할당되는 방식이다. 이렇게 할당된 IP 주소는 동적 IP 주소다. 동적 IP 주소는 사용되지 않을 경우 회수되고, 할당받을 때마다 다른 주소를 받을 수 있다.

 

IP 동적 할당에 사용되는 대표적인 프로토콜이 DHCP이다. DHCP를 통한 IP 주소 할당은 IP 주소를 할당받고자 하는 호스트와 해당 호스트에게 IP 주소를 제공하는 DHCP 서버 간에 메세지를 주고받음으로써 이루어진다. DHCP 서버의 역할은 일반적으로 라우터(공유기)가 수행하지만, 특정 호스트에게 DHCP 서버 기능을 추가할 수도 있다. DHCP 서버는 클라이언트에게 할당 가능한 IP 주소 목록을 관리하다가 클라이언트가 요청할 때 IP 주소를 할당한다.

유의할 점은 DHCP로 할당받은 IP 주소는 사용할 시간이 정해져 있다는 접이다. 임대기간이 끝난 IP 주소는 다시 DHCP 서버로 반납된다. 그래서 DHCP를 통해 IP 주소를 할당받는 것은 'IP 주소를 임대한다'라는 표현하기도 한다. 

 

IP주소를 할당받는 과정에서 클라이언트와 DHCP 서버 간의 주고받는 메세지의 종류는 크게 4가지가 있다. 클라이언트는 DHCP 서버와 DHCP Discover, DHCP Offer, DHCP Request, DHCP ACK 순으로 메세지를 주고받으며 IP 주소를 할당받는다. 

1. DHCP Discover

클라이언트는 브로드캐스트로 전송되는  DHCP Discover 메세지를 통해 DHCP 서버를 찾는다. DHCP Discover를 전송하는 시점에 클라이언트는 아직 IP 주소를 할당받지 못했으므로 송신지 IP 주소는 0.0.0.0으로 설정된다.

2. DHCP Offer

DHCP 서버는 DHCP Discover 메세지를 받은 뒤 클라이언트에게 DHCP Offer 메세지를 보낸다. 이 메세지는 클라이언트에게 할당해 줄 IP 주소를 제안하는 메세지이다. 클라이언트에게 제안할 IP 주소뿐만아니라 서브넷 마스크, 임대 기간등의 정보도 포함되어 있다. 

3. DHCP Request

DHCP Request는 DHCP Offer 메세지에 대한 응답이다. 이 또한 브로드캐스트오 전송된다. DHCP Offer 메세지를 잘 받았으며 이 IP 주소를 사용 승인 요청과 같다.

4. DHCP ACK

마지막으로 DHCP 서버는 클라이언트에게 DHCP ACK 메세지를 보낸다. 이 메세지는 마치 최종 승인과 같은 메세지다. DHCP ACK 메세지까지 받은 클라이언트는 이제 할당받은 IP 주소를 자신의 IP 주소로 설정한 뒤 임대기간동안 IP 주소를 사용한다. 

 

IP 주소의 사용기간이 모두 끝나 IP 주소가 DHCP 서버에 반납되면 윈칙적을 다시 이 과정을 거쳐서 IP 주소를 재할당받아야한다. 하지만 IP 주소 임대 기간이 끝나기 전에 임대 기간을 연장할 수도 있다. 이를 임대 갱신이라고 한다. 임대 갱신은 IP 주소의 임대 기간이 끝나기 전에 기본적으로 두 차례 자동으로 수행된다. 만일 자동적으로 수행되는 임대 갱신 과정이 모두 실패하면 이때 IP 주소는 DHCP 서버로 반납된다. 

 

예약 주소

특수한 목적을 위해 예약된 IP 주소가 있다. 

예약 주소 IP 범위 사용 목적
0.0.0.0/8 0.0.0.0 - 0.255.255.255 이 네트워크의 호스트
10.0.0.0/8 10.0.0.0 - 10.255.255.255 사설 네트워크
127.0.0.0/8 127.0.0.0 - 127.255.255.255 루프백 주소
172.16.0.0/12 172.16.0.0 - 172.31.255.255 사설 네트워크
192.168.0.0/16 192.168.0.0 - 192.168.255.255 사설 네트워크

루프백 주소는 자기 자신을 가리키는 주소이다 가장 일반적으로 사용되는 주소는 127.0.0.1이고, 로컬호스트라고 부른다. 루프백 주소는 자기 자신에게 되돌아오므로 자기 자신을 다른 호스트인 양 간주해 패킷을 전송할 수 있다.

0.0.0.0/8은 인터넷 표준 공식 문서에 따르면 '이 네트워크의 호스트 (This host on this network)를 지칭하도록 예약되었다.' 라고 명시되어있다. 0.0.0.0/8은 호스트가 IP 주소를 할당받기 전에 임시로 사용되는 경우가 많다. 

0.0.0.0/0은 '모든 임의의 IP 주소'를 의미한다. 이 주소는 주로 패킷이 이동할 경로를 결정하는 라우팅에서 활용되는데, 디폴트 라우트를 나타내기 위해 사용된다. 디폴트 라우트란 패킷을 어떤 IP 주소로 전달할지 결정하기 어려운 경우 이곳으로 패킷을 이동시키라고 표기하는 셈이다. 

 

3-3 라우팅

라우팅은 패킷이 이동할 최적의 경로를 설정한 뒤 해당 경로로 패킷을 이동시키는 것이다.

라우터

라우터는 네트워크 계층의 핵심 기능을 담당한다. 멀리 떨어져 있는 호스트 간의 통신 과정에서 패킷은 서로에게 도달하기까지 여러 라우터를 거쳐 다양한 경로로 이동할 수 있다. 라우팅 도중 패킷이 호스트와 라우터 간에, 혹은 라우터와 라우터 간에 이동하는 하나의 과정을 이라고 부른다. 

 

라우팅 테이블

라우팅 테이블은 특정 수신지까지 도달하기 위한 정보를 명시한 일종의 표와 같은 정보이다. 라우터는 라우팅 테이블을 참고하여 수신지까지의 도달 경로를 판단한다.

라우팅 테이블에 포함된 정보는 라우팅 방식에 따라, 호스트의 환경에 따라 달라질 수 있다. 하지만 공통적인 정보이자 핵심적인 정보로는 수신지 IP 주소와 서브넷 마스크, 다음 홉이 있고 이외에도 네트워크 인터페이스와 메트릭이 있다.

  • 수신지 IP 주소서브넷 마스크: 최종적으로 패킷을 전달할 대상을 의미한다. 
  • 다음 홉: 최종 수신지까지 가기 위해 다음으로 거쳐야할 호스트의 IP 주소나 인터페이스를 의미한다. 게이트웨이라고 명시되기도 한다.
  • 네트워크 인터페이스: 패킷을 내보낼 통로다. 인터페이스 이름이 직접적으로 명시되거나 인터페이스에 대응되는 IP 주소가 명시된다. 
  • 메트릭: 해당 경로로 이동하는데 드는 비용이다. 라우터가 라우팅 테이블에 있는 경로 중 패킷을 내보낼 경로를 선택할 때 메트릭이 낮은 경로를 선호한다.
수신지 IP 주소 서브넷 마스크 게이트웨이 인터페이스 메트릭
192.168.2.0 255.255.255.0 192.168.2.1 eth0 30

위의 라우팅 테이블의 경우, 수신지가 192.168.2.0/24 인 패킷은 eth0(인터페이스)를 통해 192.168.2.1로 전송하라는 것을 의미한다.

 

라우팅 테이블에 없는 경로로 패킷을 전송해야할 때는 기본적으로 패킷을 내보낼 경로를 설정하여 해당 경로로 패킷을 내보낼 수 있다. 이 기본 경로를 디폴트 라우트라고 한다. 디폴트 라우트는 모든 IP 주소를 의미하는 0.0.0.0/0로 명시된다.

앞서서 기본 게이트웨이는 호스트가 속한 네트워크 외부로 나아가기 위한 첫번째 경로이고, 일반적으로 라우터 주소를 의미하는 경우가 많다고 했다. 여기서 기본 게이트웨이로 나아가기 위한 경로가 디폴트 라우트인 셈이다. 

수신지 IP 주소 서브넷 마스크 게이트웨이 인터페이스 메트릭
... ... ... ... ...
0.0.0.0 0.0.0.0 192.168.0.1 eth2 30

 

정적 라우팅과 동적 라우팅

라우팅 테이블은 정적 라우팅, 동적 라우팅을 통해 만들어진다. 

 

정적 라우팅

정적 라우팅은 사용자가 수동으로 직접 채워 넣는 라우팅 테이블의 항목을 토대로 라우팅 되는 방식이다. 수동으로 구성된 라우팅 테이블 항목을 통해 수행되는 라우팅을 정적 라우팅이라 표현한다. 

 

동적 라우팅

네트워크의 규모가 커지고 관리해야할 라우터가 늘어나면 정적 라우팅만으로는 관리가 버겁다. 이때 사용할 수 있는 방식이 동적 라우팅이다. 동적 라우팅은 자동으로 라우팅 테이블 항목으로 만들고, 이를 이용해 라우팅하는 방식을 의미한다. 이러한 이유로 동적 라우팅을 하면 라우팅 항목이 수시로 변할 수 있다. 동적 라우팅은 대규모 네트워크를 관리하는데 있엇서 더욱 편리하고, 네트워크 경로 상에 문제가 있을 때 이를 우회할 수 있게 경로가 자동으로 갱신되기도 한다.

 

모든 라우터는 특정 수신지까지 도달하기 위한 최적의 경로를 찾아 라우팅 테이블을 추가하려 노력한다. 이를 위해 라우터끼리 자신의 정보를 교환하게 되는데 이 과정에서 사용되는 프로토콜이 바로 동적 라우팅 프로토콜이다. 

💡  라우터들의 집단 네트워크, AS
AS는 동일한 라우팅 정책으로 운용되는 라우터들의 집단 네트워크이다. 한 단체에서 관리하는 라우터 집단이라고 생각하면 된다. 라우터들은 AS 내부에서만 통신할 수 있고, AS 경계에서 AS 내외로 통신을 주고받을 수 있는 AS 경계 라우터를 이용해 AS 외부와 통신할 수 있다. 

 

라우팅 프로토콜

라우팅 프로토콜은 라우터끼리 자신들의 정보를 교환하며 패킷이 이동할 최적의 경로를 찾기 위한 프로토콜이다. 

라우팅 프로토콜은 AS 내부에서 수행되는 IGP, AS 외부에서 수행되는 EGP로 나눌 수 있다. 

 

IGP: RIP와 OSPF

이 프로토콜은 최적의 경로를 선정하는 과정에서 거리 벡터를 사용하는 RIP(routing Information Protocol)와 링크 상태가 사용되는 OSPF(Open Shortest Path first)가 있다. 

 

RIP(Routing Information Protocol)는 거리 벡터 기반의 라우팅 프로토콜이다. 거리 벡터 라우팅 프로토콜이란 거리를 기반으로 최적의 경로를 찾는 라우팅 프로토콜을 의미한다. 거리는 패킷이 경유한 라우터의 수 즉 홉의 수를 의미한다.

RIP는 인접한 라우터끼리 경로 정보를 주기적으로 교환하며 라우팅 테이블을 갱신한다. 이를 통해 라우터는 특정 수신지에 도달하기까지의 홉 수를 알 수 있다. 그리고 특정 수신지까지 도달하기 위해 '홉 수가 가장 적은 경로'를 최적의 경로라고 판단한다. 그렇기에 홈 수가 적을수록 라우팅 테이블 상의 메트릭 값도 작아진다.

 

OSPF(Open Shortest Path first)는 링크 상태 라우팅 프로토콜이다. OSPF는 현재 네트워크의 상태를 그래프의 형태로 링크 상태 데이터베이스에 저장한다. 링크 상태 데이터베이스에는 라우터들의 연결관계, 연결 비용 등 현재 네트워크의 상태를 그래프로 표현하기 위한 데이터가 저장되어 있다. 

OSPF에서 최적의 경로를 결정하기 위해 대역폭을 기반으로 메트릭을 계산한다. 대역폭이 높은 링크일수록 메트릭이 낮은 경로로 인식한다. 또한 OSPF는 네트워크의 구성이 변경되었을 때 라우팅 테이블이 갱신된다. 그런데 네트워크 규모가 매우 큰 경우, 모든 정보를 저장하기 어려우며, 최적의 경로를 갱신하는 연산 부담도 커진다.

이에 OSPF에서는 AS를 에어리어 단위로 나누고, 구분된 에어리어 내에서만 링크 상태를 공유한다. 에어리어는 번호가 부여되어 있으며, 에어리어 경계에 있는 ABR(Area Border Router)이라는 라우터가 에어리어 간의 연결을 담당한다.

 

EGP: BGP

대표적인 EGP로는 BGP(Border Gateway Protocol) 있다. AS 간의 통신에서 사용되는 대표적인 프로토콜로, AS 내 라우터 간 통신도 가능하며 AS간의 통신도 가능하다. AS 간의 통신을 위한 BGP는 eBGP(external BGP), AS 내의 통신을 위한 BGP는 iBGP(internal BGP)라고 한다.AS 간에 정보를 주고받기 위해서는 AS 내에서 eBGP를 사용하는 라우터가 하나 이상 있어야하고, 또 다른 AS의 BGP 라우터와 연결되어 있어야한다.

BGP 간에 BGP 메시지를 주고받을 수 있도록 연결된 BGP 라우터를 피어로 정의한다. 다른 AS와의 BGP 연결을 유지하기 위해서는 BGP 라우터끼리 연결되어 피어가 되어야한다. 이렇게 피어 관계가 되도록 연결되는 과정을  피어링이라 한다.

 

BGP는 RIP와 OSPF에 비해 최적의 경로를 설정하는 과정이 복잡하고, 일정하기 않은 경우가 많다. 경로 결정 과정에서 수신지 주소와 더불어 다양한 '속성'과 '정책'이 고려되기 때문이다. BGP의 속성은 경로에 대한 부가 정보이다 대표적인 속성으로 AS-PATH, NEXT-HOP, LOCAL-PREF가 있다.

1. AS-PATH

AS-PATH 속성은 메세지가 수신지에 이르는 과정에서 통과하는 AS들의 목록이다. 메세지가 AS를 거칠 때마다 AS-PATH에는 거쳐 간 AS가 추가된다. BGP는 AS 간 라우팅을 할 때 거치게 될 라우터의 수가 아닌 AS의 수를 고려한다. BGP는 RIP처럼 단순히 수신지에 이르는 거리가 아닌, 메세지가 어디로 거쳐 어디로 이동하는지 나타내는 경로를 고려한다. 

2. NEXT-HOP

NEXT-HOP 속성은 다음 홉, 다음으로 거칠 라우터의 IP 주소를 나타낸다. 

3. LOCAL-PREF

LOCAL-PREF는 지역 선호도, LOCAL-PREFerence의 약자이다. 이는 외부 AS 경로에 있어 AS 내부에서 어떤 경로를 선호할지에 대한 척도를 나타내는 속성이다. LOCAL-PREF 값은 일반적으로 AS-PATH, NEXT-HOP 속성보다 우선시 되며, LOCAL-PREF 값이 클수록 우선으로 선택된다.


Ch.03-3 확인문제 2

라우팅 프로토콜은 AS 내부에서 수행되는 IGP와 AS 외부에서 수행되는 EGP로 나뉩니다. RIP는 대표적인 거리 벡터 라우팅 프로토콜이고, OSPF는 대표적인 링크 상태 라우팅 프로토콜입니다.


 

추가 숙제

본인 컴퓨터의 IP 주소와 MAC 주소 파악해 보기

  • 윈도우 cmd창에 ipconfig/all을 치면 MAC 주소와 사설 IP 주소를 확인할 수 있다.