Doctor Pepper

[물리 계층과 데이터 링크 계층] ARP(Address Resolution Protocol) 본문

네트워크/물리계층과 데이터 링크계층

[물리 계층과 데이터 링크 계층] ARP(Address Resolution Protocol)

Doctor Pepper 2024. 11. 4. 00:02
728x90

 

 

1. ARP(Address Resolution Protocol) 개요

 네트워크 상에서 동일한 세그먼트에 물리적으로 연결된 장비들이 IP 통신을 수행하려면, 해당 장비들은 프로토콜에 따라 정의된 물리 계층의 주소 지정 방식과 프로토콜을 사용한다. 예를 들어, 이더넷에서는 MAC 주소를 사용하며, 프레임 릴레이(Frame-Relay)에서는 DLCI(Data Link Connection Identifier)를 사용한다.

 

- ARP : 주소 결정 프로토콜

 ARP(Address Resolution Protocol)IPv4 네트워크에서 IP 주소와 MAC 주소를 매핑하기 위해 사용되는 표준 프로토콜이다. IP 주소는 네트워크 상의 논리적 주소이며, MAC 주소는 네트워크 인터페이스에 할당된 고유한 물리적 주소이다. 두 컴퓨터가 패킷을 주고받기 위해서는 먼저 IP 주소를 통해 목적지를 확인한 후, 실제 통신을 위해 MAC 주소를 알아야 한다.

 

 ARP는 OSI 모델의 데이터 링크 계층(2계층)과 네트워크 계층(3계층) 사이에서 동작하며, IP 주소와 MAC 주소를 연결하는 중요한 역할을 수행한다.

 

- ARP의 배경

 ARP는 1982년 RFC 826에 정의되었으며, 이후 인터넷 표준 프로토콜로 STD 37에서 재정의되었다. RFC 826에 담긴 모호한 내용은 RFC 1122를 통해 명확히 정리되었다. RFC 826에서는 ARP를 다음과 같이 정의하고 있다.

"ARP는 동일한 네트워크에 연결된 장비들이 이더넷 하드웨어 주소(예: MAC 주소)를 파악하기 위해 사용하는 방식이다."

 

2. ARP 동작

 ARP(Address Resolution Protocol)는 이더넷과 같은 다중 접속(Multi-access) 매체에서 논리적인 IP 주소물리적인 MAC 주소를 매칭하기 위해 사용된다. ARP는 브로드캐스트 방식으로 요청하고, 유니캐스트 방식으로 응답하여 동작한다.

 

- ARP 통신 과정

로컬 네트워크 세그먼트에서 두 장비가 통신을 시작하기 위한 ARP 동작 과정은 다음과 같다.

ARP 캐시 테이블 확인 통신을 시작하는 시스템은 자신의 ARP 캐시 테이블에서 목적지 IP 주소와 매칭되는 MAC 주소를 검색함.
· MAC 주소가 존재하면 이를 사용하여 바로 통신을 시작함.
·  MAC 주소가 없으면 ARP 요청 과정을 시작함.
ARP 요청 전송 ARP 요청은 네트워크 내 모든 시스템이 받을 수 있도록 브로드캐스트(MAC 주소: FF:FF:FF:FF:FF:FF) 방식으로 전송됨.
·  요청 패킷에는 송신자의 IP와 MAC 주소, 그리고 알고자 하는 목적지 IP 주소가 포함됨.
ARP 요청 처리 동일 네트워크 세그먼트의 모든 시스템은 ARP 요청을 수신함
· 요청된 목적지 IP가 자신의 IP와 일치하면, 해당 시스템은 송신자의 IP와 MAC 주소를 자신의 ARP 캐시에 저장함.
· 목적지 IP가 자신과 일치하지 않으면 요청 패킷을 무시하거나 송신자의 정보를 ARP 캐시에 임시로 저장할 수 있음.
ARP 응답 전송 목적지 시스템은 ARP 요청에 응답하기 위해 유니캐스트 방식으로 송신자에게 ARP 응답 패킷을 전송함.
· 응답 패킷에는 자신의 IP와 MAC 주소가 포함됨.
· 송신 시스템은 수신한 응답 패킷의 정보를 바탕으로 자신의 ARP 캐시에 목적지 IP와 MAC 주소를 저장함.
캐시 테이블 갱신
및 통신 시작
ARP 요청과 응답 과정을 통해 상호 간의 MAC 주소를 알게 된 두 시스템은, 이 정보를 기반으로 데이터를 전송함.
캐시에 저장된 정보는 일정 시간 동안 유효하며, 이후 필요 시 다시 갱신됨.

 

  • ARP 캐시 확인 명령
Server Server # arp -a
Network Equipment SW # show ip are

 

  • ARP 통신 예

 

Steve 호스트Web 서버와 통신하기 위해 ARP 요청 실행 과정을 볼 수 있다.

ARP 요청 - Steve 호스트는 브로드캐스트 방식으로 ARP 요청 패킷을 전송하며, 패킷에는 자신의 IP와 MAC 주소, 그리고 Web 서버의 IP 주소가 포함됨.
- 동일 세그먼트의 모든 시스템은 이 요청 패킷을 수신함.
ARP 응답 - Web 서버는 자신이 요청된 목적지임을 확인하고, ARP 응답 패킷을 유니캐스트로 Steve에게 전송함.
- Web 서버는 이 과정에서 Steve의 IP와 MAC 주소를 자신의 ARP 캐시에 저장함.
캐시 갱신 - Steve 호스트는 Web 서버로부터 수신한 응답 정보를 바탕으로 자신의 ARP 캐시를 갱신하고, Web 서버와의 통신을 시작함.

 

이처럼 ARP는 네트워크 통신에서 필수적인 역할을 하며, 효율적인 주소 변환을 통해 원활한 데이터 전송을 지원한다.

 

3. ARP 헤더

 

ARP 프로토콜 헤더는 이더넷 프레임에 캡슐화되며, 이더 타입 필드 값 0x0806으로 구분된다.

하드웨어 타입
(Hardware Type)
2 바이트 ARP 패킷이 전송되는 로컬 네트워크의 하드웨어 유형과 주소 체계를 정의함.
프로토콜 타입
(Protocol Type)
2 바이트 하드웨어 타입을 보완하며, 메시지에서 사용되는 3계층 프로토콜 주소 유형을 지정함.
 · IPv4의 경우 값은 2048 (16진수 0x0800), 이는 IP를 위한 이더넷 프레임 헤더의 이더 타입과 일치함.
하드웨어 주소 길이
(Hardware Address
Length)
1 바이트 메시지에 포함된 하드웨어 주소 길이를 바이트 단위로 지정함.
· 이더넷 또는 IEEE 802 MAC 주소 사용 시 값은 6임.
프로토콜 주소 길이
(Protocol Address
Length)
1 바이트 메시지에 포함된 프로토콜(3계층) 주소 길이를 바이트 단위로 지정함.
· IPv4 주소의 경우 값은 4.
오퍼레이션 (Operation) 2 바이트 ARP 패킷의 동작 상태를 나타냄(요청(Request) : 1, 응답(Reply) : 2)
송신자 하드웨어 주소
(Sender Hardware
Address, SHA)
가변 송신 시스템의 하드웨어 주소를 나타냄.
· 예시: 이더넷의 경우 6바이트.
· 하드웨어 주소는 네트워크 종류에 따라 다르며, 이더넷 및 토큰링은 6바이트, ARCnet은 1바이트, Frame-Relay는 2~4바이트, SMDS는 8바이트임.
송신자 프로토콜 주소
(Sender Protocol
Address, SPA)
가변 송신 시스템의 프로토콜 주소를 나타냄.
· 예시: IPv4의 경우 송신자의 IP 주소.
타겟 하드웨어 주소
(Target Hardware
Address, THA)
가변 수신 시스템의 하드웨어 주소를 나타냄.
· 요청(Request) 메시지에서는 대상 시스템을 지정함
· 응답(Reply) 메시지에서는 응답을 보낸 시스템을 지정함.
타겟 프로토콜 주소
(Target Protocol
Address, TPA)
가변 수신 시스템의 프로토콜 주소를 나타냄.
· 예시: IPv4의 경우 수신자의 IP 주소.

 

  • ARP 헤더의 하드웨어 타입
HRD 값 하드웨어 타입
1 DIX에더넷과 FDDI
6 IEEE 802.3 이더넷과 802.5 토큰링 네트워크
7 ARCNet
15 Frame-Relay
16 ATM
17 HDLC
18 Fiber Channel
19 ATM
20 Serial Line
21 IPsec tunnel

 

  • ARP 동작 코드(OP Code) 종류
동작 코드 ARP 메시지 타입
1 ARP 요청
2 ARP 응답
3 RARP 요청 
4 RARP 응답
5 DRARP 요청
6 DRARP 응답
7 DRARP 에러
8 Inverse ARP 요청
9 Inverse ARP 응답

 

4. ARP 종류

 ARP는 물리적 주소(데이터 링크 계층 주소)와 IP 주소를 매칭하는 역할을 하며, 이를 기반으로 다양한 변형된 형태가 존재한다. ARP는 Reverse ARP, Inverse ARP, ARP Probe, DHCP ARP, Gratuitous ARP, Proxy ARP, UnARP 등 다양한 변형이 있다.

 

(1) Reverse ARP

 Reverse ARPARP(Address Resolution Protocol)와 반대로, 물리적 주소(MAC Address)를 기반으로 IP 주소를 파악할 수 있도록 설계된 프로토콜이다. 이는 주로 디스크 없이 동작하는 시스템이 자신의 MAC 주소에 대응하는 IP 주소를 얻기 위해 사용되었다.

RARP 작동 원리 - 디스크가 없는 클라이언트 시스템이 부팅 시 자신의 MAC 주소를 포함한 RARP 요청 패킷을 브로드캐스트로 전송함.
- 네트워크에 연결된 RARP 서버가 요청을 수신하고, 사용 가능한 IP 주소를 포함한 RARP 응답 패킷을 전송함.
패킷 구조 - RARP 요청 패킷은 송신자 MAC 주소와 타겟 MAC 주소에 클라이언트의 MAC 주소를 채우고, 송신자 및 타겟 IP 주소 필드는 0으로 설정함.
- 2계층 브로드캐스트 방식으로 전송함.
제한점 - IP 주소만 할당 가능하며 서브넷 마스크, 게이트웨이 정보는 제공하지 않음.
- 따라서 라우팅이 필요 없는 소규모 내부 LAN 환경에서 사용함.
현대 네트워크에서의
대체
- BOOTP(Bootstrap Protocol)나 DHCP(Dynamic Host Configuration Protocol)로 대체됨.

 

 

(2) Inverse ARP

 Inverse ARP는 데이터링크 계층에서 연결이 설정된 후, 물리적 주소(DLCI, Data-Link Connection Identifier)를 기반으로 IP 주소를 파악할 수 있도록 설계된 프로토콜이다. 이는 주로 WAN(Wide Area Network) 환경에서 사용되며, 특히 프레임 릴레이(Frame Relay) ATM(Asynchronous Transfer Mode) 네트워크에서 필수적인 기술이다.

InARP 작동 원리 - 라우터와 프레임 릴레이 스위치 간 연결이 설정되면, 스위치는 상태 정보를 라우터로 전송.
- 라우터는 전송 장비의 IP와 자신에게 할당된 DLCI 번호를 매핑하여 InARP 캐시에 저장.
- 연결이 완료되면 라우터는 주기적으로 헬로우(Hello) 메시지를 교환하여 연결 상태를 유지.
- 또한, 10초마다 Keepalive 프레임을 전송해 프레임 릴레이 스위치와 연결 상태를 확인.
프레임 릴레이와
InARP
- 프레임 릴레이 장비는 고유의 하드웨어 주소 대신 관리자에 의해 설정된 DLCI 번호를 사용.
- InARP는 자동으로 DLCI 번호와 IP 주소를 매칭하여 동적 관리를 가능하게 함.
적용 환경 - LAN과 같은 동일 물리 매체를 공유하는 네트워크에서는 불필요.
- 그러나 프레임 릴레이나 ATM과 같은 NBMA(Non-Broadcast Multi-Access) 환경에서는 필수.

(3) DHCP ARP

 DHCP(Dynamic Host Configuration Protocol)는 IP 주소를 동적으로 할당하며, 게이트웨이 및 DNS 정보를 함께 제공하는 프로토콜이다. DHCP는 RARP와 비교해 IP 자원 풀(Resource Pool)을 활용하여 IP 주소를 자동으로 관리 및 재분배한다.

 

 DHCP를 사용하는 네트워크에서 특정 IP를 사용자가 수동으로 설정하면 IP 충돌 문제가 발생할 수 있다. 이를 방지하기 위해 RFC 2131은 IP 충돌 감지를 위한 DHCP ARP 프로세스를 정의했다.

장점 - SPA를 0.0.0.0으로 설정하여 ARP 요청을 수신한 시스템이 자신의 ARP 캐시를 갱신하지 않도록 방지.
- IP 충돌 방지 기능으로 안정적인 네트워크 환경 구축 가능.
한계점 - 영구적으로 IP를 할당받은 시스템이 꺼졌다가 재기동하면 IP 충돌 가능성 존재.
- 일부 시스템은 SPA가 0.0.0.0인 ARP 요청을 이해하지 못할 수 있음.

 

- 동작 방식

ARP 요청 생성 - DHCP 클라이언트는 ARP 요청 패킷을 생성할 때, 다음과 같은 방식으로 필드를 채운다.
  · 송신자 프로토콜 주소(SPA)
: 0.0.0.0 값 설정.

  · 송신자 하드웨어 주소(SHA): 자신의 MAC 주소 입력.
  · 타겟 프로토콜 주소(TPA): DHCP로부터 부여받은 IP 주소 입력.
  · 타겟 하드웨어 주소(THA): 0 값 설정.
ARP 요청 전송 - 요청을 네트워크에 브로드캐스트하여 동일 IP를 사용하는 다른 시스템이 있는지 확인합니다.
응답 처리 - 응답 없음: 동일한 IP를 사용하는 다른 시스템이 없음을 확인, IP 사용 가능.
- 응답 수신: 동일한 IP를 사용하는 시스템이 존재함을 인지, DHCP 서버에 새 IP 요청.

 

(4) Gratuitous ARP(gARP)

 Gratuitous ARP(gARP)는 네트워크 장비가 자신의 IP 및 MAC 주소를 변경했을 때 이를 다른 시스템의 ARP 캐시 테이블에 반영하기 위해 사용되는 방식이다. 시스템의 고가용성 확보나 네트워크 장비 이중화 시 주로 활용된다.

자신의 정보 브로드캐스트 - SHA: 자신의 MAC 주소.
- SPA: 자신의 IP 주소.
- THA: 0 값 설정.
- TPA: 자신의 IP 주소 입력.
응답 기대 없음 - gARP는 ARP 요청에 대해 응답을 기대하지 않고, 단순히 동일 네트워크 상의 ARP 캐시를 갱신하는 것이 목적.
충돌 감지 - 만약 gARP 요청에 응답이 수신되면 동일 IP를 사용하는 시스템이 있음을 감지하고, 이를 기반으로 충돌을 처리.

 

- gARP 활용 사례

시스템 이중화 NIC 장애 시 대체 NIC의 MAC 주소를 알리기 위해 사용.
IP 충돌 감지 동일 IP를 사용하는 시스템이 존재할 경우 경고 메시지 표시 및 인터페이스 비활성화(OS 예: Windows XP).

 

- 한계점 : 네트워크 효율성 보장을 위해 기존 ARP 엔트리 정보만 갱신하며, 새로운 정보는 무시.

 

(5) ARP 프로브(Probe)

 ARP 프로브는 IP 주소 충돌을 방지하기 위해 사용되는 방법으로, 송신자의 IP 주소(SPA)를 0.0.0.0으로 설정한 상태로 ARP 요청 패킷을 브로드캐스트합니다. 이 동작은 IP 주소 충돌 검출 메커니즘으로, RFC 5227에 정의되어 있다.


 시스템은 IPv4 주소를 수동으로 설정하거나 DHCP로 할당받은 후, 이를 사용하기 전에 ARP Probe 패킷을 통해 해당 IP 주소의 사용 여부를 테스트할 수 있다.

 

IP 사용 여부 확인 - 브로드캐스트된 ARP Probe를 통해 네트워크 상의 다른 시스템이 동일한 IP 주소를 사용하는지 확인함.
  · IP 충돌이 발견되면 시스템은 해당 IP 주소를 사용하지 않도록 설정합니다.
ARPing 유틸리티 - ARPing은 ARP Probe를 활용한 네트워크 유틸리티로, 특정 IP 주소가 사용 중인지 확인할 수 있음.
- ICMP를 사용하지 않고 ARP 프로토콜을 활용하므로, ICMP 차단이 설정된 시스템에서도 연결성을 테스트할 수 있음.

- 동일 서브넷 내에서만 동작함.
gARP와의 차이점 - gARP는 기존 시스템의 ARP 캐시를 갱신할 수 있어 IP 충돌 시 문제가 발생할 수 있음.
- 반면, ARP Probe는 SPA 필드가 0으로 채워져 있어 ARP 캐시가 갱신되지 않으며, 안전한 충돌 감지가 가능함.

 

(6) UnARP

 UnARP는 ARP 캐시의 만료 시간 문제를 해결하기 위해 고안된 방식으로, 시스템이 네트워크 연결을 종료할 때 관련된 ARP 캐시 엔트리를 삭제하도록 한다. 일반적으로 ARP 캐시의 만료 시간은 표준화되어 있지 않아, 벤더에 따라 다르게 설정된다.

서버 시스템 수 분 단위로 ARP 캐시 만료 시간이 설정됨
네트워크 장비 약 4시간 정도로 설정되는 경우가 일반적임

 

 이러한 만료 시간은 DHCP 환경에서 임시 IP를 사용하는 시스템이 연결을 종료한 후에도, 동일한 IP 주소를 다른 시스템이 사용하는 데 방해가 될 수 있다.

 

- 동작 방식 

특별한 ARP 패킷 전송 - 시스템이 네트워크에서 연결을 종료할 때, 브로드캐스트를 통해 모든 네트워크 장치에 해당 ARP 캐시 엔트리를 삭제하도록 요청함
패킷 필드 구성 - SPA(Source Protocol Address): 해제 대상 IP 주소를 입력함.
- SHA(Source Hardware Address)DHA(Destination Hardware Address): 모두 0으로 채워, 해당 IP와 결합된 하드웨어 주소가 없음을 명시함.
- 하드웨어 주소 길이 필드: 항상 0으로 설정됩니다.
ARP 응답 형태 - UnARP는 반드시 ARP 응답 패킷의 형태를 갖추며 동작함.
- 이로 인해 일부 시스템에서는 일반적인 ARP 동작과 다르게 인식하여, UnARP 패킷을 처리하지 못할 가능성이 있음.
호환성 제한 - 많은 시스템이 RFC 1868에 정의된 UnARP를 지원하지 않음.
- 지원 여부는 장비 벤더에 문의해야 하며, 일부 장비에서는 UnARP를 지원하기 위한 특수 코드가 필요할 수 있음.
- 이 특수 코드는 하드웨어 주소 필드에 0을 입력해 발생할 수 있는 문제를 최소화함.

 

 UnARP는 기존 ARP 캐시 문제를 해결하는 데 유용하지만, 제한된 지원과 호환성 문제로 인해 모든 환경에서 적용하기는 어렵다.

 

(7) 프록시 ARP

 프록시 ARP는 네트워크 통신에서 ARP(주소 확인 프로토콜) 요청에 대한 응답을 라우터가 대신 처리하는 기술로, 특정 조건에서 디폴트 게이트웨이 설정 없이도 다른 서브넷과 통신을 가능하게 한다. 이를 통해 네트워크 구성이나 라우팅 설정이 미흡한 환경에서 통신 문제를 해결할 수 있지만, 현대적인 네트워크에서는 일반적으로 비효율적이고 보안상의 문제가 될 수 있어 잘 사용되지 않는다.

역할 및 목적 - 프록시 ARP는 디폴트 게이트웨이 설정이 불가능하거나 잘못 설정된 호스트를 지원함
- 호스트는 자신의 네트워크 내부에 있는 것처럼 대상 호스트에 접근하지만, 실제로는 라우터가 대상 호스트로 패킷을 전달함

 

- 동작 방식

동작 방식 - 호스트 A(예: 172.16.10.100)는 서브넷 설정(예: /16)이 부정확하여 호스트 D(172.16.20.200)를 동일 네트워크에 있다고 인식하고 ARP 요청을 보냄.
- 라우터는 브로드캐스트된 ARP 요청을 받고, 호스트 D를 대신해 자신의 MAC 주소로 ARP 응답을 반환함.
- 호스트 A는 라우터의 MAC 주소를 대상으로 패킷을 전송하고, 라우터는 이 패킷을 실제 목적지인 호스트 D로 전달함.

 

- 프록시 ARP를 사용하는 이유

라우팅 없이 간편한 네트워크 확장 - 같은 슈퍼 네트워크 내에서 라우터나 멀티레이어 스위치를 추가할 때 별도의 라우팅 설정 없이 손쉽게 네트워크를 확장할 수 있음
디폴트 게이트웨이 불필요 - 네트워크의 호스트들이 디폴트 게이트웨이를 설정하지 않아도 통신이 가능하도록 지원함.
단순 네트워크 환경에서 유용 - 디폴트 게이트웨이가 없거나 지능적인 라우팅 기능을 지원하지 않는 IP 호스트가 존재하는 환경에서도 문제없이 통신이 가능하도록 도와줌.

 

- Proxy ARP 사용의 문제점

네트워크 계층 구조 무시 - 프록시 ARP는 계층적인 네트워크 구조를 지원하지 않고, 평평한 구조로 운영되므로 네트워크 관리가 복잡해질 수 있음.
ARP 트래픽 증가 - 브로드캐스트 통신인 ARP 트래픽이 세그먼트 내에서 과도하게 발생해 네트워크 성능을 저하시킬 수 있음.
ARP 테이블 관리 부담 - 호스트의 ARP 테이블 크기가 증가하며, 메모리 사용 효율이 떨어질 수 있음.
통신 효율 저하 - 통신 시작 시마다 ARP 요청이 발생하여 응답 시간이 길어질 수 있음.
보안 취약점 - ARP 스푸핑 공격에 노출될 수 있음.
- 공격자는 잘못된 MAC 주소를 제공해 패킷을 가로챌 수 있음.
보편적이지 않은
네트워크 구성
 - 모든 네트워크 토폴로지에서 적합하지 않으며, 특히 다수의 라우터가 존재하는 환경에서는 라우팅이 더 적합함.

 

- 프록시 ARP를 비활성화 시 고려사항

 프록시 ARP를 비활성화하기 전에 다음 항목을 점검하지 않으면 통신 장애가 발생할 수 있다.

서버의 서브넷 및
정적 라우팅 설정 확인
- 정적 라우팅이 올바르게 설정되지 않았다면, 프록시 ARP를 통해 통신하고 있을 가능성이 있음.
디폴트 게이트웨이
설정 확인
- 디폴트 게이트웨이가 잘못 설정된 경우 프록시 ARP를 이용해 통신을 수행하고 있을 수 있음.
서버 인터페이스 및
라우팅 정보 점검
- netstat -i: 서버의 인터페이스 상태 확인
- netstat -nr: 서버의 라우팅 정보 확인
- arp -a: ARP 캐시 테이블 확인

 

- 예시 시나리오

  • 한 서버의 라우팅 설정이 잘못되어 정적 라우팅 정보가 192.168.239.1 대신 192.168.239.183으로 설정된 경우, 프록시 ARP를 통해 10.0.0.0/8 네트워크와 통신하고 있을 수 있다.
  • ARP 캐시 테이블을 확인하면, 10.0.0.0/8 네트워크의 모든 호스트 IP가 로컬 라우터의 MAC 주소로 매핑된 것을 확인할 수 있다.

 

 

728x90