[Network] #10 ARP
[혼자 공부하는 네트워크↗️], 컴퓨터 네트워킹: 하향식 접근 (제8판)을 바탕으로 정리한 글입니다.
- 지난 포스팅에서 “네트워크 간 통신시 IP 주소와 MAC 주소가 같이 활용되고 기본적으로 IP 주소를 우선적으로 활용한다.” 라고 하였다.
- 하지만, IP 주소는 알지만 MAC 주소를 모르는 상황에서는 어떻게 해야할까? 이 문제를 해결할 수 있는 “ARP”에 대해 학습해보자.
1. ARP (Address Resolution Protocol)
1.1 ARP란?
ARP이란, IP 주소를 통해 MAC 주소를 알아내는 프로토콜을 의미한다.
동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아낼 수 있다.
1.2 ARP의 동작 과정
- ARP 요청 (ARP Request)
- ARP 응답 (ARP Reply)
- ARP 테이블 갱신
- 가정
- 호스트 A는 호스트 B와 동일한 네트워크에 속해 있다.
- 호스트 A는 호스트 B의 IP 주소는 알고 있지만, MAC 주소는 모른다.
- 이 상황에서 호스트 A가 호스트 B의 MAC 주소를 알아내기 위한 과정을 살펴보자
① ARP 요청(ARP Request)
- 호스트 A는 호스트 B의 MAC 주소를 모르기 때문에, 네트워크에 ARP 요청을 보낸다.
- 이 ARP 요청은 브로드캐스트 메시지로 전송되며, 네트워크에 있는 모든 호스트가 수신한다.
- 이 브로드캐스트 메시지는 ARP 요청이라는 ARP 패킷이다.
- 이 메시지에는 호스트 B의 IP 주소가 포함되어 있으며, “이 IP 주소를 가진 호스트는 자신의 MAC 주소를 알려달라”는 메시지가 담겨 있다.
② ARP 응답(ARP Reply)
- 호스트 B 외에 나머지 호스트는 자신의 IP 주소가 아니므로 응답하지 않고 무시한다.
- 호스트 B는 자신의 IP 주소와 일치하는 요청이기 때문에, 자신의 MAC 주소를 포함한 ARP 응답을 유니캐스트 메시지로 호스트 A에게 전송한다.
- 이 유니캐스트 메시지는 ARP 응답이라는 ARP 패킷이다.
- 이 메시지를 수신한 A는 B의 MAC 주소를 알게 된다.
ARP 패킷이란?
- ARP 요청과 ARP 응답은 “ARP 패킷”을 주고받는 과정이다.
- 즉, ARP 요청 및 응답 과정에서 송수신되는 패킷을 의미하며, 이 패킷에는 다음과 같은 정보가 포함된다.
- 오퍼레이션 코드: ARP 요청의 경우 1, ARP 응답의 경우 2
- 송신지 하드웨어주소, 수신지 하드에어 주소: 송수진지의 MAC 주소 명시
- 송신지 프로토콜 주소, 수신지 프로토콜 주소: 송수진지의 IP 주소 명시
③ ARP 테이블 갱신
- 호스트 A는 호스트 B의 MAC 주소를 알아내고, 이를 자신의 ARP 테이블에 기록한다.
- 이후 호스트 A는 호스트 B와 다시 통신할 때 ARP 요청을 보내지 않고, ARP 테이블을 참조하여 바로 MAC 주소를 사용해 데이터를 전송할 수 있다.
ARP 테이블이란?
- ARP 요청-응답을 통해 알게 된 IP 주소와 MAC 주소의 연관 관계를 기록해두는 테이블을 말한다.
- ARP 테이블에 등록된 호스트에 대해선 ARP 요청을 보낼 필요가 없어진다.
- ARP 테이블은 일정 시간이 지나면 삭제되며, 임의 삭제도 가능하다.
ARP 테이블 확인해보기
윈도우 CMD나 맥OS 터미널에서 arp -a
를 입력해 ARP 테이블을 확인할 수 있다.
1.3 다른 네트워크와의 ARP 동작
통신하고자 하는 호스트 A와 B가 다른 네트워크에 속해 있을 경우 어떻게 MAC 주소를 알아낼 수 있을까?
① 호스트 A가 라우터 A의 MAC 주소를 모를 경우, ARP 요청-ARP 응답 과정을 통해 라우터 A의 MAC 주소를 알아낸 뒤, 이를 향해 패킷을 전송한다.
② 라우터 A가 라우터 B의 MAC 주소를 모를 경우, ARP 요청-ARP 응답 과정을 통해 라우터 B의 MAC 주소를 알아낸 뒤, 이를 향해 패킷을 전송한다.
③ 라우터 B가 호스트 B의 MAC 주소를 모를 경우, ARP 요청-ARP 응답 과정을 통해 호스트 B의 MAC 주소를 알아낸 뒤, 이를 향해 패킷을 전송한다.
이처럼 다른 네트워크에 속해있을 경우 ARP는 네트워크별로 수행된다.
댓글남기기