MAC 주소와 ARP
Programming/네트워크

MAC 주소와 ARP

1. MAC 주소

 

OSI 7계층에서 각 계층은 독립적인 주소를 갖는다. 애플리케이션 계층에서는 호스트 이름, 네트워크 계층에서는 IP 주소, 그리고 링크 계층에선 바로 이 MAC 주소를 갖는다.

 

실제로 MAC 주소를 갖는 것은 호스트나 라우터가 아닌 호스트나 라우터에 삽입된 NIC(네트워크 인터페이스 카드)이다. 그래서 NIC를 여러개 갖고 있으면 MAC 주소도 여러개 갖고 있다. MAC 주소는 소프트웨어을 통해 바꿀 수 있지만, 보통은 NIC에 고정된 식별자이다.

NIC(Network Interface Card)

  

IP 주소는 호스트가 이동하면서 변하는 것과 달리 MAC 주소는 NIC에 고정되어 변하지 않는다. 그래서 IP 주소는 우편 주소, MAC 주소는 주민등록번호에 비유할 수 있다. IP 주소와 MAC 주소 모두 호스트를 지칭하는 주소이다.

  

  


 

  

2. ARP

  ARP를 한마디로 정의하면 IP 주소를 MAC 주소로 변환해주는 변환기이다. 변환한다는 기능 면에서 DNS와 유사하다. 대신, ARP는 동일 서브넷 상에서만 변환한다는 차이점이 있다.

 

  

1) 동일 서브넷 상의 노드로 프레임 전송

 

  ARP를 통해서 어떻게 한 호스트가 동일한 서브넷 상의 다른 호스트나 라우터로 링크 프레임을 전송하는지 알아보자.

  

동일한 서브넷 상 노드들(호스트, 라우터)

 

  위 그림에서 A 호스트(111.111.111.111) 에서 라우터(111.111.111.110)로 프레임을 전송하는 상황이라고 가정해보자. 프레임을 전송하기 위해서는 IP주소 뿐만 아니라 MAC 주소도 알아야 한다. 그렇다면 대체 어떻게 수신 노드인 라우터의 MAC 주소를 알아낼 수 있을까? 이에 대한 해답은 ARP에 있다.

 

ARP은 ARP 테이블을 갖고 있다. 그래서 IP 주소를 입력하면 이에 대응하는 MAC 주소를 반환한다. 위 상황에서 111.111.111.110의 IP주소를 ARP 테이블에 주면, ARP 테이블은 이에 대응하는 MAC 주소인 E6-E9-00-17-BB-4B 을 돌려준다. 이를 통해 수신 노드의 MAC 주소를 알 수 있다.

 

ARP Table

ARP 테이블은 각 매핑 주소가 언제 삭제되는지 나타내는 TTL(Time-To-Live) 값을 갖고 있다. 그래서 주기적으로 갱신된다. 보통 매핑주소의 만료 시간은 엔트리가 ARP 테이블에 들어간 후 20분이다.

  

  

  

 

이제 위 상황으로 돌아가서 호스트 A에서 라우터로 프레임을 전송한다고 가정해보자. 호스트 A는 ARP 테이블에서 목적지인 라우터의 MAC 주소를 갖고와야 한다. 그러나 ARP 테이블에 라우터의 엔트리가 없다면 어떻게 해야 할까?

 

이 경우 ARP 프로토콜을 사용한다. 먼저, 호스트 A는 ARP 패킷이라는 특수한 패킷을 구성한다. ARP 패킷은 송신 및 수신 IP 주소와 MAC 주소를 포함하는 필드를 갖고 있다. 이것을 프레임으로 캡슐화한다음 목적지 MAC 주소를 MAC 브로드캐스트 주소(FF-FF-FF-FF-FF-FF)로 설정한다. 

 

 

ARP Request

 

 

목적지 MAC 주소를 브로드캐스트 주소로 설정하면 동일한 서브넷 상의 모든 노드에게 전송이 된다. 프레임을 전달받은 노드들은 프레임 내 패킷을 열어 자신의 IP 주소가 패킷 내 목적지 IP 주소와 일치하는지 검사한다. 일치한다면 자신의 MAC 주소가 담긴 프레임을 반환하고, 일치하지 않으면 그대로 폐기해버린다.

 

이렇게 ARP 테이블이 갱신되면 목적지의 MAC 주소로 프레임을 전송한다.

 

 

  


 

  

2) 서브넷에 없는 노드로 프레임 전송

  만약 같은 서브넷에 없는 노드로 프레임을 전송하려고 한다면 어떻게 될까?

 

서브넷에 없는 노드로 프레임을 전송할 경우

 

위 그림에서 호스트 A에서 B로 프레임을 전송한다고 가정해보자. 만약 B의 MAC 주소를 목적지 주소에 적는다면, 같은 서브넷 내 프레임을 받은 어떠한 노드도 자신의 MAC 주소와 일치하지 않으므로 폐기할 것이다. 그러므로 먼저 라우터의 MAC 주소를 목적지 주소로 설정해야 한다. 이 부분은 1) 동일 서브넷 상의 노드로 프레임 전송 에서 설명한 내용이다.

 

이제 라우터까지 프레임이 잘 전송되었다면 라우터에서 B 노드로 프레임을 전송할 차례이다. 라우터에서 다음으로 갈 노드를 결정할 때에는 라우터의 포워딩테이블을 참조한다.

 

forwarding table

 

포워딩테이블은 라우터에게 프레임을 라우터 인터페이스인 222.222.222.220을 거쳐서 전달하도록 지시한다. 그러면 인터페이스는 패킷을 자신의 NIC로 전달하며, 프레임으로 캡슐화해 B 호스트가 속한 서브넷으로 전송한다. 이때 프레임의 시작 MAC 주소는 1A-23-F9-CD-06-9B, 도착 MAC 주소는 49-BD-D2-C7-56-2A가 된다. 라우터가 B의 MAC 주소를 얻을 수 있는 이유 역시 ARP에 있다.

 

  

다른 서브넷 상의 노드로 데이터프레임을 전송하고자 할 때 과정을 마지막으로 요약하면 다음과 같다.

1) ARP 프로토콜을 통해 라우터의 MAC 주소를 알아낸 뒤, 내 서브넷 상의 라우터로 데이터프레임을 보낸다.

2) 라우터에서 다음 홉으로 이동할 때에는 다음 홉이 누군지 알아내기 위해 포워딩 테이블을 참고한다.

3) 포워딩 테이블을 통해 다음 홉의 IP 주소를 알아냈다면, ARP로 대응하는 MAC 주소를 알아내고 프레임을 전송한다.

4) 2,3번 과정을 반복해 최종적으로 도착 호스트로 프레임을 전송할 수 있다.

 

 

참고자료 :
1) kocw 컴퓨터네트워크 강의 - 한양대학교, 이석복 교수님 

2) 컴퓨터 네트워킹 (Computer Networking A Top-Down Approach)

'Programming > 네트워크' 카테고리의 다른 글

MAC 프로토콜 종류와 특징  (0) 2022.01.02