IP 주소 & 서브넷 마스크(Subnet Mask) 정리
IP 주소
컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호입니다. 이 번호를 통해 발신자의 메시지가 전송되고, 수신자의 번호로 전달됩니다. 일종에 인터넷 상 전화번호부 라고 보면됩니다.
IPV4 주소
IPV4(IP version 4) 주소는 오늘날 일반적으로 사용하는 IP주소입니다. 이 주소의 범위는 32비트로, 0~255 사이의 십진수 4개를 .으로 구분하여 나타냅니다. 0.0.0.0 ~ 255.255.255.255 까지이며, 이론적으로 42억 9496만 7296개의 IP 주소가 존재합니다.
Public IP & Private IP
Private IP Address를 사용하는 이유는 Public IP Address의 개수가 한정되어 있기 때문에 더 많은 수의 디바이스를 연결하기 위해서입니다. 집에서 사용하시는 공유기에서 받는 IP Address가 Private Address입니다.
공유기를 사용중이시라면 cmd를 열고 ipconfig를 쳐보시면 IPv4 Address를 얻으실 수 있는데 이부분의 IP Address 가 private IP입니다.
만약 자신이 사용하는 Public IP를 확인하고 싶으시다면 구글창에 what is my ip를 쳐보세요.
그림으로 표현하자면 이런 모습입니다.
- 공유기에 IPS(통신사라고 생각하시면 됩니다.)가 Public IP Address를 할당하고
- 공유기가 각 디바이스에 Private IP Address를 할당한다고 생각하시면 됩니다.
IP주소의 클래스
IP주소에는 클래스라는 개념이 있고, 이 클래스의 개념을 알아야 어디까지가 네트워크 영역이고, 호스트 IP 영역인지 알 수 있습니다.
즉, 클래스는 하나의 IP 주소에서 네트워크 영역과 호스트 영역을 나누는 방법이자, 프로토콜입니다.
하나의 네트워크에서 몇개의 호스트 IP까지 가질 수 있는가에 따라서 클래스를 나눌 수 있습니다. IP주소 클래스는 점점 많아지는 IP Address의 요구를 충족하기 위해 IP Address Class 가 만들어졌다고 생각하시면 됩니다.
이런 IP주소 클래스의 종류에는 총 5개로, A,B,C,D,E 클래스로 나뉩니다. 하지만 보통 A,B,C 3개 클래스 정도만 쓰이고, 나머지 D,E 클래스는 멀티캐스트용, 또는 연구용으로 사용됩니다.
먼저 클래스를 이해하기전 IP주소는 2가지의 부분으로 나누어져 있습니다.
간단하게
- Network Address:그룹(네트워크 를 식별하기 위한)
- Host Address: 개인(네트워크의 호스트 컴퓨터를 식별하기 위한 것)
A클래스, B클래스, C클래스
A클래스
먼저 A클래스는 하나의 네트워크가 가질 수 있는 호스트 수가 제일 많은 클래스입니다. IP 주소를 32자리 2진수로 표현했을때, 맨 앞자리 수가 항상 0인 경우가 바로 A클래스입니다.
여기서 A클래스가 가질 수 있는 IP범위는
0000 0000. 0000 0000. 0000 0000. 0000 0000 ~ 0111 1111. 1111 1111. 1111 1111. 1111 1111
까지로, 이를 십진수로 표현하면, 0.0.0.0 ~ 127.255.255.255 까지 입니다.
또, A클래스에서 네트워크 주소는 가장 작은 네트워크인 1.0.0.0과 가장 큰 네트워크인 126.0.0.0까지로 규정되어 있습니다. 127.0.0.0이 제외된 이유는 그냥 네트워크 상 약속이라고 생각하시면 됩니다. 참고로, 1.0.0.0 이나 126.0.0.0 에서 0에 해당하는 부분은 호스트 부분이라는 뜻입니다.
A 클래스의 서브넷 마스크(subnet mask)의 값은 255.0.0.0으로, ip 4개의 숫자 중, 가장 첫번째 부분만 네트워크 주소에 해당된다고 보시면 됩니다. 서브넷 마스크를 ip 주소에 적용하는 방법은 AND 연산자를 사용해서, 123.456.789.1112이라는 ip와 255.0.0.0이라는 서브넷 마스크를 AND 연산하여, 나오는 값으로, 이 경우, 123.0.0.0이 됩니다.
따라서, A클래스에 해당하는 네트워크는 1부터 126으로 시작하는 네트워크라고 생각하면 되고, 호스트 주소가 가질 수 있는 갯수는 (2^24) - 2 개 입니다. 여기서 -2를 하는 이유는, 호스트 부분이 모두 1인 경우, 브로드캐스트 주소로 사용되고, 모두 0인 경우에는 네트워크 주소로 사용되기 때문입니다.
예를 들어 A클래스로 13.0.0.0 네트워크 주소를 할당 받았다고 해봅시다. 여기서 13.은 네트워크 부분, 나머지 0.0.0은 호스트 IP를 할당 할 수 있는 호스트 부분입니다. 이를 각 0당 8비트 이므로, 2^24 개의 호스트 IP를 가질 수 있습니다.
이를 십진수로 나타내면, 13.0.0.0 ~ 13.255.255.255 이지만, 여기서 13.0.0.0은 네트워크 주소를 표현하기 위해서 호스트 IP로 사용할 수 없고, 13.255.255.255 역시 브로드캐스트 주소로 사용하기 때문에 호스트 IP를 할당 할 수 없습니다. 따라서, 13. 네트워크가 할당 받을 수 있는 호스트 IP의 갯수는 총 (2^24) - 2 개 입니다.
B클래스
B클래스는 2진수로 표현했을때 반드시 10으로 시작합니다. 즉, 10xx xxxx. xxxx xxxx. yyyy yyyy. yyyy yyyy 입니다.
B 클래스의 서브넷 마스크의 값은 255.255.0.0으로, ip 4개의 숫자 중, 첫번째와 두번째 부분만 네트워크 주소에 해당된다고 보시면 됩니다.
B클래스의 IP범위는 128.0.0.0 ~ 191.255.255.255 까지이고, 네트워크 범위는 10xx xxxx. xxxx xxxx 에서 x들이 가질 수 있는 경우의 수입니다. (2^14개)
호스트 주소 범위는 yyyy yyyy. yyyy yyyy 에서 y들의 경우의 수인 (2^16) - 2 개 입니다. -2는 네트워크 주소, 브로드캐스트 주소 사용으로 인해 호스트 주소에서 제외해야 합니다.
C클래스
C클래스는 2진수로 표현했을때 반드시 110으로 시작합니다. 즉, 110x xxxx. xxxx xxxx. xxxx xxxx. yyyy yyyy 입니다.
B 클래스의 서브넷 마스크의 값은 255.255.0.0으로, ip 4개의 숫자 중, 첫번째, 두번째 그리고 세번째 부분이 네트워크 주소에 해당된다고 보시면 됩니다.
C클래스의 IP 범위는 192.0.0.0 ~ 223.255.255.255 까지이고, 네트워크 범위는 110x xxxx. xxxx xxxx. xxxx xxxx 에서 x들이 가질 수 있는 경우의 수입니다. (2^21 개)
호스트 주소 범위는 yyyy yyyy에서 y들이 가질 수 있는 경우의 수인 (2^8) -2개 입니다. -2는 네트워크 주소, 브로드 캐스트 주소 사용으로 인해 호스트 주소에서 제외됩니다.
CIDR(Classless Inter-Domain Routing)
CIDR는 기존의 IP 주소 할당 방식이었던 네트워크 클래스를 방법을 대체한 방식입니다. CIDR는 IP Address의 영역을 나눌 때 기존방식보다 유연하게 자신이 원하는 Network Address와 Host Address를 나눌 수 있습니다.
CIDR란 결국 IP Address Class보다 더욱 많아진 IP Address의 요구를 충족시키기 위해서 나왔다고 생각하시면 됩니다.
결국 CIDR block 이란 IP address들의 그룹이며,CIDR이란 IP address들의 그룹을 관리 하면서 기존 IP Address Class보다 유연하게 동작하는 방식으로 이해하시면 됩니다.
CIDR는 AWS VPC에서 사용하는 IP 주소 할당 방식이기도 합니다.
AWS VPC는 private IP의 사용을 추천하고 있는데요. 그 이유는 아래의 가정 하나로 설명하겠습니다.
만약 VPC를 인터넷에 연결 한다고 가정해봅시다. 인터넷에서 사용되고 있는 IP Address (xxxx.xxxx.xxxx.xxxx/16)로 지정하게 되면 그 범위의 IP Address는 VPC 내부에서 움직이게 되고 VPC에서 사용하고 있는 IP Address범위에 속한 인터넷 IP Address에 접속하는 것이 불가능 합니다. 예를들면 87.32.0.0/16 으로 설정한다고 생각해봅시다. 이 범위는 VPC내에서만 움직이게 됩니다. 그럼 인터넷의 어느 사이트가 87.32.1.0 의 IP Address를 사용하고 있다면 이 곳에 접속을 할 수 없게 됩니다. 왜냐하면 VPC내부에서 IP Address를 찾게 되기 때문입니다.
그렇기때문에 Private IP 사용하는 것이 권장됩니다.
Private IP 대역입니다.
- A Class 10.0.0.0/8
- B Class 172.16.0.0/12
- C Class 192.168.0.0/16