Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

josolha

IPv4, IPv6 / 서브넷, 서브넷마스크, 서브넷팅 본문

정보처리기사

IPv4, IPv6 / 서브넷, 서브넷마스크, 서브넷팅

josolha 2023. 3. 1. 21:49

IP 주소란??

 

IP는 Internet Protocol의 약자로 기기간 네트워크 통신을 할 때 쓰는 프로토콜을 의미한다.

IP에서 IP 기기의 주소를 나타내는 것이 바로 IP주소이다.
흔히 우리가 사용하는 IP는 이 IP주소를 의미한다.

우편배달을 예로 들자면 IP주소는 배달 주소를 나타내게 된다.

즉 IP주소를 사용하는 이유는 각각의 host들을 구분하여 데이터를 정확하게 송수신하기 위해서이다.

 

이러한 IP주소는  IPv4와 IPv6 체계로 나뉜다. 먼저 IPv4에 대해서 알아보자.


IPv4

IPv4

IPv4는 3자리 숫자가 4마디로 표기되는방식이다.

각 마디는 옥텟(octet)이라고 부른다.

위 주소는 내부적으로 32비트(각 마디당 8bit)로 처리된다.

예를 들어 192.168.123.12 11000000.10101000.1111011.1111011으로 표시된다.

 

IPv4는 한 옥탯당 256개(2^8)의 수를 나타낼 수 있어 256^4 = 4,294,967,296 개의 주소를 만들 수 있다.

약 42억 개의 IP를 각각의 컴퓨터에 할당할 수 있는 것이다. 하지만 인터넷 환경이 발달함에 따라 어마어마하게 많은 수의 IP주소가 필요해져 IPv4 주소 체계로는 IP주소를 할당하기가 어려워졌다.

 

따라서 새로운 주소 체계인 IPv6가 나오게 되었다.

 

IPv4 클래스 

IP 주소는 대역에 따라 A,B,C,D,E 클래스로 나뉜다.

이 클래스들을 구분함으로써 클래스 내에서 Network ID와 Host ID를 구분하게 된다. 각 클래스의 간략한 설명은 다음과 같다.

  • A Class : 대규모 네트워크 환경에 쓰이며, 첫번째 마디의 숫자가 0~127까지 사용된다. (ex : 12.123.123.123)
  • B Class : 중규모 네트워크 환경에 쓰이며, 첫번째 마디의 숫자가 128~191까지 사용된다. (ex : 128.123.123.123)
  • C Class : 소규모 네트워크 환경에 쓰이며, 첫번째 마디의 숫자가 192~223까지 사용된다. (ex : 192.168.0.1)
  • D Class : 멀티캐스팅용으로 쓰인다. 잘 쓰이지 않는다.
  • E Class : 연구/개발용 혹은 미래에 사용하기 위해 남겨놓은 클래스로 일반적인 용도로 사용되지 않는다.
A Class

A 클래스는 하나의 네트워트가 가질 수 있는 호스트 수가 가장 많은 클래스이다.

네트워크 영역은 앞의 8비트가 차지하고, 뒤의 24비트는 호스트 영역이 차지한다.

예를 들어 18.123.123.123 이라는 IP 주소가 있다면, 18.은 네트워크 ID를 나타내고, 123.123.123은 호스트 ID를 나타낸다.

 

첫 번째 옥텟의 범위는 0~127이고 1개의 네트워크 영역이 각각 가질 수 있는 호스트 ID는 (2^24)-2 개이다. 

2개를 제외하는 이유는 시작 주소인 x.0.0.0은 네트워크 주소로 사용하고 마지막 주소인 x.255.255.255는 브로드캐스트 주소로 사용하기 때문이다.

 

예를 들어 13.x.x.x 네트워크 주소에서 호스트 영역을 할당한다고 하자. 13. 은 네트워크 부분인데, 이 때 x.x.x 부분은 호스트 부분으로 0.0.0 255.255.255 를 제외하고 13.0.0.1 ~ 13.255.255.254 까지 (2^24)-2개를 할당할 수 있는 것이다. 

 

B Class

B 클래스는 중규모 네트워크에서 사용된다.

네트워크 영역은 앞의 16비트가 차지하고, 뒤의 16비트는 호스트 영역이 차지한다.

예를 들어 151.123.123.123 이라는 IP 주소가 있다면 151.123은 네트워크 ID를 나타내고, 123.123 은 호스트 ID를 나타낸다.

 

첫 번째 옥텟의 범위는 128~191이고 1개의 네트워크 영역이 각각 가질 수 있는 호스트 ID는 (2^16) -2 개 이다.

 

C Class

C 클래스는 소규모 네트워크에서 사용된다. 네트워크 영역은 앞의 24비트가 차지하고, 뒤의 8비트는 호스트 영역이 차지한다. 예를 들어 201.123.123.121 이라는 IP주소가 있다면 201.123.123 은 네트워크 ID를 나타내고, 121은 호스트 ID를 나타낸다.

 

첫 번째 옥텟의 범위는 192~223이고 1개의 네트워크 영역이 각각 가질 수 있는 호스트 ID는 (2^8)-2 개 이다.

 

IPv6

위에서 IP 주소가 부족해 IPv6가 나오게 되었다고 설명했다.

IPv6는 IPv4와 다르게 32비트가 아닌 128비트 체계의 인터넷 프로토콜을 의미한다.

즉 2^128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 개의 주소를 할당할 수 있다.

IPv6는 각 16비트씩 8자리로 각 자리를 ':'으로 구분한다. 

문제는 아직까지도 IPv4에서 IPv6로의 전환이 완료되지 않았다는 점이다.

아직까지도 많은 라우터들은 IPv4를 사용한다.

IPv6로의 전환은 많은 시간과 비용이 들기 때문에 완료되기까지 적지 않은 세월이 걸릴 것이다.

현재는 IPv4와 IPv6를 혼용해서 사용하는데, IPv4 라우터에서는 tunneling이라는 방식을 사용해 IPv6 데이터그램을 전송한다.

 


서브넷의 등장 배경

흔히 사용되는 IPv4 주소 체계는 클래스를 나누어 IP를 할당한다.

하지만 이 방식은 매우 비효율적이다.

예를 들어 어떤 기관에 A 클래스를 할당한다고 하면 16,777,214개의 호스트를 할당할 수 있게 되는데, 이 기관이 100개의 호스트를 할당한다고 하더라도 16,777,114개의 호스트가 낭비되게 된다.

이러한 비효율성을 해결하기 위해 네트워크 장치들의 수에 따라 효율적으로 사용할 수 있는 서브넷(subnet)이 등장하게 되었다.

 

서브넷(subnet)과 서브넷 마스트(subnet mask)

서브넷은 IP 주소에서 네트워크 영역을 부분적으로 나눈 부분 네트워크를 뜻한다.

이러한 서브넷을 만들 때 사용되는 것이 바로 서브넷 마스크이다.

즉, 서브넷 마스크는 IP 주소 체계의 Network ID와 Host ID를 분리하는 역할을 한다. 

 

예를 들어 C 클래스는 기본적으로 앞의 24비트는 Network ID, 뒤의 8비트는 Host ID를 나타낸다.

이때 서브넷 마스크를 이용하면 원본 네트워크를 여러 개의 네트워크로 분리할 수 있다. 이러한 과정을 서브넷팅(subneting)이라고 한다.

 

서브넷팅을 자세히 알아보기 전에 기본 서브넷 마스크(Default Subnet mask)에 대해 알아보자.

 

각 클래스마다 기본 서브넷 마스크는 위 표와 같다(D, E클래스는 사용하지 않음).

이러한 기본 서브넷 마스크를 이용하면 IP 주소의 Network ID와 Host ID를 구분할 수 있다.

IP주소에 서브넷 마스크를 AND 연산하면 Network ID가 된다.

 

예를 들어 C클래스인 192.168.32.0 이라는 IP주소가 있다고 하자.

C클래스의 기본 서브넷 마스크는 255.255.255.0 이므로 AND연산을 하면 192.168.32.0이 나오고 이것이 바로 Network ID이다.

이때 서브넷 마스크의 Network ID부분은 1이 연속적으로 있어야 하고 Host ID부분은 0이 연속적으로 있어야 한다.

 

예시의 IP주소를 보면 192.168.32.0/24 처럼 /24 같은 표시가 붙어있는 것을 확인할 수 있다.

이것은 서브넷 마스크의 bit 수(왼쪽에서부터 1의 개수)를 나타낸다.

즉 /24는 해당 IP의 서브넷 마스크의 왼쪽에서부터 24개가 1이라는 것을 의미한다. 

 

그런데 애초에 IP클래스들은 Network ID를 나타내는 부분과 Host ID를 나타내는 부분이 이미 구분되어 있는데 굳이 서브넷 마스크가 필요한 이유가 무엇일까? 위에서도 설명했지만 서브넷팅을 하여 효율적인 네트워크의 사용을 위해서다.

 

서브넷팅(subnetting)

서브넷팅은 IP 주소 낭비를 방지하기 위해 원본 네트워크를 여러개의 서브넷으로 분리하는 과정을 뜻한다.

서브넷팅은 서브넷 마스크의 bit 수를 증가시키는 것이라고 생각하면 이해가 편하다. 

서브넷마스크의 bit수를 1씩 증가시키면 할당할 수 있는 네트워크가 2배수로 증가하고 호스트 수는 2배수로 감소한다.

 

예를 들어 C클래스인 192.168.32.0/24를 서브넷 마스크의 bit수를 1 증가시켜서 192.168.32.0/25로 변경한다고 하자.

192.168.32.0/24는 원래 하나의 네트워크였다.

이때 할당 가능한 host의 수는 2^8-2=254개이다.

여기서 2개를 빼는 이유는 첫번째 주소인 192.168.32.0은 Network Address로 쓰이고 마지막 주소인 192.168.32.255는 Broadcast로 쓰이기 때문에 호스트에 할당할 수 없기 때문이다.

 

이 때 서브넷 마스크의 bit 수를 1증가시켜서(서브넷팅) 192.168.32.0/25로 변경하게 되면 Network ID부분을 나타내는 부분이 24비트에서 25비트로 증가하고 Host ID를 나타내는 부분이 8개 비트에서 7개 비트로 줄어든다.

즉 할당 가능한 네트워크 수가 2개로 증가하고 각 네트워크(서브넷)당 할당가능한 호스트수는 2^7-2 = 126개로 줄어든다.

또한 서브넷 마스크가 255.255.255.128로 변한 것을 확인할 수 있다. 

위 그림을 보면 네트워크의 수가 어떻게 2개로 늘어났는지 이해하기 쉬울 것이다.

정리하자면 다음과 같다.

  • 192.168.32.0 : 서브넷1의 Network Address
  • 192.168.32.1~192.168.32.126 : 서브넷1의 host 할당 가능한 부분
  • 192.168.32.127 : 서브넷1의 Broadcast Address 
  • 192.168.32.128 : 서브넷2의 NetworkAddress
  • 192.168.32.129~192.168.32.254 : 서브넷2의 host 할당 가능한 부분
  • 192.168.32.255 : 서브넷2의 Broadcast Address 

C클래스를 예시로 들었지만 A,B 클래스도 똑같은 방식을 적용하면 된다. 

 

https://www.youtube.com/watch?v=vPDQ4BpfymI (예제 풀어보기)

https://www.youtube.com/watch?v=o-NRjtQsJx4 (좀 더 깊이 알고 싶으면)