IP 주소

IP 주소에서 IP 는 Internet Protocol 을 나타낸다. Internet Protocol 은 네트워크간에 이동하는 패킷 단위로 나눈 네트워크 데이터를 정확한 목적지로 보내기 위한 규약이다.


IP 주소는 Internet 에 연결된 모든 기기가 갖는 고유한 식별자다. IP 주소는 네트워크 ID (Network ID) 와 호스트 ID (Host ID) 로 구성된다. 네트워크 ID 가 네트워크 대역이라면 호스트 ID 는 같은 네트워크 대역을 공유하는 기기 하나라고 볼 수 있다.


IP 클래스와 CIDR

IP 주소는 IPv4, IPv6 2가지 종류가 있다. IP 클래스는 IPv4 주소에서 존재하는 방식이고 1993년부터는 CIDR 로 대체됐다.

IPv4 주소는 32비트의 이진수로 구성되어 있고 32비트를 8비트씩 4개로 나눠서 나타낸다. 각 8비트를 옥탯(Octet) 이라고 부른다.


IP 클래스는 5개 종류가 있고 클래스마다 네트워크 ID 와 호스트 ID 의 크기가 다르다. 각 IP 클래스는 고정된 네트워크, 호스트 크기를 갖는다.


네트워크 호스트 첫번째 옥텟의 고정 비트 IP 범위
클래스 A 8비트 24비트 0 0.0.0.0 ~ 127.255.255.255
클래스 B 16비트 16비트 10 128.0.0.0 ~ 191.255.255.255
클래스 C 24비트 8비트 110 192.0.0.0 ~ 223.255.255.255
클래스 D 1110 224.0.0.0 ~ 239.255.255.255
클래스 E 1111 240.0.0.0 ~ 255.255.255.255

클래스 D 멀티캐스팅용, 클래스 E는 예약주소라 일반적으로 사용되지 않는다고 한다. AWS, Cloudflare 문서에서는 클래스 D, E 를 제외하고 클래스 A, B, C 만 다룬다.


클래스 A 에서는 하나의 네트워크가 2 ^ 24개의 호스트, 클래스 B는 하나의 네트워크가 2 ^ 16 개의 호스트, 클래스 C 는 하나의 네트워크가 2 ^ 8개의 호스트를 갖는다.


CIDR

하나의 IP 를 할당받은 사용자는 호스트가 100가 필요한데 할당받은 IP 는 호스트 200개까지 가질 수 있다고 하면 100개가 낭비된다. IP 클래스는 고정된 네트워크, 호스트 크기를 갖기 때문에 호스트 크기를 유연하게 조절하기 어렵다. 이를 개선하기 위해 CIDR 이 나오게 된다. CIDR 은 1993년부터 IP 클래스를 대체해서 사용되고 있다.


CIDR 은 IP 주소에 접두어 길이를 함께 표기한다. 접두어 길이는 네트워크 ID 의 비트 수를 의미한다.


// IP 주소
255.255.255.128 /25

위와 같은 IP 주소는 네트워크 ID 가 25비트고 호스트 ID 가 7비트로 이루어진다. IP 클래스와 달리 네트워크 ID 를 8, 16, 24 비트 외에 세분화해서 나눌 수 있다.

접두어의 길이별로 할당할 수 있는 IP 주소 갯수는 여기 서 확인할 수 있다.


서브넷 마스크

네트워크를 보다 효율적으로 관리하기 위해 네트워크를 보다 작은 단위의 네트워크로 나눈다. 이렇게 나눠진 네트워크를 서브넷이라고 하고 서브넷으로 나누는 행위를 서브네팅이라고 한다. 서브네팅을 하려면 서브넷 마스크가 필요하다.


IP 주소를 통해 한 기기에서 다른 기기로 데이터를 전송하려면 데이터를 수신할 기기가 어떤 네트워크 대역에 있는지 알아야 한다. 서브넷 마스크를 통해 수신할 기기가 어떤 네트워크 대역에 있는지 알 수 있다.

서브넷 마스크의 네트워크 ID 는 1로 이루어져 있고, 호스트 ID 는 0으로 이루어져 있다.


네트워크 ID (네트워크 접두사, 서브넷 네트워크, 네트워크 주소)

IP 주소와 서브넷 마스크를 AND 연산하여 IP 주소의 네트워크 ID 를 구할 수 있다. 이 네트워크 ID 를 위키피디아 에서는 네트워크 접두사 로 표현하고, 이분 은 서브넷 네트워크로 표현하고, 이분 은 네트워크 주소로 표현하고 있다.


// IP 주소
192.168.5.96 /24
// 2진수로 표현하면
11000000.10101000.0000101.01100000
// 접두어 24는 (서브넷 마스크)
11111111.11111111.11111111.00000000
// AND 연산하면
11000000.10101000.0000101.00000000
// 10진수로 바꾸면
192.168.5.0

IP 주소 192.168.5.96 /24가 있다고 가정한다.


이 주소의 네트워크 ID 는 32비트 중 앞의 24비트를 차지하므로 192.168.5.0이 되고, 호스트 ID 32비트 중 네트워크 ID 를 제외한 8비트를 차지하므로 0.0.0.96이 된다.


IP 주소 192.168.5.96 /24를 서브넷팅해서 각 서브넷에 128개의 호스트를 할당할 수 있도록 하려면 서브넷 마스크의 비트수를 1 늘리면 된다.


/24는 호스트 길이가 8비트라 2 ^ 8인 256개의 호스트를 하나의 네트워크 ID 가 가질 수 있다.

/25로 서브넷 마스크를 설정하면 호스트 길이가 7비트라 2 ^ 7인 128개의 호스트를 하나의 네트워크 ID 가 가질 수 있다.


// 서브넷 마스크
11111111.11111111.11111111.10000000
// 10진수로 바꾸면
255.255.255.128

/25로 서브넷 마스크를 설정하면 서브넷 갯수는 2개가 되고 각 서브넷 마다 호스트 128개를 갖게 된다.


// 각 서브넷의 Network ID
11000000.10101000.0000101.0
11000000.10101000.0000101.1
// 11000000.10101000.0000101.0 의 IP 주소 범위
11000000.10101000.0000101.00000000 ~ 11000000.10101000.0000101.01111111
// 11000000.10101000.0000101.1 의 IP 주소 범위
11000000.10101000.0000101.10000000 ~ 11000000.10101000.0000101.11111111

<참고>

https://www.cloudflare.com/ko-kr/learning/network-layer/internet-protocol/

https://aws.amazon.com/ko/what-is/cidr/

https://nordvpn.com/ko/blog/what-is-subnet-mask/

https://ko.wikipedia.org/wiki/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC_%ED%81%B4%EB%9E%98%EC%8A%A4

https://ko.wikipedia.org/wiki/CIDR

https://ko.wikipedia.org/wiki/IPv4

https://ko.wikipedia.org/wiki/%EB%B6%80%EB%B6%84%EB%A7%9D

https://limkydev.tistory.com/166

https://code-lab1.tistory.com/34

https://hwannny.tistory.com/86

https://velog.io/@hidaehyunlee/%EB%84%B7%EB%A7%88%EC%8A%A4%ED%81%ACNetmask%EC%99%80-%EC%84%9C%EB%B8%8C%EB%84%B7%EB%A7%88%EC%8A%A4%ED%81%ACSubnetmask

https://kldp.org/node/127933

https://m.blog.naver.com/wb__/221097841823

+ Recent posts