[고석철]님이 남기신 글:
>죄송합니다. 저도 착각을 한 것 같은데 처음 설명해 주신 것이 맞는 것 같습니다.
>그런데 이해가 안되는 부분은,
>INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')에서 왜 INET_ATON('255.248.0.0')을
>빼는 것인지 그것이 무슨 의미인지 한번만 더 설명을 부탁드려요.
>
>========================================================
>
네트워크주소, 브로드케이스트주소, 넷매스크, 호스트개수 등은
서로 상관관계가 있습니다.
위에서
네트워크 주소 + (255.255.255.255 - 넷매스크)
이 계산식을 브로드케스트 주소를 계산하는 방법입니다.
즉 브로드케이스트 주소는 (네트워크 주소 + 호스트개수) 인데
여기에서 256 이 아닌 255 임에 주의해야 합니다.
256 으로 계산하면 그 다음의 네트워크 주소가 됩니다.
(미리 1 을 빼고 계산한 셈이죠)
바꾸어 말하면
- 브로드케스트 주소 = (네트워크 주소 + 호스트개수)
- 호스트 개수 = (255.255.255.255 - 넷매스크)
이므로
- 브로드케스트 주소 = 네트워크주소 + (255.255.255.255 - 넷매스크)
이런 계산식이 금방나옵니다.
그럼한번 검증해 볼까요?
예를들어 가장 쉬운,
- 서브넷매스크 : 255.255.255.128
- 네트워크주소 : 192.168.0.0, 192.168.0.128
- 호스트수 : 128 개
이라면,
- 브로드캐스트 주소 : 192.168.0.127, 192.168.0.255
이렇게 금방 머리계산으로 나옵니다.
여기에서 반드시 서브넷매스크의 개념을 알고 넘어가야 하는데
255.255.255.128 이 의미는 네트워크 부분을 말하므로
/25 = 11111111.11111111.11111111.10000000
이와 같습니다. 왼쪽의 /25 는 CIDR 표현으로 네트워크 비트수가 25개라는
의미입니다.
나머지 0 이 바로 호스트 개수의 비트를 말합니다.
0 이 7(32 - 25) 개 이므로 2^7 = 128 이 되죠.
이것을 10 진수의 서브넷매스트의 계산식으로 표현하면
2^8 - 2^7 = 128 (C 클래스의 비트로 계산할 경우)
256 - 128 = 128 (C 클래스의 10 진수로 계산할 경우)
이렇게 됩니다.
하나도 해 볼까요?
서브넷이 255.255.255.224 이라면 각 서브넷의 네트워크 주소와
브로드캐스주소 그리고 각 서브넷마다 몇개의 호스트가 있을
까요?
답은 간단합니다.
우선 위의 서브넷을 비트계산으로 하기 어려우므로
256 에서 224 를 빼면 각 서브넷마다 호스트 개수가
나옵니다.
256 - 224 = 32 개가 각 서브넷에 들어갑니다.
따라서 네트워크 주소는 다음과 같이 32 의 배수가 될것이며,
xxx.xxx.xxx.0
xxx.xxx.xxx.32
xxx.xxx.xxx.64
xxx.xxx.xxx.96
xxx.xxx.xxx.128
xxx.xxx.xxx.160
xxx.xxx.xxx.192
xxx.xxx.xxx.224
xxx.xxx.xxx.256 <-- 이것은 아님
만약 네트워크 주소가 xxx.xxx.xxx.160 이라면
xxx.xxx.xxx.(160 + (32-1)) = 191
이 됩니다.
(32 - 1) 이라는 의미는 ((256 - 224) - 1) 이므로
결국 (255 - 224) 이 되죠.
이것은 다시 (네트워크 주소 - 넷매스크)로써
브로드케스트 주소 = 네트워크주소 + (255.255.255.255 - 넷매스크)
가 되죠.
브로드케스트 주소는 마지막 주소(ipto)를 의미합니다.
참고로 서브넷, 서브넷매스크, 넷매스크는 약간의 차이는 있지만
여기에서는 서로 같은 의미를 말합니다.
http://linuxchannel.net/board/print.php?table=alpha&no=96
에 정리된 내용이 있습니다. |