일단 아래 두개의 글을 먼저 읽어 보셔요.
http://linuxchannel.net/board/read.php?table=alpha&no=96
http://linuxchannel.net/board/read.php?table=alpha&no=97
[김성준]님이 남기신 글:
>173번 질문에 대한 산이님의 답변 부분에서요, 아래 두개의
마이스퀠 식중에서 255.248.0.0 이 어떻게 산출되었는지
도저히 이해가 가지 않습니다?
>
>그리고, 2개의 식이 동일한데 결과 값은 61.255.255.255 과 1040187391
으로 다르게 답변하셨습니다.
>
>저는 127.0.0.1을 1040187391 형식으로 변환코자 검색해 보았습니다.
ntoa()형식인가요?
정말 난해하군요.
>
>SELECT INET_NTOA
>(
> INET_ATON('61.248.0.0') +
> (
> INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
> )
>); // 결과는 61.255.255.255 입니다.
>
>SELECT
>(
> INET_ATON('61.248.0.0') +
> (
> INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
> )
>); // 결과는 1040187391
>
>-------------------------------------------------------------------
>
>글쓴이: 고석철 [홈페이지] 글쓴날: 2003년 11월 12일 00:56:30
수(새벽) 조회: 112
>죄송합니다. 저도 착각을 한 것 같은데 처음 설명해 주신 것이
맞는 것 같습니다.
>그런데 이해가 안되는 부분은,
>INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')에서
> 왜 INET_ATON('255.248.0.0')을
>
>빼는 것인지 그것이 무슨 의미인지 한번만 더 설명을
부탁드려요.
>
>========================================================
>
>의외로 간단한데 어렵게 설명했네요.
>
>'시작주소' , '마지막주소' , '국가코드'
>'0033996344' , '0033996351' , 192
>'2.6.190.56' , '2.6.190.63' , 192
>
>이것이 맞군요.
>
>약간의 수작이 필요하겠네요.
>
>'61.248.0.0', '255.248.0.0', 100
>
>이것은 네트워크주소하고
서브넷주소입니다.
>따라서
>
>시작주소는 당연이 61.248.0.0 이고
>마지막 주소는 61.255.255.255 입니다.
>
>좀 이해가 되나요?
>
>마지막 주소를 수식으로 표현하면 좀 복잡한데
>간단하게 머리로 계산할 수 있습니다.
>(AND 연산을 자주 접하면 금방 위의 주소가 나옵니다..)
>
>
>수식으로 표현하면(mysql)
>
>SELECT INET_NTOA
>(
> INET_ATON('61.248.0.0') +
> (
> INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
> )
>); // 결과는 61.255.255.255 입니다.
>
>SELECT
>(
> INET_ATON('61.248.0.0') +
> (
> INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
> )
>); // 결과는 1040187391
>
>10 자리 zerofill 로 맞추려면
>
>SELECT LPAD
>(
> INET_ATON('61.248.0.0') +
> (
> INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
> )
>, 10, '0'); // 결과는 104018739
>
>따라서 이미 address 주소 형태로 DB 에 저장되어 있다면
>(먼저 address 형태로 저장하는 것이 좋겠군요.)
========================================
|