Network/Network Composition

ARP란?

seongduck 2022. 12. 23. 09:52

여기서 먼저 간단히 알아야 할 상식


2계층의 MAC 주소와 3계층의 IP 주소는 서로 아무 관계가 없다.

MAC 주소는 하드웨어 생산업체가 임의적으로 할당 및 NIC에 종속된 주소이며,

IP주소는 우리가 직접 할당하거나 DHCP를 이용해 자동으로 할당 받는다.

 

실제로 통신은 IP 주소 기반으로 일어나고 MAC 주소는 상대방의 주소를 자동으로 알아내 통신하게 된다.

이때 상대방의 MAC 주소를 알아내기 위해 사용되는 프로토콜이 ARP(Address Resolution Protocol)이다.

 

 

ARP란?


  • 데이터 통신을 위해 주소 2개가 사용된다.
    • MAC 주소 (2계층 물리적 주소) + IP 주소 (3계층 논리적 주소)
    • 이 둘 주소는 서로 연관성이 없으므로 연계해주기 위한 메커니즘이 필요하다. => ARP
  • ARP 작업은 하드웨어 가속으로 처리되지 않고 CPU에서 직접 수행하므로 큰 부하 가능성이 존재

 

 

ARP 동작


  • ARP 패킷은 여러 가지 필드 중 ARP 데이터에 사용되는 중요한 4가지 필드
    • 1. 송신자 하드웨어 MAC 주소
    • 2. 송신자 IP 프로토콜 주소
    • 3. 대상자 MAC 주소
    • 4. 대상자 IP 프로토콜 주소
하드웨어 타입(2계층) 프로토콜 타입(3계층)
하드웨어 주소 길이(2계층) 프로토콜 주소 길이(3계층) 오퍼레이션 코드
송신자 하드웨어 주소(2계층) - MAC 주소
송신자 프로토콜 주소(3계층) - IP 주소
대상자 하드웨어 주소(2계층)
대상자 프로토콜 주소(3계층) - IP 주소

이런식으로 구성되어 있다.

 

ARP가 이 4개의 필드를 어떻게 동작하는지 알아보자.

 

1. 목적지로 보내기 위한 MAC 주소를 모를 경우 (서버 A => 서버 B)


MAC 주소를 모를 경우

  • 서버 A에서 서버 B로 ping을 보내려고 할때 목적지 MAC을 몰라서 정상적으로 패킷을 만들 수 없다.

 

브로드캐스트하여 MAC주소 찾기

  • 서버 A는 서버 B의 MAC 주소(1.1.1.2 IP의 MAC 주소)를 알아내기 위해 ARP 요청을 네트워크에 브로드캐스트
    • MAC 주소는 출발지를 자신의 MAC으로, 도착지는 브로드캐스트(FF-...-FF)로 채운다.
    • ARP 프로토콜 필드의 전송자 MAC과 IP 주소에는 자신의 주소로 
    • 대상자 IP 주소는 10.1.1.2를
    • 대상자 MAC 주소는 00-..-00으로 채워 네트워크에 뿌린다.
    • 즉, 이 ARP 패킷은 같은 네트워크 안에 있는 모든 단말에 보내진다.
  • 모든 단말은 ARP 프로토콜 내용을 확인하고 ARP프로토콜 필드의 대상자 IP 주소가 자신이 아니면 패킷을 버린다.

 

브로드캐스트란?

 

유니캐스트, 멀티캐스트, 브로드캐스트, 애니캐스

네트워크에서 출발지에서 목적지로 데이터를 전송할 때 사용하는 통신 방식에는 유니캐스트, 멀티캐스트, 브로드캐스트, 애니캐스트가 존재한다. 유니캐스트(Unicast)란? 1 : 1통신으로 출발지와

seongduck.tistory.com

 

참고!! (출발지 MAC, 목적지 MAC) VS (송신자 MAC, 대상자 MAC) 주소의 차이점

  • 2계층 헤더에서 사용하는 것은 출발지 MAC, 목적지 MAC 필드
  • ARP 프로토콜에서 사용하는 것은 출발지 MAC, 목적지 MAC, 송신자 MAC, IP, 대상자 MAC, IP 필드 존재
  • 즉, ARP에서는 2, 3계층에서 사용하는 단어들과 구분해 표현한다.
  • 즉, 첫 번째 그림에서는 일반 IP 패킷 필드, 두 번째 그림에서는 ARP 프로토콜 패킷

 

 

2. ARP 요청에 있는 목적지 IP주소가 자신일 경우, 출발지로 ARP 응답을 전송한다. (서버 B => 서버 A)


  • 서버 B에서는 ARP 요청의 대상자 IP주소가 자신의 IP이므로 ARP 요청을 처리하고 그에 대한 응답을 보낸다.
    • 이때는 송신자와 대상자의 위치가 바뀐다. (응답하는 입장이 되었으므로)

ARP 프로토콜

  • ARP 요청을 처음 보냈던 서버 A와 달리, 서버 B에서는 ARP 요청을 수신하면서 이미 ARP 요청을 보낸 서버 A의 IP주소와 MAC 주소를 알고 있어 모든 ARP 필드를 채워 응답할 수 있다.
  • ARP 요청에서 받은 서버 A의 정보를 이용해 대상자 MAC, IP주소를 채우고 자신의 MAC, IP주소를 송신자 MAC, IP주소로 채워 응답한다.
  • 처음 보냈을 땐 (MAC 주소를 몰라서) 브로드캐스트 였지만 응답할 때는 (MAC 주소를 이제 알고 있으므로) 유니캐스트이다.
  • 서버 A는 서버 B로부터 ARP 응답을 받아 ARP 캐시 테이블을 갱신한다.
    • 정해진 시간 동안 서버 B와의 통신이 없을 때 까지 유지
    • 이 시간안에 통신이 다시 이뤄지면 카운트 했던 시간은 다시 초기화

 

 

3. ARP 캐시 테이블에 IP 주소에 대한 MAC 주솟값을 패킷을 생성해 전송한다.


이제 MAC 주소를 알고 있으므로 바로 통신 가능

  • ARP 캐시 테이블이 갱신되어 상대방의 MAC 주소를 알고 있으므로 도착지 MAC 주소 필드를 완성해 ping 패킷 전송 가능