ip 주소의 netmask는 무엇일까요?

네트워크 2020. 6. 21. 19:28

 오늘 따라 덥군요. ifconfig 명령어를 치면, 여러 가지 정보들이 나옵니다. 이 중에서, netmask를 알아보도록 하겠습니다.

 


 ifconfig 명령어를 쳐 보겠습니다. 우분투에서는, 이 명령어를 치면, 추가적인 패키지를 깔아야 할 겁니다.

 

 inet, netmask, broadcast가 보이는데요. 이 중에서 netmask는 대체 어디에 쓰이는 것일까요? 일단, 255. 255. 255. 0을 3자리씩 끊어서 2진수로 바꿔 보도록 하겠습니다.

 

 

 대충 이렇게 되겠군요. 다음에 192.168.213.128을 3자리씩 끊어서 2진수로 바꿔 보도록 하겠습니다.

 

 

 이 친구는 hostname -I 명령어를 입력했을 때, 나온 값이기도 하였습니다.

 

 

 그러면 11000000. 10101000. 11010101. 10000000이 됩니다. mask라고 하였으니, 저는 이 둘을 and 연산을 하고 싶어졌습니다.

 

 

 그러면, 192. 168. 213. 0이 나옵니다.

 

 

 ssh 통신을 할 때, wireshark로 패킷이 날라가는 것을 보여드렸는데요. 192. 168. 213. 1에서 192. 168. 213. 128로 날라갔었습니다. 이것의 서브넷 마스크 또한 255. 255. 255. 0이였는데요.

 

 

 255.255.255.0과 192.168.213.1을 bit and 연산을 하면 192. 168. 213. 0이 나온다는 것을 알 수 있습니다. 이렇게 해서 나온 값을 네트워크 주소라고 합니다.

 

 

 192. 168. 213. 1과 192. 168. 213. 128은 같은 네트워크에 속해있는 것을 알 수 있습니다. 같은 네트워크에 속해 있다면, host를 구분해야 합니다. 이건 또 어떻게 하면 좋을까요? /24에서는 상위 24비트가 1입니다. 그러면 11111111 11111111 11111111 0000000 이렇게가 mask일 텐데요. 이것을 뒤집어 보겠습니다.

 

 

 그러면 00000000 00000000 00000000 1111111이 됩니다. inet4 주소인 192. 168. 213. 1과 이것을 and 연산을 하면 0.0.0.1이 나오는데요. 이것이 호스트 주소라고 할 수 있습니다.

 

 

 여기까지 보면 되겠군요.

 


 몇 개만 더 풀어봅시다. 192.168.213.0/24에서 host의 최대 갯수는 얼마까지 나올 수 있을까요?

 

 

 일단 보라색 부분은 bit가 0이거나 1이여도 됩니다. 비트 수가 8개이니, 2^8 = 256가지일 겁니다. 그런데, 이 중 하나는 네트워크 주소로 쓰고, 다른 하나는 broadcast 주소로 쓸 겁니다. 그러면 실제로 가능한 host 수는 2^8 - 2 = 254개가 됩니다. 이제, 링크에 나온 문제를 풀어보겠습니다.

 

 어떤 네트워크게 속한 IP 주소가 주어졌을 때, 이들이 속한 네트워크 중에, 크기가 가장 작은 네트워크를 구하라는 문제가 나왔습니다. 어떻게 하면 될까요? 예제에 나온 3개의 ip를 2진수로 바꿔 보겠습니다.

 

 그 다음에, 앞의 x개의 bit를 1, 나머지 32-x개의 bit를 0인 mask를 생성합니다. x가 커질수록 network에 속한 host의 갯수는 작아질 겁니다. 각각의 ip 주소와 mask를 and 연산했을 때, 결과값이 모두 같으면, 이 3개는 같은 network에 속한다고 할 수 있어요. 그런데, 조금 더 생각을 해 보겠습니다.

 

 mask가 아래와 같다고 해 보겠습니다.

 

 당연하게도, 1번째 ip와 mask를 and 한 것과, 2번째 ip와 mask를 and 한 것, 3번째 ip와 mask를 and한 결과값이 모두 같습니다. 이는, ip 3개의, 길이 24인 접두사가 모두 같기 때문입니다. 마지막 8bit만 보겠습니다. 셋 다, 10110xxx 꼴인 것을 알 수 있습니다. 뒤에 3bit를 보면 001, 111, 010임을 알 수 있는데요. 앞에서 30번째 bit가 다르다는 것을 알 수 있습니다.

 

 따라서, 앞에서 29번째 bit까지 같다. 고 결론을 내릴 수 있습니다. 즉, 3개의 ip는 11000010 01010101 10100000 10110xxx 꼴임을 알 수 있습니다. mask를 11111111 11111111 11111111 11111000로 설정해 보겠습니다.

 

 

 ip 주소와 mask를 and 연산을 하면 아래와 같이 나옵니다.

 

 

 이는, 194.85.160.176/29로 표현할 수 있습니다. 그리고, 문제에 나온 input의 network 주소와 host는 아래와 같습니다.

 

 

 이 중 하나는 broadcast로 쓰겠군요.