WIZnet Developer Forum

웹주소 접근에 대한 문의

[W5500]
안녕하세요. 웹서버에 아이피주소가 아닌 도메인 네임으로(Ex: http://www.google.com)으로 소스에서 입력하여 접속을 하고 싶습니다.


위의 예제에 있는 소스로 하면 되는건지요??

안녕하세요

네 맞습니다.
Domain_name 이란 변수에 해당 서버 주소 입력해주시면 됩니다.
위의 예제에서는 구글 주소가 입력되어있습니다.

정찬미 드림

안녕하세요

찾으신 링크의 예제 프로그램을 사용하시면 됩니다.

위에서 말했드시

////////////////
// DNS client //
////////////////
uint8_t DNS_2nd[4]    = {208, 67, 222, 222};      	// Secondary DNS server IP
uint8_t Domain_name[] = "www.google.com";    		// for Example domain name
uint8_t Domain_IP[4]  = {0, };               		// Translated IP address by DNS Server

에서 구글주소를 원하시는 웹서버 주소로 변경하시면 됩니다.

또한 네트워크를 세팅해야 합니다.

혹시 W5500-EVB를 사용하고 계시다면 지원되는 MAC 주소가 없습니다.

따라서 코드상의 MAC주소를 사용할 경우 통신이 제대로 되지 않을 수 있으니 고유 MAC주소를 사용해주세요

또한 IP와 GW는 사용하시는 네트워크에 따라 변경하시면 됩니다.

/*
 * It's the network information for test
 * Your board IP address SHOULD BE the public IP address to be accessible on Internet.
 */
wiz_NetInfo gWIZNETINFO = { .mac = {0x00, 0x08, 0xdc, 0xab, 0xcd, 0xef},
                            .ip = {192, 168, 1, 2},
                            .sn = {255, 255, 255, 0},
                            .gw = {192, 168, 1, 1},
                            .dns = {8, 8, 8, 8},		// Google public DNS (8.8.8.8 , 8.8.4.4), OpenDNS (208.67.222.222 , 208.67.220.220)
                            .dhcp = NETINFO_STATIC };

감사합니다.

uint8_t DNS_2nd[4] = {208, 67, 222, 222}; // Secondary DNS server IP
는 정확히 무엇을 의미 하는건가요???

안녕하세요

DNS서버의 역할은 Domain 주소에 해당하는 IP주소를 알려주는 것입니다.
DNS Server IP를 지정해줌으로써 어떤 DNS Server를 사용할지를 결정합니다.

wiz_NetInfo gWIZNETINFO = { .mac = {0x00, 0x08, 0xdc, 0xab, 0xcd, 0xef},
                            .ip = {192, 168, 1, 2},
                            .sn = {255, 255, 255, 0},
                            .gw = {192, 168, 1, 1},
                            .dns = {8, 8, 8, 8},		// Google public DNS (8.8.8.8 , 8.8.4.4), OpenDNS (208.67.222.222 , 208.67.220.220)
                        .dhcp = NETINFO_STATIC };

uint8_t DNS_2nd[4] = {208, 67, 222, 222}; // Secondary DNS server IP

	/* DNS client Initialization */
    DNS_init(SOCK_DNS, gDATABUF);

    /* DNS processing */
    if ((ret = DNS_run(gWIZNETINFO.dns, Domain_name, Domain_IP)) > 0) // try to 1st DNS
    {
#ifdef _MAIN_DEBUG_
       printf("> 1st DNS Respond\r\n");
#endif
    }
    else if ((ret != -1) && ((ret = DNS_run(DNS_2nd, Domain_name, Domain_IP))>0))     // retry to 2nd DNS
    {
#ifdef _MAIN_DEBUG_
       printf("> 2nd DNS Respond\r\n");
#endif
    }

처음 DNS과정은 gWIZNETINFO에 설정된 IP로 이루어지는데,
첫번째 DNS 과정이 실패하면,
DNS_2nd에 설정된 IP로 DNS 과정이 이루어지도록 코드가 작성되어있습니다.

추가적으로 말씀드리면

8.8.8.8 과 208.67.222.222 는 세계 공용으로 누구나에게 OPEN되어 사용되어지는 DNS서버입니다.

따라서 이동통신사의 DNS서버나 특정한 DNS서버의 주소를 모를때는 위의 주소를 사용하시면 됩니다.

그리고 DNS서버를 설정할때 하나여도 무방하지만 주 DNS서버를 백업하도록 추가적인 DNS서버를 설정해둡니다.

코드상에서 8.8.8.8이 주 DNS서버고 208.67.222.222가 추가적인 DNS서버가 됩니다.

그럼 저 구글 DNS서버가 구글의 아이피만 알려주는것이 아니라
네이버나, 네이트, 다음의 아이피주소도 알려주는 오픈 DNS서버라는 말씀이신거죠?
그리고 2nd DNS서버의 역할을 1nd DNS서버가 혹시 죽었을때를 대비하여
두번째로 이용할 DNS서버라는 말씀이신거죠?
그리고 현재 w5500EVB를 안쓰고 위즈넷 쇼핑몰에 있는 위즈두이노M0를 아두이노가 아닌 jlink를 연결해서 퓨즈비트를 바꾼 후 펌웨어로 짜고있습니다.

네 구글에서 서비스하는 퍼블릭 DNS 서버입니다.

간혹 느릴때가 있는데 그건 전세계에서 가장 많이 사용되는 DNS서버라 그런거같습니다.

또 궁금하신 사항있으시면 FORUM을 많이 활용해주세요

감사합니다.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.