하나의 LAN 내에서는 각 디바이스만 구별하면 되기에 Data Link계층의 MAC주소를 사용했다.

하지만, LAN간의 통신에서 이 MAC주소는 사용할 수 없다.

MAC주소는 디바이스마다 고유하기에, 모든 LAN내의 디바이스의 MAC주소를 알아야 하는 문제점이 생기기 때문이다.

 

따라서,LAN 간의 연결을 Internet계층인 IP 프로토콜이 담당하게 되며,

이를 위해 사용되는 식별자가 IP 주소이다.

 

이러한 IP주소는 32bit 체계를 사용하며, 이를 IPv4라 부른다.

 

IP Address Notation

일반적으로 IP주소를 표기하는 데 있어서는 크게 2가지 notation을 사용한다.

  • Dotted Decimal Notaion 
  • Hexadecimal Notation 

 

 

 

IP Address Hierarchy

IP주소는 Internet에 연결된 Device에 고유하게 부여되어야 한다. 

이러한 IP 주소는 계층 구조를 통해 Routing을 더 용이하게 한다. 

 

예를 들면 다음과 같다. 

"GS25"보다 "서울특별시 노원구 공릉동 441 GS25"가 해당 위치를 특정하기에 더 용이하다.

IP주소도 마찬가지로 Network PartHost Part로 구분하게 된다. 

  • Prefix부분은 Network Part 어떤 네트워크인지 나타내며, 
  • Suffix부분은 Host Part 어떤 호스트(디바이스) 임을 나타낸다.

위의 경우에는 옥텟(8bit)은 Network를 지칭하고, 

나머지 3 옥텟 해당 네트워크 안에 Host를 특정한다. 

 

Net Mask

"NetMask"란 Network 주소부분의 비트를 1로 치환한 것을 말한다. 

IP주소에서 AND연산을 통해 네트워크 주소를 알 수 있다.

 

 

Classful Addressing

"Classful Addressing"은 IP 주소를 5개의 Class로 나누어 지정하는 방식이다.  

 

초기의 IP주소는 앞의 첫 옥텟을 네트워크 주소로 나머지 3개의 옥텟을 호스트의 주소로 사용했다. 

그 결과, 가능한 네트워크의 수는 254개로 한정되었고, 

각 네트워크는 약 1670만 명의 Host를 할당이 가능했다.

 

하지만, 네트워크를 필요로 하는 조직이 점차 늘어나고, 

각 조직은 1670만 명의 Host로 필요한 경우는 극히 드물다.

 

더 효율적으로 할당할 방법이 필요했으며, 이에 따라 Classful Addressing이 등장했다. 

 

"Classful Addressing"은 A~E Class로 IP주소를 분할한다.

 

A, B, C Class는 각각 Network Part가 8, 16, 24bit로 고정되어 있으며,

이에 따른 Network Mask가 Class마다 존재한다. 

또한, 각각 최상위 bit가 "0", "10", "110"으로 시작한다.

 

D Class의 경우는 MultiCast용도이며,

E Class의 경우에는 연구 용도로 사용된다. 

이 둘은 Network Part와 Host Part를 구분하지 않기에 NetworkMask가 없다.

 

문제점

만약 직원이 300명이 있는 기업이 있다고 가정해 보자. 

이들에게 256명의 Host만 할당할 수 있는 C 클래스는 너무 적지만, 

65,536명의 Host를 할당할 수 있는 B클래스는 너무 많은 IP주소를 낭비하게 된다. 

 

초기에는 이러한 IP주소의 낭비를 신경 쓰지 않았으나, 

현재는 가정마다 기본적으로 컴퓨터 하나씩, 심지어 개인당 하나씩 가지고 있다. 

즉, 인터넷에 연결된 디바이스가 폭발적으로 증가하게 되었으며, 이는 IP 주소가 부족한 상황에 놓이게 되었다. 

 

이를 해결하기 위한 방법 중 하나가 Classless Addressing 방식이다.

 

 

Classless  Addressing

앞서 Classful Addressing은 Network의 크기를 변경할 수 없기에 IP 주소공간 부족으로 이어졌다.

 

"Classless Addressing"에선, 

Class 구분 없이 IP 주소를 bit단위로 부여하며,

"CIDR(Classless Inter-Domain Routing)"이라고도 부른다.

 

즉, CIDR에선 Network Part를 가변적으로 할당할 수 있기에, 

Network Part가 몇비트인지 알 수 있는 CIDR Notation을 사용한다.

다음과 같이 "/" 뒤에 Network Part의 bit 수를 작성한다. 

 

Subnetting

Classless방법에선 Subnetting을 사용해 IP주소를 할당하는데, 

"Subnetting"이란 Network를 여러 Subnetwork로 나누어 관리하는 것을 의미한다.

 

예를 들어 Class C의 네트워크가 있다고 가정해 보자. 

앞서 살펴보았듯이 Class C에서는 254개의 Host가 할당이 가능하다. 

실제 할당이 가능한 공간은 256이지만, 
Host Part가 모두 0인 부분은 네트워크 주소로, 
모두 1인 부분은 BoardCast주소로 사용한다.

 

Host Part의 처음 비트를 사용해 2개의 Subnetwork로 나눌 수가 있다.

이렇게 되면 각 Subnetwork는 126개의 Host가 할당할 수 있게 된다. 

만약 C Class에서 2개의 Bit를 사용하여 Subnetting을 한다고 가정해보자. 

그렇다면 Subnet Mask는 255.255.255.192가 된다. 

 

또한, Subnetting을 활용하여 다음과 같이 효과적으로 네트워크를 구성할 수 있게 된다. 

이때 각 Subnetwork의 SubnetMask의 길이가 다르게 되는데, 

이를 "VLSM"(Variable Length Subnet Mask)라 부른다.

 

Suppernetting (Address Aggregation)

SuppernettingSubnetwork를 하나로 합치는 개념으로 Routing Table을 간소화할 수 있다.

다음과 같이 Class C를 2개의 bit를 사용하여 4개의 Subnetwork로 나누었다고 가정해보자. 

 

그렇다면 외부 Routing Table에서는 추가적으로 4개의 Network 주소 정보가 필요하게 된다. 

하지만 실제로는 외부 Router에서는 24bit의 Network주소만 알고, 

내부 Router에서 Subnetwork 각각의 주소만 알고 있으면 된다. 

 

CIDR는 Subnetting을 통해 Network를 더 잘게 쪼개 IP주소의 낭비를 막을 수 있으며,

Suppernetting을 통해 잘게 쪼개진 Network를 합쳐 효율적인 Routing을 할 수 있게 되었다. 

 

 

IP Address 부족 문제 해결

CIDR를 도입했음에도 Internet에 연결된 디바이스가 점점 많아짐에 따라 여전히 IP주소 공간은 부족하다. 

이를 해결하기 위한 방법들로는 아래와 같다. 

  • DHCP (Dynamic Host Configuration Protocol)
  • NAT (Network Address Translation)
  • IPv6

DHCP (Dynamic Host Configuration Protocol)

"DHCP" Client-Server 패러다임을 이용하는 Application Layer로,

Internet에 연결된 디바이스에 IP주소를 할당하기 위한 프로토콜이다. 

 

만약 수동으로 IP주소를 할당하게 되면 비효율적이고 오류가 발생할 가능성이 높다. 

또한, 실제로 PC와 같이 대다수의 디바이스가 Internet에 계속 연결되어 있지는 않는다. 

 

DHCP는 Internet에 연결된 디바이스에 IP주소를 자동으로 할당하고, 

디바이스의 연결이 해제되면 IP주소를 다른 장치에 재할당한다.

 

Internet에 참여할 Client(디바이스)는 서버(DHCP)에게 IP주소 요청을 해 할당받는다. 

이후 Client는 사용이 완료되면 서버에 이를 알리고, 서버는 IP주소를 회수한다.

 

NAT (Network Address Translation)

IP 주소 부족 문제를 해결하기 위해, IP주소를 "사설 IP"와 "공인 IP"로 나눈다.

 

LAN사이에서는 공인 IP주소로 통신을 하고, LAN내부에서는 사설 IP로 통신한다. 

즉, 하나의 공인 IP주소를 통해 LAN내부에서는 사설 IP주소를 통해 여러 디바이스가 Internet에 연결될 수 있다.

 

최종적으로 Internet에 연결을 하기 위해선

사설 IP와 공인 IP 간의 전환이 이루어져야 하는데,

이러한 기술을 "NAT"이라 부른다. 

카페의 WiFi를 예시로 들어보자. 카페에 공유기에 연결된 디바이스들은 사설 IP를 할당받는다.

이들은 Internet을 사용할 때는 공유기에서 공인 IP로 전환을 하는데 과정은 다음과 같다. 

  • 공유기는 요청받은 사설 IP를 기록한다.  (누가 패킷을 보냈는지 알아야 하니까)
  • 이후 공인 IP로 변환한 후, 패킷을 전송한다. 

 

또한, 사설 IP는 LAN내부에서 고유하면 되기 때문에,

IP주소 부족 문제를 해결할 수 있다.

 

IPv6

사실 이러한 IP주소 공간 문제를 해결하기 위한 가장 1차원적인 해결방법은 

주소 공간의 크기를 늘리는 것이다. 

 

IPv6는 IP주소 공간이 128bit로 늘어났다. 하지만, ISP가 제공하는 Router는 모두 IPv4로 세팅되어 있다.

그렇기에 이들을 모두 교체하는 것은 시간적으로도 비용적으로도 어렵다. 

 

이외에도 호환성 등 여러 가지 요인으로 인해 전환이 느리게 진행 중이다. 

 

 

ARP (Address Resolution Protocol)

"ARP"(Address Resolution Protocol)란, L3의 IP주소를 L2의 MAC주소로 변환해주는 프로토콜이다.

 

DHCP와 ClassLess주소체계 등을 통해 IP주소는 동적으로 할당된다.

반면, MAC주소는 공정과정에서 주로 LAN카드에 할당된다. 

즉, MAC주소는 기기마다 고유하며 절대 변하지 않는다.

 

앞서 살펴보았듯이, 핸드폰을 들고 카페를 갔을 때와 집에 있을 때

핸드폰의 IP주소는 달라지게 되지만 MAC주소는 변하지 않는다.

 

이러한 성격으로,

IP주소는 논리적 주소,

MAC주소는 물리적 주소라 부른다.

 

만약 같은 LAN내부에 있다면 MAC주소를 통해 통신이 가능하지만, 

다른 LAN간의 통신에서는 IP주소를 통해 통신해야 하며, 

최종적으로는 LAN카드에 할당되어 있는 MAC주소를 통해 통신하게 된다. 

 

즉, IP주소를 통해 MAC주소로 매핑하는 과정이 필요한데, ARP가 이를 담당한다. 

 

ARP의 동작은 다음과 같다. 

  • LAN의 Switch장비는 BroadCast방식으로 ARP요청 패킷을 보낸다. 
  • 자신이 할당받은 IP주소와 같다면, 자신의 MAC주소를 ARP응답 패킷에 전송한다.
  • Switch장비는 최종적으로 ARP응답 패킷에 적힌 MAC주소로 데이터를 전송한다.

 

 

Reference

위키 백과

https://www.auvik.com/franklyit/blog/classful-classless-addressing/

https://www.auvik.com/franklyit/blog/subnetting-primer/

https://www.khanacademy.org/computing/computers-and-internet/xcae6f4a7ff015e7d:the-internet/xcae6f4a7ff015e7d:addressing-the-internet/a/ip-address-hierarchy

복사했습니다!