[Network] ARP(주소 결정 프로토콜)에 대하여

    ARP(주소 결정 프로토콜)이란?

    OSI 7계층에서 ARP 프로토콜이 하는 일

    주소 결정 프로토콜(Address Resolution Protocol, ARP)은 네트워크 상에서 IP 주소를 MAC 주소로 대응시키기 위해 사용됩니다. 처음 통신을 시작할 때는 상대방의 Mac Address를 모르는데 그때 상대방의 Mac Address를 알아내기 위하여 사용하는 프로토콜입니다. ARP는 요청과 응답으로 구성된 프로토콜로 라우팅 되지 않는 단일 네트워크에서만 동작하며. IP와 MAC 주소를 캡슐화하기 때문에 위의 그림과 같이 L2와 L3 사이에 있는 프로토콜이라고 생각하시면 됩니다. ARP 프로토콜과는 반대로 해당 MAC 주소에 맞는 IP값을 알아오는 프로토콜을 역순 주소 결정 프로토콜(Reverse Address Resolution Protocol, RARP)이라고 합니다.

    IP주소 (Internet Protocol Address)
    인터넷에 연결되어 있는 모든 호스트나 라우터 장비의 인터페이스에 할당된 논리적인 주소입니다.

    MAC주소 (Media Access Control Address)
    물리적 네트워크 주소라고도 하며 데이터 링크 계층(2 계층)에서 사용하는 네트워크 인터페이스 카드(NIC) 즉, 하드웨어에 할당된 고유 식별번호 주소입니다.
    ex) D1:F2:FK:CC:12:34

     

    위와 같이 CMD에서 getmac /v 명령어ipconfig /all 명령어를 활용하여 자신의 MAC주소를 확인하실 수 있습니다.

     

    ARP 프로토콜이 필요한 이유

    왜 ARP프로토콜을 활용하여 IP주소에 대응시켜야 할까요? 많은 분들이 데이터를 보내고자 하는 PC의 IP주소만 알고 있다면 데이터를 전송할 수 있다고 오해를 하시는데 아닙니다. 위에서 언급했듯 IP주소는 인터넷에 연결되어 있는 호스트나 라우터 장비의 인터페이스에 할당된 주소입니다. 즉 PC에 할당된 주소가 아니라 네트워크에 할당된 주소입니다. 그러므로 IP를 활용하여 메시지를 보내고자 하는 PC의 네트워크까지만 접근할 수 있습니다. 위의 그림처럼 우체국이 A빌딩에 가서 누구에게 편지를 전달해야 하는지 모르는 경우가 되는 것입니다. 그렇기에 ARP프로토콜을 활용하여 MAC 주소를 알아내서 정확한 위치를 찾아내야 하는 것입니다.

     

    왜 IP주소 -> MAC 주소의 절차를 거쳐서 통신을 해야 할까요? IP주소나 MAC 주소만을 활용하여 통신한다면 좀 더 실용적이지 않을까요? 하지만 IP주소와 MAC주소만을 활용하여 통신을 불가능합니다.

     

    먼저 IP주소만으로 통신을 한다고 가정해봅시다. IP주소는 가변적이기 때문에 계속해서 바뀔 수 있습니다. 사람의 이름처럼 동명이인이 될 수도 있고 개명을 할 수도 있죠. 이 IP주소만으로 통신을 하기에는 불가능합니다. 그렇기에 사람의 주민등록번호와 같은 랜카드 고유번호인 MAC 주소가 필요한 것입니다. 동명이인일지라도 주민등록번호를 통해 사람을 구분 지을 수 있는 것처럼요. 

     

    반대로 MAC 주소만으로 통신을 할 수도 없습니다. 이 경우 라우터에 통신을 할 수 있는 전 세계의 모든 PC의 MAC 주소를 다 등록해주어야 할텐데 저장공간이 버텨내지를 못하겠죠. 이러한 문제들로 인해 여러대의 PC를 묶어 IP주소를 만들고 MAC주소를 거치게 되는 ARP가 탄생하게 되었습니다.

     

     ARP 동작 과정 

    1. 송신자는 목적지 IP Address를 지정해 패킷을 송신

    2. IP 프로토콜이 ARP 프로토콜에게 ARP Request 메시지를 생성하도록 요청

    3. 메시지는 데이터링크 계층으로 전달되고 이더넷 프레임으로 Encapsulation됨

    4. 모든 호스트와 라우터는 프레임을 수신 후 자신의 ARP 프로토콜에게 전달

    5. 목적지 IP Address가 일치하는 시스템은 자신의 물리주소를 포함하고 있는 ARP Reply 메시지를 보냄

    6. 최초 송신 측은 지정한 IP Address에 대응하는 물리주소를 획득

     

    ARP 동작 예시

    근거리 네트워크에서의 통신으로 R1에서 R2로 Ping을 날린다는것으로 가정하겠습니다. 

     

     

    1. R1에서 ping 1.1.1.2 명령어를 활용하여 R1에서 R2로 ping을 보내겠다는 명령을 내립니다. 

     

    2. R1은 R2의 Mac주소를 알지 못하므로 R1은 브로드캐스트 주소로 설정한 ARP Request Packet을 Swich에 전송합니다.

     

    3. ARP Request Packet을 받은 Switch는 자신이 연결되어 있는 모든 포트에 ARP Request Packet을 브로드 캐스팅합니다.

     

    4. ARP Request Packet을 받은 R2와 R3는 자신들의 ARP Table에 R1의 Mac Address정보를 저장하고 자신의 요청 패킷인지 아닌지를 확인합니다. R3는 대상지가 아니므로 Request Frame을 폐기하고 R2는 대상지가 맞으므로 R1에게 ARP Reply Packet을 전달합니다.

     

    5. R2의 Mac Address를 알게 된 R1은 R2에게 Ping을 보냅니다.

     

    WireShark로 ARP프로토콜 직접 확인해보기

    무료 패킷 분석 프로그램 WireShark를 통해 ARP프로토콜을 직접 확인할 수 있습니다.

    www.wireshark.org/download.html

    위와 같이 필터에서 arp라고 필터를 걸어주면 arp프로토콜만 확인할 수 있습니다. 위의 패킷은 192.168.1.10의 IP를 가진 네트워크에 있는 컴퓨터가 192.168.1.254의 IP를 가진 네트워크에 있는 모든 컴퓨터의 MAC주소를 알아보기 위해 해당 LAN상에 브로드캐스트 한 패킷입니다.

     

    요청받은 LAN의 모든 장치는 ARP패킷을 받고 해당되는 IP주소를 가진 장치는 자신의 MAC주소를 담은 응답 패킷을 생성하여 요청한 장치에게 전송합니다. ARP패킷 중에서 두 번째 패킷은 192.168.1.254의 MAC주소를 요청하는 패킷에 대한 응답 패킷입니다. ARP응답 패킷에는 192.168.1.254에 해당하는 장치의 MAC주소인 c0:00:0c:30:00:00이 포함되어 있습니다.

     

    ARP Table

    CMD에서 arp -a 명령어를 통해 ARP Table값을 가지고 올 수 있습니다. ARP Table은 일종의 캐시 테이블로써 자신이 속한 서브넷 마스크 영역(브로드캐스트 영역 or 하나의 라우터를 거치기 전 로컬 영역)에 있는 호스트 혹은 라우터들의 IP 주소와 MAC 주소가 적혀 있습니다. 따라서 이 ARP Table을 보면 목적지 IP 주소에 맞는 목적지 MAC 주소를 손쉽게 알아낼 수가 있습니다. 이 테이블에는 유효기간 TTL(Time-to-Live)이 존재합니다. TTL은 해당 데이터의 유효기간을 나타내는 시간으로 보통 15~20분이 유효한 최대 시간입니다. 이 시간이 지나게 되면 ARP Table에서 그 데이터는 사라지게 됩니다.

     

    ARP Packet

    Ethernet destination addr : 이더넷 목적지 주소로 FF-FF-FF-FF-FF-FF(브로드캐스트 주소)로 설정

    Ethernet source addr : ARP 패킷을 송신하는 호스트 MAC 주소

    frame type : 프레임 타입 필트로 ARP request/reply 프레임의 경우 0x8060

    hard type : MAC 주소의 유형을 나타낸다. 이더넷의 경우 1

    prot type : 프로토콜 유형으로 ip의 경우 0x0800

    hard size : MAC 주소의 길이를 byte로

    prot size : 프로토콜 주소의 길이를 byte로

    op : Operation Field로 수행할 동작을 의미

    1 - ARP request

    2 - ARP reply

    3 - RARP request

    4 - RARP reply

     

    ARP Header

    Hardware Type (HTYPE) : 네트워크 유형을 정의하며, Ethernet 환경의 경우 0x0001으로 세팅

    Protocol Type (PTYPE) : 프로토콜을 정의하며, IP 프로토콜 버전 4(IPv4)의 경우 0x0800 세팅

    Hardware Length (HLEN) : MAC 주소의 길이를 정의하며, Ethernet 환경의 경우 6 byte 세팅

    Protocol Length (PLEN) : 프로토콜의 길이를 정의하며, IPv4의 경우 4 byte 세팅

    Operation (OPER) : 패킷의 유형이며, ARP 요청일 경우 1, ARP 응답일 경우 2 세팅

    Sender Hardware Address (SHA) : 발신자의 MAC 주소 세팅

    Sender Protocol Address (SPA) : 발신자 IP 주소 세팅

    Target Hardware Address (THA) : 목적지 MAC 주소, 그러나 ARP Request의 경우 알 수 없음

    Target Protocol Address (TPA) : 목적지 IP 주소 세팅

     

     

    댓글(0)

    Designed by JB FACTORY