이 글은 go언어를 활용한 네트워크 프로그래밍을 기반으로 작성되었습니다
IPv4(1) 에 이어 IPv4(2)입니다.
CIDR(Classless Inter-Domain Routing)이라는 방법을 사용하여 네트워크를 할당한다. CIDR은 네트워크 접두사를 각 IP주소 끝 부분에 추가하여 슬래시와 정수 숫자로 구성된 네트워크ID의 비트 크기를 나타내는 부분입니다.
예를 들면 192.168.156.97/16은 IP주소에서 첫 16비트가 네트워크ID라는 것을 나타냅니다.
여기서 서브넷 마스크를 적용하여 네트워크 IP 주소를 얻어 올 수 있다. 서브넷 마스크는 십진수 표현법으로 CIDR 네트워크 접두사를 인코딩한다. 네트워크ID를 얻어 오기 위해 IP주소에 AND 비트 연산을 적용한다.
아래의 표에서는 가장 일반적인 CIDR 네트워크 접두사와 해당 서브넷 마스크, 그리고 각 네트워크 접두사에 사용할 수 있는 네트워크 및 각 네트워크에 사용할 수 있는 호스트 개수에 대해 자세하게 나타낸다.
각 네트워크에는 특별한 2개의 네트워크가 존재하기 때문에 실제로 사용할 수 있는 네트워크는 2개 적다. 네트워크의 첫 번째 IP 주소는 네트워크 주소로 사용되고, 마지막 IP 주소는 브로드캐스트 주소로 사용된다.
ex)192.168.0.0은 네트워크ID, 192.168.255.255는 브로드캐스트 주소이다.
이 2개의 IP주소는 네트워크 인터페이스에 할당되지 않고 데이터를 라우팅하는데 사용된다.
일부 네트워크 접두사는 8,16,24 이/19 런식으로 딱 나눠 끊어지지 않고 19와 같이 끊어지게 되는 경우도 존재합니다. 아래의 그림은 192.168.156.97/19와 같은 IP 주소의 네트워크ID와 호스트ID를 얻는 방법의 예시입니다.
네트워크 ID가 19비트이기 때문에 딱 19비트의 해당하는 만큼만 네트워크ID에 할당하고 나머지 비트들은 호스트ID에 할당합니다. 그러면 네트워크ID는 192.168.128.0이 되고 호스트ID는 0.0.28.97이 됩니다.
이렇게 만들어진 각각의 ID를 더해주게 되면 전체 IP주소가 됩니다.
RFC 1918에서는 10.0.0.0/8, 172.16.0.0/12. 192.168.0.0/16 대역의 사설 주소 공간에 관해 설명한다. 대학교, 기업, 정부기관 및 일반 가정집 네트워크에서 로컬 네트워크 구성을 위해 해당 서브넷을 사용할 수 있다.
또한, 각 호스트에는 로컬 서브넷을 지정된 127.0.0.0/8 서브넷 대역이 존재한다.
이 서브넷의 주소는 호스트의 로컬 주소이며 흔히 localhost라고 합니다. 컴퓨터가 네트워크에 연결되어 있지 않더라도 127.0.0.0/8 서브넷 대역, 대개 127.0.0.1은 사용할 수 있습니다.