본문 바로가기

와사비크래커 IT Tip/네트워크

[네트워크] ARP(Address Resolution Protocol)

728x90
반응형

ARP(Address Resolution Protocol)란?

  • 같은 네트워크 대역(정확히는 LAN 구간)에서 통신을 하기 위해 필요한 MAC 주소를 IP주소를 이용해서 알아오는 프로토콜
  • 짧게는 논리적인 주소(IP)를 이용해 물리적인 주소(MAC)를 알아오는 프로토콜

 

ARP 프로토콜 Header 구조

 

 

  • Hardware type(HTYPE) : 네트워크 유형을 뜻하지만 일반적으로 사용되는 Ethernet 환경은 0x0001 으로 세팅
  • Protocol type(PTYPE) : 프로토콜을 정의합니다. IPv4의 경우 0x0800 으로 셋팅되며, 아직 IPv6는 거의 사용되지 않기 때문에 보통 0x0800 으로 세팅
  • Hardware Address Length : 하드웨어 주소(MAC Address) 길이를 정의하며 Ethernet 환경의 경우 6byte로 세팅
  • Protocol Address Length : 프로토콜의 길이를 정의하며 IPv4는 4 byte로 세팅. Protocol type 에서 설명한것과 같이 아직 IPv6는 거의 사용되지 않기 때문에 보통 IPv4인 4byte 세팅이 고정적임
  • Opcode : ARP 패킷이 요청(Request) 또는 응답(Reply)에 따라 값이 바뀌게 되고 요청의 경우 1, 응답의 경우 2가 세팅
  • Source Hardware Address : 출발지 MAC 주소
  • Source Protocol Address : 출발지 IP 주소
  • Destination Hardware Address : 목적지 MAC 주소
  • Destination Protocol Address : 목적지 IP 주소

ARP 명령어 (Windows)

 

ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]

  -a            현재 프로토콜 데이터를 질문하여 현재 ARP 항목을 표시합니다.
                inet_addr을 지정할 경우 지정한 컴퓨터의 IP 주소와
                물리적 주소만 표시합니다. 둘 이상의 네트워크 인터페이스가
                ARP를 사용하는 경우 각 ARP 테이블에 대한 항목을
                표시합니다.
  -g            -a와 동일합니다.
  -v            세부 정보 표시 모드에서 현재 ARP 항목을 표시합니다.  올바르지 않은
                모든 항목과 루프 백 인터페이스의 항목을 표시합니다.
  inet_addr     인터넷 주소를 지정합니다.
  -N if_addr    if_addr로 지정한 네트워크 인터페이스에 대한 ARP 항목을
                표시합니다.
  -d            inet_addr로 지정한 호스트를 삭제합니다. inet_addr에서
                와일드카드 *를 사용하면 모든 호스트를 삭제할 수 있습니다.
  -s            호스트를 추가하고 인터넷 주소 inet_addr을 물리적 주소
                eth_addr과 연결합니다.  물리적 주소는 하이픈으로
                분리된 6바이트 16진수의 형태로 제공됩니다. 항목은
                영구적으로 지속됩니다.
  eth_addr      물리적 주소를 지정합니다.
  if_addr       있을 경우 주소 변환 표를 수정해야 할 인터페이스의
                인터넷 주소를 지정합니다.
                없을 경우 적용 가능한 첫 번째 인터페이스를 사용합니다.
예:
  > arp -s 157.55.85.212   00-aa-00-62-c6-09  .... 정적 항목을 추가합니다.
  > arp -a                                    .... ARP 표를 표시합니다.

 

ARP 명령어 (Linux)

 

Usage:
  arp [-vn]  [<HW>] [-i <if>] [-a] [<hostname>]             <-Display ARP cache
  arp [-v]          [-i <if>] -d  <hostname> [pub][nopub]    <-Delete ARP entry
  arp [-vnD] [<HW>] [-i <if>] -f  [<filename>]              <-Add entry from file
  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [temp][nopub] <-Add entry
  arp [-v]   [<HW>] [-i <if>] -s  <hostname> <hwaddr> [netmask <nm>] pub  <-''-
  arp [-v]   [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub      <-''-

        -a                       display (all) hosts in alternative (BSD) style
        -e                       display (all) hosts in default (Linux) style
        -s, --set                set a new ARP entry
        -d, --delete             delete a specified entry
        -v, --verbose            be verbose
        -n, --numeric            don't resolve names
        -i, --device             specify network interface (e.g. eth0)
        -D, --use-device         read <hwaddr> from given device
        -A, -p, --protocol       specify protocol family
        -f, --file               read new entries from file or from /etc/ethers

  <HW>=Use '-H <hw>' to specify hardware address type. Default: ether
  List of possible hardware types (which support ARP):
    strip (Metricom Starmode IP) ash (Ash) ether (Ethernet) 
    tr (16/4 Mbps Token Ring) tr (16/4 Mbps Token Ring (New)) ax25 (AMPR AX.25) 
    netrom (AMPR NET/ROM) rose (AMPR ROSE) arcnet (ARCnet) 
    dlci (Frame Relay DLCI) fddi (Fiber Distributed Data Interface) hippi (HIPPI) 
    irda (IrLAP) x25 (generic X.25) infiniband (InfiniBand) 

반응형