한국어 English Chinese Russian

자주 묻는 질문들 / 기술지원


No.92 ARP cache table 문제와 해결책 16-09-2013
카테고리 : 사용 전 알아야 할 것들/basic

ARP란 무엇인가


Windows, UNIX, ezTCP와 같이 인터넷 접속 기능이 제공되는 장비가 인터넷 데이터를 주고 받기 위해서는 인터넷 주소가 필요합니다. 운영체제의 TCP/IP 통신 모듈은 인터넷 주소가 무엇을 의미하는지 잘 알고있지만, 실제 데이터를 전송하는 랜컨트롤러는 인터넷 주소가 뭔지 모릅니다. 그래서 인터넷 주소만으로는 랜 상의 다른 장비와 데이터를 주고 받을 수 없고, 대신 랜컨트롤러간에 인식 할 수 있는 주소 체계를 이용해서 상대방을 인식할 수 있습니다. 이 때 사용하는 주소가 바로 MAC 주소입니다. MAC 주소는 인터넷 주소와 달리 사용자가 설정할 수 있는 것이 아니고, 장비 출하시 미리 고정되어있습니다. ezTCP의 경우에도 제품 하단에 고유의 12자리(48bit) MAC주소가 적혀있습니다. 인터넷 데이터를 a.b.c.d라는 인터넷 주소를 갖는 장비로 전송하기 위해서는 a.b.c.d라는 인터넷 주소를 갖는 장비의 MAC주소가 무엇인지를 알아야만 실제 데이터를 전송할 수 있습니다. 이때 사용하는 프로토콜이 ARP입니다. ARP는 Address Resolution Protocol의 약자로써 MAC주소와 인터넷 주소사이의 변환 정보를 주고 받는 프로토콜입니다.



무엇이 문제인가


상대방 장비의 MAC주소와 인터넷 주소를 알기 위해서는, 먼저 랜에 물려있는 모든 장비가 수신되는 형태로 ARP 문의 데이터를 전송합니다. 그런 다음 해당 주소를 갖는 장비로부터 응답이 오면 그 정보를 이용해서 다른 장비로 인터넷 데이터를 전송하게됩니다. 그런데, 매번 데이터를 보낼 때마다 ARP 문의 데이터를 전송하면 네트웍에 많은 부하가 발생하기 때문에 대부분의 운영체제는 ARP cache table이라는 것을 이용해서 한번 수집된 ARP데이터를 기억하고있다가 수십초~수분동안 재 사용하는 방법을 사용합니다. 보통의 경우 PC의 인터넷 주소를 변경하는 일이 흔하지 않기 때문에 ARP cache table때문에 문제가 생기는 일이 거의 없지만, ezTCP의 경우에는 인터넷 주소를 쉽게 변경할 수 있기 때문에 ezTCP의 인터넷 주소와 PC의 ARP cache table내용이 달라서 수십초~수분동안 통신이 잘 안되는 경우가 생길 수 있습니다. 그리고, ezTCP에는 ARP 기능을 이용해서 ezTCP의 인터넷 주소를 변경할 수 있는 기능을 제공하기 때문에 혼란이 생기는 경우도 가끔씩 발견되고 있습니다. ARP cache table관련 문제는 초기에 인터넷 주소 변경 과정에서 어쩔 수 없이 발생하는 문제입니다. 이 문제는 쉽게 해결될 수 있으며 제품 동작 중에 통신 장애를 일으키지는 않습니다.



해결책


ezTCP 전원 공급 후 PC와 ezTCP가 인터넷 데이터를 주고 받은 다음에 ezTCP의 인터넷 주소를 변경한 경우에는 반드시 ezTCP 전원을 끊은 상태에서 arp명령으로 ARP cache table내용을 삭제해야합니다. Windows 운영체제에서는 명령 프롬프트에서 "arp -a"를 입력하면 현재 ARP cache table내용을 보실 수 있고 "arp -d a.b.c.d"를 입력하면 해당 내용을 삭제할 수 있습니다.



ARP를 이용한 ezTCP 인터넷 주소 변경


ezTCP는 ARP기능을 이용해서 인터넷 주소를 변경할 수 있는 기능을 제공하고있습니다.
ezTCP의 MAC주소가 00:30:f9:00:00:01인 경우에 인터넷 주소를 192.168.0.1로 변경하는 예를 들면 다음과 같습니다.

----- 예제 시작 -----------------------------------------------
C:>arp -s 192.168.0.1 00-30-f9-00-00-01
C:>ping 192.168.0.1

Pinging 192.168.0.1 with 32 bytes of data:

Reply from 192.168.0.1: bytes=32 time=3ms TTL=255
Reply from 192.168.0.1: bytes=32 time=1ms TTL=255
Reply from 192.168.0.1: bytes=32 time=1ms TTL=255
Reply from 192.168.0.1: bytes=32 time=1ms TTL=255
----- 예제 끝 -----------------------------------------------



[주의 1]


ezTCP는 전원 공급 후 최초 수신된 패킷에 한해서 인터넷 주소 변경을 허용하기 때문에 ezTCP 리셋 시킨 후에 이 방법을 이용하는 것이 좋습니다.

[주의 2]


ezTCP는 ARP로 변경된 인터넷 주소를 EEPROM에 저장하지 않기 때문에 리셋 또는 전원 차단 이후에는 기존에 EEPROM에 저장되어있던 인터넷 주소를 사용합니다. 인터넷 주소를 EEPROM에 저장하기 위해서는 반드시 설정 프로그램이나 telnet등을 통해 IP주소를 변경해야만합니다.



[주의 3]

기존 ARP cache table에 이미 ezTCP의 주소 항목이 기록되어 있는 경우에는 의도한 대로 변경이 안될 수 있기 때문에, 반드시 "arp -a" 명령어로 table 내용을 확인한 후 변경해야합니다.



[주의 4]

일반적인 ARP 패킷 교환을 통해 등록된 ARP cache내용은 수십~수분 후에 삭제되지만 위 예제와 같이 "arp -s"로 등록한 내용은 삭제되지 않고 계속 남아있게됩니다. "arp -a" 명령로 cache table 내용을 출력해보면, "arp -s"로 등록한 항목은 type이 static으로 표시되고 그 이외의 것은 dynamic으로 표시되는 것을 확인 할 수 있습니다.



[주의 5]

telnet으로 ezTCP의 인터넷 주소를 변경했을때는 반드시 ezTCP의 전원을 끊은 상태에서 "arp -d" 명령어로 현재 ARP cache table에 저장된 항목을 삭제해야합니다. 삭제하지 않으면 ezTCP의 ARP를 통한 설정 기능때문에 기존 인터넷 주소로 변경됩니다. ezTCP의 "env if" 명령으로 ARP항목을 NO로 변경하거나, ezConfig로 ARP 체크 항목을 없애면 그러한 문제가 발생하지 않습니다.





See also

  FAQ No.43 ezTCP를 다량으로 구입했는데 ping 테스트가 안되는게 많습니다.
  [BLOG] ezTCP 텔넷으로 접속하기

Related Products


[ Ethernet-Module ] CSE-M53, CSE-M32, EZL-50L, EZL-50M, EZL-410
[ Ethernet-Module with RJ45 ] CSE-M73, EZL-70,
[ Ethernet-Board ] EZL-60L, EZL-60M, CSE-B63
[ Ethernet-External ] CSE-H55, CSE-H53, CSE-H25, CSE-H20, CSE-H21, EZL-200L, EZL-220, EZL-200F, EZL-400S
[ Wireless-External ] EZL-300S, CSW-H80
[ Wireless-Module ] CSW-M85, CSW-M83
[ I/O ] CIE-H12, EZI-10, CIE-H10, CIE-M10