...
아이피(IP) 정리
IP(Internet Protocol) 란 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소이다.
아이피(ip)는 일반적으로 192.168.123.132와 같이 마침표로 구분된 4개의 숫자가 있는, 점으로 분리된 10진수 형식으로 표시된다.
이를 2진법으로 표현한다면, 32비트 숫자 1000000.10101000.01111011.10000100 가 된다.
즉, 아이피는 32bit로 이루어진 주소이며, 1bit가 2이니까 2의 32승, 약 43억개의 주소를 가지게 된다.
IP 주소 구성
아이피는 네트워크 ID + 호스트 ID 로 구성되어 진다.
Network ID는 예를들면 전세계 Host들을 관리하기 힘드니 각 국가마다 Network ID를 부여한다고 보면 된다. 그럼 네트워크 아이디가 같으면 어떤 국가인지 알 수 있게 된다.
그리고 Host ID는 호스트들을 개별적으로 관리하기 위해 사용하게 된 것이다. 즉, 국가의 국민에 해당한다.
따라서 우리가 인터넷을 사용할 때 목적지를 알아내고 찾아가기 위해서는 NetworkID와 HostID가 합쳐진 IP 주소를 보게 된다.
예를들어, 다음과 같은 IP주소가 있다고 하자.
192.168.10.10 → 11000000.10101000.00001010.00001010
네트워크 주소는 11000000.10101000.00000010 이 되고, 나머지 빨간 부분인 00001010은 호스트 주소가 된다.
그리고 192.168.10. 으로 시작하는 PC는 192.168.10.10, 192.168.10.25, 192.168.10.126 ...과 같은 네트워크에 속하고 있다고 말 할 수 있다.
대한민국 지역 전화번호를 예시로 들어보자.
대한민국 전화번호는 지역번호와 개인번호로 구성되어 있다.
지역 번호를 통해 어느 사용자가 어느 지역(대구)에 위치해있는지 특정할 수 있고, 개인번호를 통해 대구의 어느 사용자에게 정확히 전화 주소를 찾아가 통화를 할 수 있게 된다.
이 개념을 그대로 네트워크 주소 / 호스트 주소로 가져오면 된다.
- 네트워크 ID : 모든 호스트를 관리하기 힘들기 때문에 한 네트워크의 범위를 지정한 ID
- 호스트 ID : 각각의 호스트를 관리하기 위해 사용
IP 주소 클래스
IP클래스는 예전에 IPv4를 사용했을 때 IP를 할당하는 방법이었다.
지금은 더 이상 사용되지 않고, 클래스 방식이 아닌 다른 방식(CIDR 방식)으로 할당하도록 1993년도에 바뀌었지만, 서브네팅을 하기위해선 기본 개념은 알고 가야 하기 때문에 학습이 필요한 부분이다.
IP 주소를 8비트로 4등분을 하면, 각각을 옥텟(Octet)이라 부른다.
각 옥탯별로 0~255개의 범위가 되므로 각각 256개가 들어갈 수 있게 된다.
그리고 이 옥탯 별로 IP의 클래스를 A,B,C로 나눌 수 있다.
각 클래스마다 위에서 배운 네트워크 ID 부분과 호스트 ID 부분 범위가 서로 다른것을 볼 수 있다.
이런식으로 나눔으로서 각 클래스마다 할당 되는 총 호스트 갯수가 나뉘어져 보다 체계적으로 관리할 수 있게 된다.
A 클래스 | 주소 | 1.0.0.0 ~ 127.255.255.255 |
서브넷 마스크 | 255.0.0.0 | |
그룹별 호스트 개수 | 2^24-2 = 16,777,214 개 | |
B 클래스 | 주소 | 128.0.0.0 ~ 191.255.255.255 |
서브넷 마스크 | 255.255.0.0 | |
그룹별 호스트 개수 | 2^16-2 = 65,534개 | |
C 클래스 | 주소 | 192.0.0.0 ~ 223.255.255.255 |
서브넷 마스크 | 255.255.255.0 | |
그룹별 호스트 개수 | 2^8-2 = 256개 | |
D 클래스 | 주소 | 224.0.0.0 ~ 239.255.255.255 |
특징 | 멀티캐스트용 | |
E 클래스 | 주소 | 240.0.0.0 ~ 254.255.255.255 |
특징 | 미래에 사용할 IP로 예약되어 있음 |
보통 우리가 사용하는 클래스는 3개다 ( A, B, C )
A 클래스
- A Class의 경우 처음 8bit(1byte)가 Network ID이며, 나머지 24bit(3byte)가 Host ID로 사용된다.
- A클래스의 첫번째 옥텟의 비트는 0으로 고정된다.
- 따라서 A Class의 범위는 첫 옥텟이 1 ~ 126 사이의 숫자로 시작한다.
- A클래스는 호스트ID 대역이 24bit이므로, 네트워크 당 나올 수 있는 호스트 주소 갯수는 1670만개 이므로, 대규모 네트워크에 적합하다
B 클래스
- B Class의 경우 처음 16bit(2byte)가 Network ID이며, 나머지 16bit(2byte)가 Host ID로 사용된다.
- B클래스는 첫번째 옥텟의 두번째 비트가 10으로 고정이 된다.
- 네트워크 주소는 처음 16비트이며 호스트 주소는 나머지 16비트
- 따라서 B Class의 범위는 첫 옥텟이 128 ~ 191 사이의 숫자로 시작한다.
- host 대역이 16bit 이므로 네트워크 당 나올 수 있는 호스트 수는 약 65000개 이므로 중규모 네트워크에 적합하다.
C 클래스
- C Class의 경우 처음 24bit(3byte)가 Network ID이며, 나머지 8bit(1byte)가 Host ID로 사용된다.
- C클래스는 첫번째 옥텟의 세번째 비트가 110으로 고정.
- 네트워크 주소는 처음 24비트이며 나머지 8비트는 호스트 비트
- 따라서 C Class의 범위는 첫 옥텟이 192 ~ 223 사이의 숫자로 시작한다.
- host 대역이 256개이므로 소규모 네트워크 환경에 적합하다.
D 클래스
- D클래스는 첫번째 옥텟의 네번째 비트가 1110으로 고정
- 1110 xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
- 그래서 표현할 수 있는 범위는 224.0.0.0 ~ 239.255.255.255
- 멀티캐스트용 대역으로 IP주소에 할당되지 않는다.
E 클래스
- E클래스는 첫번째 옥텟의 네번째 비트가 1111으로 고정
- 1111 xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
- 그래서 표현할 수 있는 범위는 240.0.0.0 ~ 255.255.255.255
- 연구용 예약된 주소 대역으로 IP주소에 할당되지 않는다.
네트워크 주소 & 브로드 캐스트 주소
여기서 유의할 점이 있는데, 아이피 주소에서 사용할 수 없는 주소가 두가지가 존재한다.
가장 첫번째 호스트 주소는 네트워크자체를 지칭하며, 마지막 주소는 브로드캐스트용 주소로 쓰인다.
네트워크 주소는 말 그대로 네트워크 자체를 나타내는거고, 브로드 캐스트 주소는 인터넷 데이터를 전달하기 위한 주소로서, 이것은 모든 네트워크 아이피 클래스에서 동일하게 적용 되는 것이므로 주의해야 한다.
한 네트워크를 나타내는 주소나 데이터를 전달하기 위한 주소를 PC에서 사용하면 문제가 생기기 때문에 사용할 수 없는 주소로 정리 하면 된다.
다음 과 같이 사용할 수 있는 아이피 주소 범위가 있다고 하자.
192.168.10.0 ~ 192.168.10.255
여기서 첫번째 192.168.10.0은 192.168.10 의 네트워크 자체를 가리키고,
맨 마지막 192.168.10.255가 브로드캐스트용 주소가 되게 된다.
그리고 그 사이의 192.168.10.1 ~ 192.168.10.254 주소들을 우리가 실제로 사용하는 것이다.
그중 192.168.10.1은 보통 공유기(라우터)가 가져가게 된다. 그래서 보통 사용자들은 192.168.10.2 부터 할당 받는 편이다.
정리하자면,
- 네트워크 주소
- 호스트 ID가 모두 0인 주소
- 네트워크 자체를 나타내는 주소
- 브로드캐스트 주소
- 호스트 ID가 모두 1인 주소
- 네트워크의 모든 호스트로 데이터를 전달하기 위한 통로로서의 주소
서브넷 / 서브넷 마스크 / 서브네팅 총정리
서브넷, 서브넷 마스크, 서브네팅 같은 단어이면서 아닌듯한 이 용어에 대해 정확히 짚어보자.
서브넷(Subnet)
앞서 배웠듯이 IPv4는 초기에 부족한 아이피 주소를 해결하기위해 ip 클래스로 나누어서 할당을 방법을 택했다.
하지만 사용해보니 이 방식은 오히려 비효율적 인 것이었다.
클래스 B를 어느 중소기업체에게 할당했을 경우 만일 그 기업이 65000여개의 아이피를 다 쓰는 것이 아닌 10000개 정도만 쓴다고 가정해보자.
그럼 나머지 50000여개의 IP는 쓰이지 않은 채 이 기업체는 클래스 B의 하나를 점유하고 있는 상태가 되어 버린다.
그렇다고 이 기업체에게 C 클래스 IP(256개)를 할당하자니 IP자원이 너무 부족하게 되어 버린다.
즉, 호스트 수에 맞게 IP를 클래스별로 나누어 놓았더니만 안하만도 못한 현상이 발생한 것이다.
이도 저도 아닌 이러한 문제를 해결하기 위해 IP를 사용하는 네트워크 장치 수에 따라 효율적으로 사용할 수 있는 서브넷(Subnet) 개념이 등장하게 되었다.
- 서브넷(Subnet) 이라는 것은 하나의 네트워크가 분할되어 나눠진 작은 네트워크이다.
- 서브넷을 만들기위해 네트워크를 분할하는 것을 서브네팅(Subnettin)이라고 한다.
서브네팅을 하면 IP 할당 범위를 더 작은 단위로 쪼갤수 있게 된다.
그래서 만일 ip가 100개만 필요하다면 C클래스(256개)를 더 쪼개서 줄 수 있다. - 그리고 이 서브네팅을 서브넷 마스크(Subnet Mask)를 통하여 계산되어 수행된다.
세가지 용어에 대해서 명확히 정리가 되어졌다.
그럼 이제 서브넷 마스크로 서브네팅을 하는 방법을 알아보도록 하자.
서브넷 마스크 (Subnet Mask)
서브넷 마스크는 ip주소에서 네트워크 ID와 호스트 ID로 구분하기 위한 목적으로 만들어 졌다.
물론 ip클래스마다 주소 범위가 정해져있어서 앞자리만 보고도 어느 클래스인지 판별할 수는 있긴 하지만 보다 쉽게 구분하기 위해서 고유의 표기법으로 구분한다고 이해하면 된다.
서브넷 마스크 표현
서브넷 마스크는 IP주소와 똑같은 32비트 2진수로 표현된다.
255.255.255.0
여기서 아이피와 표현이 다른 점은 서브넷 마스크는 연속된 1과 연속된 0으로 구성되어있다는 것이다.
즉, 10011111.11011111.11110011.00000000 와 같이 1 중간에 0 이 들어오는 값은 가질 수 없고,
11111111.11111111.11111100.00000000의 1이 연속되거나 아닌 형태만 가질 수 있다는 말이다.
앞서, 서브넷 마스크는 네트워크 아이디와 호스트 아이디를 보다 편하게 구분하기 위해 사용된다라고 했었다.
다음 사진을 보면 그 원리를 쉽게 이해할 수 있을 것이다.
서브넷 마스크 옥텟(1바이트)가 255면 즉 네트워크 아이디를 가리키게 되는 것이다.
그래서 아주 간단하게 IP주소와 서브넷 마스크를 이용해서 이 IP가 어느 클래스인지 알 수 있다.
CLASS | 대역 | 디폴트 서브넷 마스크 |
A | 1.0.0.0 ~ 127.255.255.255 | 255.0.0.0 |
B | 128.0.0.0 ~ 191.255.255.255 | 255.255.0.0 |
C | 192.0.0.0 ~ 223.255.255.255 | 255.255.255.0 |
Prefix 표현
서브넷 마스크를 위보다 더욱 간소화해서 표현할 수도 있다.
바로 비트를 이용한 방법인데, IP 주소가 192.168.0.1/24 라면 뒤에 /24가 서브넷 마스크를 표현한 것이다.
/24 라는 뜻은 32비트 중 앞에서부터 차례대로 1의 개수가 24개라는 의미이다. 나머지 32-24=8은 0으로 채워주면 서브넷 마스크 숫자가 되는 것이다.
/24 → 11111111.11111111.11111111.00000000
기존의 서브넷을 나타내는 방법 255.255.255.0 을 /24 즉, 네트워크에 해당하는 비트의 수로 표시하는 방식을 말한다고 보면 된다.
이렇게 하면 IP 주소를 입력할 때 192.168.1.17 255.255.255.0 를 192.168.1.17/24로 간략히 줄일 수 있게 된다.
서브넷 정보를 알려주기 위해 기존에는 4B가 필요했지만 6bit만 있으면 해당 정보를 전달할 수 있어서 네트워크 리소스를 절약할 수 있다.
- 10.10.10.10/8 → A클래스
- 172.16.1.10/16 → B클래스
- 192.168.100.10/24 → C클래스
서브네팅 (Subnetting)
서브네팅이란 간단하게 말하자면 IP주소를 효울적으로 나누어 사용하기 위한 방법을 일컫는다.
네트워크 성능 보장, 자원을 효율적으로 분배하기 위해 네트워크 영역과 호스트 영역을 쪼개는 작업을 행한다.
서브넷팅을 하면 IP 할당 범위를 더 작은 단위로 나눌 수 있게 된다. (자신의 네트워크 주소를 더 작은 서브 네트워크로 2의 배수로 나누는 과정)
아래 사진과 같이,
만일 호스트를 50개만 사용하는 기업이 192.168.10.0/24 아이피 주소를 사용한다면 가정하면, C클래스이니까 총 256개의 주소를 할당하게 되는데,
256개 전체를 주기에는 낭비가 되니까, 이 256개를 절반으로 나누고(128개) 또 절반으로 나눈(64개) 주소를 기업에게 할당하고 남는 네트워크 주소는 다른 사용처로 할당하는 효율적인 작업이 바로 서브네팅 원리이다.
서브네팅 계산법
주소범위를 절반으로 나누기 (2등분)
예를들어, 100개의 아이피를 사용하는 회사가 있다고 가정하자.
이 회사에게 아이피 대역을 할당할 예정이다.
100개 밖에 사용안하니 가장 작은 C클래스 대역을 줄 예정인데(192.168.10.0/24) 그래도 256개를 전부 주기에는 낭비가 있어 보인다.
/24 라는 뜻은 1이 24개라는 뜻이다.
그러면 24비트까지가 네트워크 ID(3옥텟), 25번째 부터는 호스트 ID(1옥텟)이 된다.
- 1100000.10101000.00001010.0000000
호스트ID가 8비트이니까 즉, 할당가능한 호스트 갯수는 2^8=256개가 된다.
하지만 회사는 100개의 호스트만 사용한다고 하니 256개를 전부 주는 것은 낭비이다. 256개의 주소를 절반으로 나누는 작업을 시행해보자.
128개씩 두개로 나누기 위해 서브넷 구분 비트 라는 것을 지정해주어야 한다.
서브넷 구분 비트는, 이름 그대로 네트워크 주소를 어느 기준으로 쪼개서 서브넷(분할된 네트워크)을 만들어 구분할지 정하는 비트라 이해하면 된다.
서브넷 구분 비트는 항상 호스트 ID에서 왼쪽부터 결정이 되어야 한다는 특징이 있다.
즉, 호스트ID의 맨 왼쪽을 서브넷 구분 비트로 지정하게 되면, 0과 1로 구분되어지는데,
범위가 2진수로 다음과 같이 나뉘게 된다
.00000000 ~ .01111111 (0 ~ 127)
.10000000 ~ .11111111 (128 ~ 255)
즉, 호스트ID 맨왼쪽 비트가 0이냐 1이냐에 따라 서브넷이 두개로 분리되게 된다.
따라서 서브넷 구분 비트 2^7승 128값 기준으로 서브넷 주소 범위가 두개로 나뉘어진다.
나뉘어진 서브넷을 10진수로 아이피 전체 주소 범위를 표현하여 둘로 나뉘면 아래와 같이 된다.
이렇게 절반으로 나눈 한 서브넷 부분을 이제 회사에게 할당하고 나머지도 필요한 곳에 분배하면 된다.
이때 위에서 유의했듯이 어느 한 네트워크 범위의 가장 첫번째 주소(0) 과 마지막 주소는 네트워크/브로드캐스트 주소로서 제외하여야 한다고 하였다.
따라서 사용가능한 호스트는
192.168.10.1 ~ 192.168.10.126
192.168.10.129 ~ 192.168.10.254
로 되게 된다.
주소범위를 4등분 나누기
이번엔 50개 호스트만 사용하는 회사가 있다고 하자.
이 역시 반으로 쪼개어도 128개를 통째로 주기에는 주소 낭비가 심하다. 따라서 같은 원리로 절반으로 또 쪼개 64개로 만들고 할당해주면 된다.
앞에서 했듯이 192.168.10.0/24 는 C클래스로서 사용가능한 호스트 갯수는 256개이다.
이를 4등분해서 64개의 호스트를 가진 서브넷 4개로 나누는 것이다.
4등분 하기위해 서브넷 구분비트를 왼쪽에서 2비트로 지정한다.
그러면 서브넷 구분비트는 00, 01, 10, 11 로 총 4개로 구분되어질 수 있고, 이를 적용해보면
00000000 ~ 00111111
01000000 ~ 01111111
10000000 ~ 10111111
11000000 ~ 11111111
로 범위가 4등분되어 나뉘어 줄수 있다.
이 범위를 아이피 주소로 표현하자면 다음과 같이 된다.
여기서 네트워크 주소와 브로드 캐스트 주소의 특징을 볼수 있는데,
네트워크 주소는 항상 짝수로 나온다는 특징과 브로드 캐스트 주소는 항상 홀수로 나온다는 특징이 있다.
따라서 브로드 캐스트 주소를 구했는데 짝수가 나온다면 잘못 계산한것으로 보면 된다.
어쨋든 간에 256개의 호스트 주소를 4개로 나뉘었고 이를 범위로 표현하면 다음과 같이 된다.
이중 서브넷 하나를 회사에게 할당해주면 끝난다.
주소범위를 복합적으로 나누기
이번에는 3층 건물이 있고 각 층마다 회사가 들어섰는데, 1층은 100개의 주소, 2층은 50개, 3층은 30개만 사용한다고 가정하자.
주소를 원하는 크기만큼 나눌때는 반드시 크기가 큰 것 부터 나눠야 한다.
즉, 1층의 100개 부터 나누어 할당해줘야 한다는 말이다.
1층의 호스트 100대의 아이피주소를 할당하기위해서는 7개의 호스트 ID 비트가 필요하다.
왜냐하면 2^7으로서 128개가 되니까 100개를 충분히 할당 할 수 있기 때문이다.
그러면 25비트가 네트워크 ID 그리고 나머지 7비트가 호스트 ID가 됨으로서 다음 그림과 같이 표현된다.
이제 이 호스트 ID를 처음과 끝을 구해준다.
호스트ID의 아이피 주소의 범위는 .00000000 ~ .01111111 (0 ~ 127) 이 되니까,
10진수로 표현하면 192.168.10.0 ~ 192.168.10.127 이되고 이 아이피 범위 서브넷을 1층에 할당해주면 된다.
이번에는 2층의 50대의 호스트를 할당하기 위해선 6개의 비트만 호스트 ID만 있으면 된다.
왜냐하면 2^6 (64)개만 할당해주면 되기 때문이다.
단 유의할 점은 이 64개는 처음에 1층에 할당하고 남은 나머지 128개의 호스트 주소 범위를 쪼개서 나눠 할당해야 한다.
위에서 1층에 호스트를 할당하기 위해 256개를 절반으로 나누었는데
- 192.168.10.0 ~ 192.168.10.127
- 192.168.10.128 ~ 192.168.10.256
그중 192.168.10.0 ~ 192.168.10.127 는 이미 1층에 할당헀으니,
나머지 192.168.10.128 ~ 192.168.10.256 범위에서 쪼개어 나누면 된다는 말이다.
호스트 ID 비트는 6개이므로 이를 2진수로 표현해서 처음과 끝을 구해보면
- .10000000 ~ 10111111 (128 ~ 191)
가 되고 이 범위(64개)를 2층에 할당해주면 된다.
원래 아이피 주소 192.168.10.0 ~ 192.168.10.255 에서
192.168.10.0 ~ 192.168.10.127는 1층에 할당했고, 192.168.10.128 ~ 192.168.10.191 은 2층에 할당 했다.
이제 나머지 192.168.10.192 ~ 192.168.10.255 에서 3층을 같은 방식으로 반의 반으로 쪼개서(32개) 할당해 주면 된다.
3층은 30개만 사용하니 2^5(32)만 필요해 호스트 ID는 5비트가 되고, 이를 범위를 구하게 되면
- .11000000 ~ .11011111 (192 ~ 223)
가 되서 즉, 192.168.10.192 ~ 192.168.10.223 범위의 서브넷을 할당해주면 끝난다.
슈퍼넷팅 (Supernetting)
서브넷팅이 네트워크를 분할하는것 이었다면, 슈퍼넷팅은 반대의 개념이다.
네트워크를 합치는 것을 슈퍼넷팅이라고 한다.
예를들어 192.168.10.0/24를 사용하면 192.168.10.0~192.168.10.255 범위에서 254(네트워크, 브로르캐스트 주소 제외)개의 호스트를 가질 수 있게 된다.
그런데 만일 이 네트워크에 몇명이 추가로 들어와서 500개 분의 더 많은 호스트가 필요하게 되었다면 어떻게 할까?
C클래스의 모든 대역폭으로는 갯수가 부족하니까 B클래스 대역폭을 통째로 주어야 할까?
여기서 슈퍼네팅이 힘을 발휘하는데, 바로바로 C클래스 2개를 합쳐서 하나의 네트워크로 구성하여 사용할 수 있다.
방법은 간단하다. 서브넷 마스크를 이동시키면 된다.
192.168.10.0/24 에서 192.168.10.0/23으로 prefix숫자를 감소시킨다.
prefix 숫자가 감소시킨다는 것은 곧 호스트ID 갯수가 늘어난다는 뜻과 같다
192.168.10.0/23 를 서브넷 마스크와 2진수로 표현해보면 다음과 같이 된다.
- 아이피 : 11000000.10101000.00001010.00000000 (192.168.10.0)
- 서브넷 마스크 : 11111111.11111111.11111110.00000000 (255.255.254.0)
즉, 서브넷 마스크의 1의 갯수가 23개가 되니 호스트 ID의 비트수는 9개가 되고, 2^9=512 니까
192.168.10.0 ~ 192.168.11.255 의 범위를 가지게 된다.
그러면 C클래스 두개를 합쳐 256 X 2 = 512 - 2(특수목적 IP) = 510 개의 호스트를 가질 수 있는 네트워크가 완성되어 진다.
# 참고자료
https://www.youtube.com/watch?v=b7Wk-6w5vgg
https://yohanpro.com/posts/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-IP%EC%A3%BC%EC%86%8C%EC%9D%98%20%EA%B5%AC%EC%A1%B0/
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.