서브넷 마스크(not CIDR)를 사용한 계산을 간단하게 할 수 있다고 빨리 말해줘!

전치



서브넷 마스크는, 실무에서는 대체로 CIDR 표기(서브넷 마스크를 자리수로 지정.예: /27 ) 뭐가 아닌 것일까? 라고 생각합니다만,
IPA계의 시험이라면(오전에 오후에 하라)CIDR이 아닌 분의 표기(서브넷 마스크를 IP와 같은 표기로 지정.예: 255.255.255.224 )로 출제되는 것이 많은 생각이 듭니다.
참고서의 해설 읽고 있으면, 대체로, 호스트 주소를 요구하려면 우선 서브넷 마스크를 2진수로 변환해~,라고 쓰고 있습니다만,
그런 일 없이도 요구됩니다.

주제



구체적인 예



구체적인 문제로 해보겠습니다.

네트워크에 연결된 호스트의 IP 주소가 198.51.100.90이고 서브넷 마스크가 255.255.255.224 일 때 호스트 주소는 무엇입니까?
정보 처리 안전 확보 지원사 2017년 가을 오전 Ⅱ 문 20

IPA 독립 행정법인 정보 처리 추진 기구: 문제 책자·배점 비율·해답 예·채점 강평(2017, 2017년)
또는
2017 년 가을 질문 20 호스트 주소는 어느 것인가 | 정보 처리 안전 확보 지원사.com

이 문제에 대한 대답은 '26'이지만,
256 - 224 = 32 \\
90 \bmod 32 = 26

에서 요구됩니다.
CIDR 표기로했을 때의 접두사 길이를 얻고 싶은 경우는,
256 - 224 = 32 = 2^5

그래서, 이 경우의 $5$ 가 2진수 표기로 했을 때의 0의 수가 된다($224(10)=1110 0000(2)$인 것을 알 수 있다) 때문에,
$8*3+(8-5)=27$에서 '/27'이 요구됩니다.

일반화



일반화하면,

"서브넷 마스크가 255.255.255.α인 경우 IP 주소 A.B.C.x의 호스트 주소는
x \bmod (256 - α)

된다. "

그렇게 됩니다.
(프리픽스 길이가 24 이하인 경우는 주목하는 옥텟을 어긋나 주세요.)

왜 이것이 성립되는지는, 나중에 조금 써 보겠습니다만,
각자 수중에서 2진수 표기에 고쳐 계산해 보면, 역시 건에 떨어지는 것이 아닐까 생각합니다.

mod 계산은 어떤 경우에는 조금 번거로울 수 있지만,
10진수→2진수 변환이 특기인 사람이나, 서브넷 마스크 관련의 2진수 표기를 암기하고 있는 사람 이외라면, 이쪽이 편한 것은 아닐까요.

감상



이것에 자력으로 눈치채고 나서 구그해 보면, 같은 것을 해설하고 있는 사이트도 있습니다만,
꾸준히 2진수로 계산하는 해법을 해설하고 있는 사이트가 많다고 생각했습니다.
그리고 무엇보다 참고서 등을 하고 있어 눈에 걸린 적이 없습니다.
이런 테크닉이야말로 참고서에서 가르쳐 주었으면 합니다만. . .

증명



모처럼이므로,1{8-x}0{x} 의 형태로 표현할 수 있는 2진수 $α$ 에 대해서
$256 - α = 2^x$가 성립
(=본제로 쓴 계산 방법의 전반(접두어 길이의 부분. 후반 부분은 이것이 알면 자명.)
을 증명하는 듯이 써 봅니다. (수학도가 아니기 때문에 분위기만...)

$α$ 는, $2^x$의 위치로부터$2^7$의 위치까지가 $1$인 수이므로, 이하와 같이 나타낼 수 있다.
α = \sum_{k=x}^{7}2^k   (1)

또한, 다음은 자명하게 이루어진다. ( 0xFF 를 아래 $x$자리수와 위$8-x$자리수로 나눈 것만)
\sum_{k=0}^{7}2^k = \sum_{k=0}^{x-1}2^k + \sum_{k=x}^{7}2^k   (2)

$\sum_{k=0}^{7}2^k$ 는 당연히 $255$이므로, $(1),(2)$보다,
255 = \sum_{k=0}^{x-1}2^k + α   (3)

그런데, 이하도 성립한다. (1...에 1을 더하면 앞으로 10...이 된다)
\sum_{k=0}^{x-1}2^k + 1 = 2^x   (4)

따라서 $ (3), (4) $에서,
255 = (2^x - 1) + α 

이것을 변형하여 다음을 얻습니다.
256 - α = 2^x

솔직히 $(4)$를 자명하게 해도 좋다면 좀더 직접적으로 보여줄 수 있을 것 같은데요. . .
뭐라고는 증명이라고 하는 것으로. . .

고마워요.

좋은 웹페이지 즐겨찾기