본문 바로가기

Developer/Network

네트워크 통신 - IP주소 체계, 서브넷, 공인 IP, 사설 IP

3계층에서 논리 주소인 IP주소 사용한다.

 

<IP 주소 체계>

IPv4 주소를 표기할 때, 4개의 옥텟(Octet)이라고 부르는 8비트 단위로 나누고 각 옥텟은 "."으로 구분

네트워크 주소와 호스트 주소 두 부분으로 나뉜다.

  • 네트워크 주소
    호스트들을 모은 네트워크를 지칭하는 주소. 네트워크 주소가 동일한 네트워크를 로컬 네트워크라고 함.
  • 호스트 주소
    하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소

IP 주소 체계는 필요한 호스트 IP 개수에 따라 네트워크 크기를 다르게 할당할 수 있는 클래스(Class) 개념 도입

클래스 개념은 다른 고정된 네트워크 주소 체계와 달리 주소를 절약할 수 있음

A 클래스

  • 네트워크 주소를 표현하는 1개의 옥텟, 호스트 주소를 나타낼 수 있는 3개의 옥텟
  • 2^8 (256) 개의 네트워크와 한 네트워크 당 2^24(16,777,216) 개의 호스트 주소
  • 주소 범위 : 1 ~ 127.0.0.0, 127.0.0.0 (로컬 호스트)
  • 첫 옥텟을 이진수로 표기했을 때, 2진수 8자리 중 맨 앞자리가 0인 주소
    0 0000000 ~ 0 1111111 인 주소
  • 127만 예외로 자신을 의미하는 루프백(Loopback) 주소로 사용되므로, 실제 A 클래스로 사용할 수 있는 주소는
    1.0.0.0 ~ 126.255.255.255 까지 입니다.

B 클래스

  • 네트워크 주소 옥텟 2개, 호스트 옥텟 2개
  • 2^16 (65,536) 개의 네트워크와 1개의 네트워크에 2^16(65,536) 개의 IP를 가짐
  • 주소 범위 : 128 ~ 191.0.0.0
  • 첫 옥텟을 2진수로 표기했을 때 첫 번째 자리가 1이고 두 번쨰 자리가 0인 주소
    10 000000 ~ 10 111111 인 수를 10진수료 표현하면 128 ~ 192까지 수

C 클래스

  • 2^24(16,777,216) 개의 네트워크와 1개의 네트워크 당 2^8(256) 개의 호스트를 가짐
  • 주소 범위 : 192 ~ 223.0.0.0
  • 첫 옥텟을 2진수로 표기했을 때 2진수 8자리 수 중 첫 번째,  두 번째 자리가 1이고 세 번쨰 자리가 0인 주소
    110 00000 ~ 110 11111, 10진수로는 192 ~ 223 까지

D 클래스

  • 주소 범위 : 224 ~ 239.0.0.0

 

<클래스풀과 클래스리스>

클래스 기분의 IP 주소 체계를 클래스풀이라고 부름

  • 클래스 풀의 장점

    클래스풀에서는 확장성이 있고, 주소 낭비가 적은 최적의 조건을 만들 수 있었음
    서브넷 마스크가 필요없고, 맨 앞자리 숫자만 보면 자연스럽게 이 주소가 어느 클래스에 속해 있는지 구분 가능
  • 클래스 풀의 단점

    기하급수적으로 늘어나는 IP 주소 요구 감당 불가
    이론적으로 사용할 수 있는 IP 개수는 43억여 개이지만,
    네트워크 주소를 계층화하고 분할하기 위해 낭비되는 IP가 많고, 하나의 네트워크에서 IP가 사용되지 않더라도 그 IP를 다른 네트워크에서 사용하지 못했다.

  • 이를 해결하기 위해 3가지 보전, 전환 전략을 만들어냈는데
  • 첫 번째 단기 대책은 클래스리스, CIDR(Classless Inter-Domain Routing) 기반의 주소체계
  • 두 번째 중기 대책은 NAT와 사설 IP주소
  • 세 번째 장기 대책은 차세대 IP인 IPv6

 

 

클래스리스 네트워크에서는 별도로 네트워크와 호스트 주소를 나누는 구분자를 사용해하기 위해 서브넷 마스크 사용

호스트 주소 네트워크 서브넷 호스트
102.9.32.146 01100111 00001001 00100000 10010010
255.255.255.0 11111111 11111111 11111111 00000000
네트워크 주소
103.9.32.0
01100111 00001001 00100000 10010010

103.9.32.146 주소에 255.255.255.0 서브넷 마스크를 사용하는 IP는 네트워크 주소가 103.9.32.0 이고 호스트 수조는 0.0.0.146이 된다.

 

 

<서브네팅>

원래 부여된 클래스의 기준을 무기하고 새로운 네트워크-호스트 구분 기준을 사용자가 정해 원래 클래스풀 단위의 네트워크보다 더 쪼개 사용하는 것

 

실무에서 서브네팅에 대해 고민해야 하는 경우는 두 가지

  • 네트워크 사용자 입장
    네트워크에서 사용할 수 있는 IP 범위 파악
    기본 게이트웨이와 서브넷 마스크 설정이 제대로 되어 있는지 확인
  • 네트워크 설계자 입장
    네트워크 설계 시 네트워크 내에 필요한 단말을 고려한 네트워크 범위 설계

자신이 속한 네트워크 유효 범위를 파악하는 방법

  1. 내 IP를 2진수로 표현
  2. 서브넷 마스크를 2진수를 표현
  3. 2진수 AND 연상으로 서브네팅된 네트워크 주소를 알아냄
  4. 호스트 주소 부분을 2진수 1로 모두 변경해 브로드캐스트 주소를 알아냄
  5. 유효 IP 범위를 파악한다. 서브네팅된 네트워크 주소+1 은 유효 IP 중 가장 작은 IP
  6. 브로드캐스트 주소 -1 은 유효 IP 중 가장 큰 IP
  7. 2진수로 연산되어 있는 결괏값을 10진수로 변환

간단한 서브네팅 방법

  1. 서브넷 마스크를 2진수로 변환
  2. 현재의 서브넷이 가질 수 있는 최대 IP 개수 크기 파악. 2^6=64
  3. 64의 배수로 나열하여 기준이 되는 네트워크 주소 파악
    첫 블록은 0부터 시작한다.
    각 네트워크의 마지막 주소가 브로드캐스트 주소가 되고, 이 주소는 다음 블록 네트워크 주소의 -1 수
    - 0~63 / 64~127 / 128~191 / 192~255
  4. 103.9.32.146 에서 호스트 주소 146이 속한 네트워크 선택
    - 128~ 191
  5. 필요한 주소를 정리
    - 네트워크 주소 : 103.9.32.128 (첫 번째 숫자)
    - 브로드캐스트 주소 : 103.9.32.191 (마지막 숫자)
    - 유효 IP 범위 : 103.9.32.129 ~ 103.9.32.190 (네트워크 주소와 브로드캐스트 주소 사이)

 

네트워크 설계자의 입장

  • 서브넷된 하나의 네트워크에 IP를 몇 개나 할당해야 하는가?
  • 서브넷된 네트워크가 몇 개나 필요한가?

어떤 회사에서 최대 12대의 IP가 필요하고, 현재 가진 네트워크는 103.9.32.0/24 네트워크이다.

  1. 서브넷된 하나의 네트워크에 12개 IP 를 할당
  2. 네트워크는 2진수의 배수로 커지므로 4,8,16,32,128,256개 단위로 네트워크 할당
    12개 IP를 수용할 수 있는 가장 작은 네트워크는 16이므로, 16개짜리 네트워크 할당

    16개짜리 네트워크는 네트워크 주소와 브로드캐스트 주소로 사용할 2개 IP를 제외해야하므로 실제로 사용할 수 있는 IP 는 14개
  3. 16개짜리 네트워크 12개를 확보한다. 16의 배수를 0부터 나열해 네트워크 주소 확인
  4. 총 16개 네트워크 중 12개 네트워크 할당

 

<공인 IP와 사설 IP>

공인 IP : 전 세계에서 유일해야 하는 식별자

사설 IP : 인터넷에 연결하지 않고 개인적으로 네트워크 구성

 

사설 IP를 사용하면 인터넷에 직접 접속하기 못하지만 IP를 변환해주는 NAT 장비에서 공인 IP로 변경한 후에는 인터넷 접속 가능

가정에서 사용하는 공유기가 가장 대표적인 NAT

 

사설 IP는 A 클래스 1개, B 클래스 16개, C 클래스 256개 사용 가능

규모가 큰 엔터프라이즈 네트워크에서는 대부분 A 클래스 크기인 10.0.0.0/8 네트워크를 사용하고,

규모가 작은 네트워크를 위해서는 C zmffotm 192.168.x.0/24을 사용한다. 

공유기에서 가장 많이 사용되는 기본 IP가 192.168.0.1 인 이유이다.