메뉴 건너뛰기


Developer > Network

기타 IP주소로 IP소유 국가 알아내기

2013.12.28 14:31

푸우 조회 수:11402

 
첨부파일은 위의 출처 사이트에서 제공하는 CSV형식의 2007년 3월 5일자 자료입니다.
시간에 따라 자료가 변함으로 최신 파일은
을 통해 다운 받으시기 바랍니다.
 
CSV파일의 형식은 다음과 같습니다.
 
"0033996344","0033996351","GB","GBR","UNITED KINGDOM"
"0050331648","0083886079","US","USA","UNITED STATES"
"0094585424","0094585439","SE","SWE","SWEDEN"
차례대로
 
  • IP 주소 범위의 시작
  • IP 주소 범위의 끝
  • ISO 3166을 기반으로 한 2자리 국가 문자 코드
  • ISO 3166을 기반으로 한 3자리 국가 문자 코드
  • ISO 3166을 기반으로 한 국가 이름
  •  
    와 같습니다.
     
    여기서 IP 주소 범위에 사용된 숫자는 다음과 같이 계산된 값입니다.
    IP가 A.B.C.D 와 같이 표시 되었다면
     
    IP 주소 = A x (256*256*256) + B x (256*256) + C x 256 + D
    = A x 16777216 + B x 65536 + C x 256 + D
     
    으로 계산된 값입니다.
     
    어떤 IP주소를 알았다면 그 IP를 위의 계산식에 대입하여 CSV파일의 IP주소 범위에서 포함되는 나라를 찾으면 됩니다.
     
    PHP4에서는 이러한 방식으로 IP를 서로 변환하는
     
    $ip_number = sprintf("%u", ip2long($dotted_ip_address));
    $dotted_ip_address = long2ip($ip_number);
     
    함수를 제공합니다.
     
    DB에
     
    FIELDDATA TYPEFIELD DEscRIPTION
    IP_FROMNUMERICAL (DOUBLE)Beginning of IP address range.
    IP_TONUMERICAL (DOUBLE)Ending of IP address range.
    COUNTRY_CODE2CHAR(2)Two-character country code based on ISO 3166.
    COUNTRY_CODE3CHAR(3)Three-character country code based on ISO 3166.
    COUNTRY_NAMEVARCHAR(50)Country name based on ISO 3166

    이런 형태의 Table을 만들고
     
    SELECT COUNTRY_NAME FROM <TableName> WHERE IP_FROM <= IP Number and IP_TO >= IP Number
     
    와 같은 형태로 검색할 수 있습니다.