ARP란 무엇인가?
컴퓨터가 네트워크를 통해 다른 장치와 통신하기 위해서는 상대방을 식별할 수 있는 주소가 필요합니다. 네트워크에서는 대표적으로 IP 주소와 MAC 주소가 사용됩니다.
IP 주소는 네트워크에서 목적지를 식별하기 위한 논리적인 주소이고, MAC 주소는 네트워크 인터페이스를 식별하기 위한 주소입니다.
그렇다면 컴퓨터가 상대방의 IP 주소는 알고 있지만 MAC 주소를 모르는 경우에는 어떻게 데이터를 전달할 수 있을까요?
이때 사용되는 프로토콜이 ARP(Address Resolution Protocol)입니다.
ARP는 IPv4 환경에서 특정 IP 주소에 해당하는 MAC 주소를 알아내기 위해 사용되는 프로토콜입니다.
쉽게 말하면 컴퓨터가 네트워크에 다음과 같이 물어보는 과정입니다.
192.168.1.20을 사용하는 장치가 누구인가?
자신의 MAC 주소를 알려주세요.
해당 IP 주소를 사용하는 장치가 자신의 MAC 주소를 응답하면 컴퓨터는 IP 주소와 MAC 주소의 관계를 알게 됩니다.
IP 주소와 MAC 주소의 차이
ARP를 이해하기 위해서는 먼저 IP 주소와 MAC 주소의 차이를 알아야 합니다.
IP 주소는 네트워크에서 장치의 위치를 나타내는 논리적인 주소입니다. 같은 장치라도 네트워크 환경이 변경되면 IP 주소가 변경될 수 있습니다.
반면 MAC 주소는 네트워크 인터페이스에 할당되는 주소로, 일반적인 이더넷 환경에서 장치를 식별하는 데 사용됩니다.
예를 들어 다음과 같은 컴퓨터가 있다고 가정해 보겠습니다.
IP 주소
192.168.1.10
MAC 주소
00:1A:2B:3C:4D:5E
컴퓨터가 같은 네트워크에 있는 192.168.1.20으로 데이터를 보내려고 한다면 목적지의 MAC 주소를 알아야 이더넷 프레임을 전달할 수 있습니다.
이때 ARP가 IP 주소와 MAC 주소를 연결해주는 역할을 합니다.
ARP는 언제 사용하는가?
ARP는 모든 네트워크 통신에서 항상 새로운 정보를 확인하는 것은 아닙니다.
컴퓨터가 같은 로컬 네트워크에 있는 특정 IPv4 장치와 통신해야 하는데 해당 장치의 MAC 주소를 모르는 경우 ARP를 사용합니다.
예를 들어 다음과 같은 네트워크를 생각해 볼 수 있습니다.
내 컴퓨터
IP: 192.168.1.10
│
│
스위치
│
│
상대방 컴퓨터
IP: 192.168.1.20
내 컴퓨터가 192.168.1.20으로 데이터를 보내려고 하지만 MAC 주소를 모른다면 ARP를 통해 해당 IP 주소의 MAC 주소를 확인할 수 있습니다.
ARP 요청이란?
ARP 요청은 특정 IP 주소를 사용하는 장치의 MAC 주소를 알아내기 위해 보내는 메시지입니다.
예를 들어 내 컴퓨터가 192.168.1.20의 MAC 주소를 알고 싶다고 가정해 보겠습니다.
내 컴퓨터는 같은 네트워크에 있는 장치들에게 ARP 요청을 보냅니다.
쉽게 표현하면 다음과 같습니다.
"192.168.1.20을 사용하는 장치가 있습니까?
있다면 MAC 주소를 알려주세요."
이때 ARP 요청은 일반적으로 해당 로컬 네트워크의 모든 장치가 확인할 수 있도록 브로드캐스트 방식으로 전달됩니다.
하지만 실제 응답은 해당 IP 주소를 사용하는 장치가 자신의 MAC 주소를 포함하여 보내게 됩니다.
ARP 응답이란?
ARP 요청을 받은 장치가 요청에 포함된 IP 주소를 자신이 사용하고 있다면 ARP 응답을 보냅니다.
예를 들어 상대방 컴퓨터의 정보가 다음과 같다고 가정해 보겠습니다.
IP 주소
192.168.1.20
MAC 주소
00:AA:BB:CC:DD:EE
상대방 컴퓨터는 자신의 MAC 주소를 포함하여 ARP 응답을 보냅니다.
그러면 내 컴퓨터는 다음과 같은 정보를 확인할 수 있습니다.
192.168.1.20
↓
00:AA:BB:CC:DD:EE
이제 컴퓨터는 목적지 MAC 주소를 알게 되었기 때문에 해당 MAC 주소를 목적지로 지정하여 이더넷 프레임을 전송할 수 있습니다.
ARP의 전체 동작 과정
ARP가 실제로 동작하는 과정을 순서대로 정리하면 다음과 같습니다.
1. 목적지 IP 주소 확인
↓
2. ARP 캐시 확인
↓
3. MAC 주소가 없으면 ARP 요청
↓
4. 해당 IP를 가진 장치가 ARP 응답
↓
5. IP 주소와 MAC 주소 정보 저장
↓
6. 목적지 MAC 주소를 이용해 데이터 전송
이러한 과정을 통해 컴퓨터는 IP 주소만 알고 있는 상태에서 실제 네트워크 프레임을 전달하는 데 필요한 MAC 주소를 확인할 수 있습니다.
ARP 캐시란 무엇인가?
컴퓨터가 네트워크 통신을 할 때마다 ARP 요청을 반복해서 보내면 불필요한 네트워크 트래픽이 발생할 수 있습니다.
이를 줄이기 위해 컴퓨터는 ARP를 통해 확인한 IP 주소와 MAC 주소의 관계를 일정 시간 동안 저장합니다.
이것을 ARP 캐시(ARP Cache)라고 합니다.
예를 들어 ARP 캐시에 다음과 같은 정보가 저장될 수 있습니다.
IP 주소 MAC 주소
192.168.1.1 AA:BB:CC:DD:EE:FF
192.168.1.20 00:AA:BB:CC:DD:EE
192.168.1.30 11:22:33:44:55:66
이후 같은 장치와 다시 통신해야 할 경우 ARP 캐시에 저장된 MAC 주소를 사용할 수 있습니다.
따라서 매번 ARP 요청을 보내지 않아도 됩니다.
ARP 캐시는 왜 변경될까?
ARP 캐시에 저장된 정보가 영구적으로 유지되는 것은 아닙니다.
네트워크 장치가 변경되거나 IP 주소와 MAC 주소의 관계가 바뀔 수 있기 때문입니다.
예를 들어 같은 IP 주소를 다른 네트워크 장치가 사용하게 될 수도 있습니다.
이러한 상황에서 오래된 MAC 주소를 계속 사용하면 정상적인 통신이 이루어지지 않을 수 있습니다.
따라서 운영체제와 네트워크 장비는 ARP 정보를 일정 시간 동안 유지하고 필요에 따라 새로운 정보를 학습합니다.
다른 네트워크로 통신할 때도 ARP를 사용할까?
ARP를 이해할 때 가장 중요한 부분 중 하나입니다.
ARP는 단순히 목적지 IP 주소의 MAC 주소를 인터넷 전체에서 찾는 기술이 아닙니다.
ARP는 기본적으로 같은 로컬 네트워크 구간에서 IPv4 주소에 대응하는 MAC 주소를 확인하는 데 사용됩니다.
예를 들어 내 컴퓨터가 인터넷에 있는 웹 서버와 통신한다고 가정해 보겠습니다.
웹 서버가 다른 네트워크에 있다면 내 컴퓨터가 웹 서버의 MAC 주소를 직접 알아내는 것이 아닙니다.
대신 내 컴퓨터는 데이터를 기본 게이트웨이, 일반적으로 라우터의 MAC 주소로 전달합니다.
구조를 단순하게 표현하면 다음과 같습니다.
내 컴퓨터
↓
기본 게이트웨이
↓
라우터
↓
인터넷
↓
목적지 서버
이때 내 컴퓨터는 같은 로컬 네트워크에 있는 기본 게이트웨이의 MAC 주소를 ARP를 통해 확인할 수 있습니다.
따라서 ARP는 인터넷 전체에서 목적지 서버의 MAC 주소를 찾는 기술이 아니라 로컬 네트워크에서 IPv4 주소에 대응하는 MAC 주소를 확인하는 기술이라고 이해하는 것이 정확합니다.
ARP와 스위치의 관계
ARP가 MAC 주소를 알아내는 과정에서 네트워크 스위치도 함께 사용됩니다.
ARP 요청은 같은 로컬 네트워크에서 브로드캐스트 방식으로 전달될 수 있으며, 스위치는 이더넷 프레임을 적절한 포트로 전달합니다.
ARP 요청을 받은 장치 중 해당 IP 주소를 가진 장치가 응답하면 응답 프레임이 다시 요청한 컴퓨터에게 전달됩니다.
이 과정에서 스위치는 MAC 주소 학습 기능을 통해 어떤 MAC 주소가 어느 포트에 연결되어 있는지도 학습합니다.
따라서 ARP와 스위치는 서로 다른 역할을 하지만 실제 네트워크 통신 과정에서는 함께 동작하게 됩니다.
ARP와 라우터의 관계
라우터 역시 네트워크 인터페이스에서 ARP를 사용할 수 있습니다.
라우터는 서로 다른 네트워크를 연결하는 장치이기 때문에 각 네트워크 인터페이스에서 해당 네트워크의 장치와 통신하기 위해 ARP 정보가 필요할 수 있습니다.
예를 들어 라우터가 다음과 같은 네트워크를 연결한다고 가정해 보겠습니다.
192.168.1.0/24
│
라우터
│
192.168.2.0/24
라우터가 각 네트워크의 장치와 직접 통신해야 한다면 해당 네트워크에서 필요한 MAC 주소를 ARP를 통해 확인할 수 있습니다.
ARP와 IPv6의 관계
ARP는 IPv4 네트워크에서 사용되는 프로토콜입니다.
IPv6에서는 ARP를 사용하지 않고 NDP(Neighbor Discovery Protocol)라는 기능을 사용합니다.
따라서 다음과 같이 이해하면 쉽습니다.
IPv4
→ ARP
IPv6
→ NDP
IPv6에서는 ICMPv6를 기반으로 이웃 장치를 찾고 주소 정보를 확인하는 방식으로 동작합니다.
따라서 ARP를 공부할 때는 IPv4 환경에서 사용되는 프로토콜이라는 점을 기억하는 것이 좋습니다.
ARP의 보안 문제
ARP는 네트워크 통신에서 중요한 역할을 하지만 보안 측면에서 주의해야 할 부분도 있습니다.
대표적인 문제가 ARP 스푸핑(ARP Spoofing)입니다.
ARP는 네트워크에서 IP 주소와 MAC 주소의 관계를 알려주는 과정에서 인증 기능이 충분하지 않기 때문에 공격자가 잘못된 ARP 정보를 전달할 가능성이 있습니다.
예를 들어 공격자가 자신의 MAC 주소를 특정 장치의 MAC 주소인 것처럼 속이는 상황이 발생할 수 있습니다.
이러한 공격을 통해 네트워크 통신을 가로채거나 변조하려는 시도가 발생할 수 있습니다.
따라서 기업 네트워크에서는 ARP 관련 보안 기능과 함께 다양한 네트워크 보안 기술을 사용하여 이러한 문제를 방지합니다.
ARP를 쉽게 이해하는 방법
ARP를 처음 공부한다면 IP 주소와 MAC 주소의 역할을 다음과 같이 생각하면 이해하기 쉽습니다.
IP 주소
→ 어느 장치를 찾아갈 것인지 알려주는 주소
MAC 주소
→ 로컬 네트워크에서 실제 프레임을 전달할 장치를 식별하는 주소
ARP
→ IP 주소에 대응하는 MAC 주소를 알아내는 과정
예를 들어 친구의 집 주소만 알고 있는데 실제로 어느 집의 초인종을 눌러야 하는지 확인하는 과정이 필요하다고 생각하면 됩니다.
IP 주소가 목적지를 찾기 위한 정보라면 MAC 주소는 해당 로컬 네트워크에서 실제 프레임 전달에 사용되는 정보이고, ARP는 두 정보를 연결해주는 역할을 합니다.
결론
ARP(Address Resolution Protocol)는 IPv4 네트워크에서 IP 주소에 대응하는 MAC 주소를 알아내기 위해 사용하는 프로토콜입니다.
컴퓨터가 같은 로컬 네트워크의 장치와 통신하려고 할 때 상대방의 MAC 주소를 모르면 ARP 요청을 보내고, 해당 IP 주소를 사용하는 장치가 ARP 응답을 보내면서 MAC 주소를 알려줍니다.
확인한 IP 주소와 MAC 주소의 관계는 ARP 캐시에 저장되어 이후 통신에서 재사용할 수 있습니다.
또한 다른 네트워크에 있는 서버와 통신할 때는 목적지 서버의 MAC 주소를 직접 찾는 것이 아니라 일반적으로 기본 게이트웨이의 MAC 주소를 확인하여 로컬 네트워크 구간까지 데이터를 전달합니다.
ARP는 네트워크 통신의 기본적인 동작을 이해하는 데 중요한 프로토콜이며, MAC 주소, 스위치, 라우터, 이더넷, IP 주소 등의 개념과 밀접하게 연결되어 있습니다.
특히 네트워크를 공부할 때 “IP 주소는 알고 있는데 실제 데이터는 어떻게 MAC 주소를 이용해 전달되는가?”라는 의문을 해결해주는 핵심 개념이 바로 ARP입니다.