웹 브라우저에서 IPv6, IPv4 접속 주소 표시 |
|
최근 여러 웹사이트가 IPv4 뿐만 아니라 IPv6를 이용한 접속을 지원함에 따라 접속자의 IP 주소를 표시하는 경우가 많습니다. |
|
특히 웹 브라우저만으로는 IPv6로 해당 웹페이지에 접속되었는지 IPv4로 접속되었는지 알 수가 없기 때문에, IPv6로 접속한 경우 접속자의 IPv6 주소를 표시하여 IPv6 접속여부를 알려주고 있습니다. |
|
본 문서에서는 PHP와 ASP를 이용하여 IPv6와 IPv4 사용자에게 접속 IP 주소를 알려주고, IPv6와 IPv4 접속여부에 따른 차별화된 서비스가 가능한 간단한 웹 프로그래밍 소스를 소개하겠습니다. |
|
** 본 문서에서는 해당 OS에서 이미 IPv6가 활성화되었다고 가정합니다. ** |
|
1. IP 주소 표시 시나리오 |
|
사용자가 IPv6로 접속한 경우에는 [Your IPv6 Address : <접속자의 IPv6 주소>] 형태의 메시지를 표시 |
|
예)Your IPv6 Address : 2001:2b8:80:11:cd0f:bde1:34d9:d240 |
|
사용자가 IPv4로 접속한 경우에는 [Your IPv4 Address : <접속자의 IPv4 주소>] 형태의 메시지를 표시 |
|
예)Your IPv4 Address : 202.30.83.64 |
|
2. IPv6-IPv4 접속판별 시나리오 |
|
일반적으로 IPv6 사용자와 IPv4 사용자를 구분하는 방법은 아래와 같습니다.[그림1] |
|
우선 각종 웹 프로그래밍 언어에서 제공하는 함수를 이용하여 접속자의 IP 주소를 가져옵니다. |
|
접속자의 IP 주소를 분석하여 IPv6 특성에 부합할 경우에는 IPv6 사용자로 판단하고, IPv4 특성에 부합할 경우에는 IPv4 사용자로 판단합니다. IP 종류 판단에 가장 널리 이용되는 방법은 IP 주소의 문자열을 검사하여 ':' (콜론)이 들어가 있는지 여부에 따라 IPv6 접속자인지 IPv4 접속자인지 구분하는 방법입니다. |
|
IPv6 주소는 주소에 ':' (콜론)이 들어가 있고, IPv4는 그렇지 않습니다. |
|
|
[그림1] |
|
3. 샘플 사이트 |
|
IPv6와 IPv4 사용자 별로 차별화된 초기화면이나 기능을 제공하는 사이트 중 일본의 KAME 사이트와 한국의 IPv6 포탈(Vsix.Net)이 대표적입니다. |
|
먼저 KAME 사이트(http://www.kame.net)는 IPv6로 접속하면 화면 상단의 거북이가 움직이고, IPv4로 접속하면 움직이지 않습니다. |
|
이는 IPv6로 접속했을 때에는 화면상단의 그림을 움직이는 거북이로 대체하기 때문입니다. |
|
|
[그림2] Dancing KAME |
이와 유사하게 한국의 IPv6 포탈(Vsix.Net)역시 IP 종류에 따른 조건문을 두어 IPv6 접속자일 때에는 IPv4 사용자와는 다른 메시지를 화면에 뿌려줍니다. |
|
|
[그림3] IPv6로 접속한 경우 |
|
|
[그림4] IPv4로 접속한 경우 |
이외에도 아래 웹사이트들이 있습니다. |
|
KIESv6 사이트 ::http://www.kiesv6.or.kr |
|
IPv6 DDNS 사이트 ::http://www.6dns.org |
|
HS247 사이트 ::http://www.hs247.com |
|
4. ASP를 이용한 IPv6 접속 또는 IPv4 접속 판단 모듈 |
|
ASP는 Windows 계열의 IIS(Internet Information Server)에서 지원하는 웹 프로그래밍 언어입니다. |
|
Windows 2003 Server 계열의 IIS 6.0은 IPv6를 지원하며 ASP역시 IPv6를 지원하고 있습니다. |
|
아래 소스를 분석해 보면 |
|
접속자의 IP 주소 도출:: IP_Address = Request.ServerVariables("REMOTE_ADDR") |
|
IP 주소에서 :(콜론)의 개수 확인:: Result = instr(IP_Address,":") |
|
콜론의 개수가 1개 이상일 경우(즉 IPv6 주소일 경우):: If Result > 0 then |
|
IPv6 주소를 표시:: response.write "Your IPv6 Address : " & IP_Address |
|
그렇지 않은 경우 IPv4 주소로 판단, IPv4 관련 메시지를 표시합니다. |
|
<html> <head> <title>IP Address Check</title> </head> <body> <%@ Language=VBScript %> <% IP_Address = Request.ServerVariables("REMOTE_ADDR") Result = instr(IP_Address,":") If Result > 0 then Else End If %> </body> </html> |
|
|
위 소스를 이용한 샘플사이는http://album.6dns.org/ipcheck.asp입니다.[그림5]. [그림6] |
|
|
[그림5] |
|
|
[그림6] |
|
5. PHP를 이용한 IPv6 접속 또는 IPv4 접속 판단 모듈 |
|
PHP는 Linux, Solaris, Windows 계열에서 널리 이용되고 있는 웹 프로그래밍 언어입니다. |
|
이미 설명한 ASP와 유사하게 내장 함수를 이용하여 접속자의 IP 주소를 가져오고 그 IP 주소를 분석하여 IPv6 접속자인지 IPv4 접속자인지 판단 합니다. |
|
PHP 모듈은 내용이 많은 관계로 별도로 링크를 합니다.[IPv6/IPv4 확인 모듈 다운로드] |
|
위 모듈에 대해 간단하게 설명을 하면 아래와 같습니다. |
|
function getMyIP함수는 접속자의 IP 주소를 가져오는 함수입니다. |
|
function validate_ipv4함수는 접속자의 IP 주소가 IPv4 주소인지 확인하는 함수입니다. |
|
function validate_ip함수는 접속자의 IP 주소가 IPv6 주소인지 확인하는 함수입니다. |
|
if (validate_ip($ip))접속자의 IP가 IPv6 형태이면 IPv6 경우에 해당되는 메시지를 표시합니다. |
|
위 소스를 이용한 샘플사이는http://www.6dns.org/test/ipcheck.php입니다.[그림7]. [그림8] |
|
|
[그림7] |
|
|
[그림8] |
|
이상 웹 프로그래밍 언어를 이용하여 IPv6, IPv4 이용자별로 차별화된 메시지를 표시하는 방법을 알아보았습니다. 위 소스코드를 이용하여 조건문에 보다 다양하고 차별화된 기능을 부여하면, IPv6와 IPv4 사용자에 대한 차별화된 서비스를 구현하실 수 있습니다. |