본문 바로가기

IT 엔지니어를 위한 네트워크

ARP(Address Resolution Protocol) Part 2

Today Keys : IP주소, MAC주소, ARP, 프로토콜, address, resolution, protocol

본 포스팅은 'IT 엔지니어를 위한 네트워크 입문' [길벗] 서적에 포함된 '3. 네트워크 통신하기'의 내용  3.5.2장의 내용입니다.


ARP 동작 

ARP 패킷은 여러 가지 필드 중 ARP 데이터에 사용되는 송신자 하드웨어 MAC 주소, 송신자 IP 프로토콜 주소, 대상자 MAC 주소, 대상자 IP 프로토콜 주소 4개의 필드가 중요하게 사용됩니다.

ARP 패킷

ARP가 이 4개 필드를 이용해 어떻게 동작하는지 예제를 통해 알아보겠습니다.

 

 

목적지로 보내기 위한 MAC 주소를 모르면 패킷을 만들 수 없다

 

\ 서버 A에서 서버 B로 ping을 보내려고 할 때, 서버 A에서는 3계층의 IP 주소까지 캡슐화할 수 있지만 목적지 MAC 주소를 모르기 때문에 정상적으로 패킷을 만들 수 없습니다.

서버 A는 목적지 서버 B의 MAC 주소(1.1.1.2 IP의 MAC 주소)를 알아내기 위해 ARP 요청을 네트워크에 브로드캐스트합니다.

 ARP 패킷을 네트워크에 브로드캐스트할 때 2계층 MAC 주소는 출발지를 자신의 MAC으로, 도착지는 브로드캐스트(FF-FF-FF-FF-FF-FF)로 채우고 ARP 프로토콜 필드의 전송자 MAC과 IP 주소에는 자신의 주소로, 대상자 IP 주소는 10.1.1.2를, 대상자 MAC 주소는 00-00-00-00-00-00으로 채워 네트워크에 뿌립니다.

 

목적지로 보내기 위한 IP 주소의 MAC 주소를 확인하기 위해 ARP 요청을 사용한다

 

참고
출발지, 도착지 MAC 주소와 송신자, 대상자 MAC 주소의 차이점

 2계층 헤더에서 사용하는 출발지, 목적지 MAC 필드 외에 ARP 프로토콜에는 송신자, 대상자 MAC, IP 주소를 나타내는 필드가 있습니다.

 ARP에서는 송신자(Sender), 대상자(Target)와 같은 다른 용어를 사용해 일반 패킷의 2, 3계층에서 사용하는 출발지, 도착지, 기존 MAC, IP 주소와 구분해 표현합니다. 

 

 2계층 목적지 주소가 브로드캐스트이므로 이 ARP 패킷은 같은 네트워크 안에 있는 모든 단말에 보내지고 모든 단말은 ARP 프로토콜 내용을 확인하는데 ARP 프로토콜 필드의 대상자 IP가 자신이 맞는지 확인해 자신이 아니면 ARP 패킷을 버립니다.

 서버 B에서는 ARP 요청의 대상자 IP 주소가 자신의 IP이므로 ARP 요청을 처리하고 그에 대한 응답을 보냅니다.

 이 때는 송신자와 대상 자의 위치가 바뀝니다.

 ARP 요청을 처음 보냈던 서버 A와 달리 서버 B에서는 ARP 요청을 수신 하면서 이미 ARP 요청을 보낸 서버 A의 IP 주소와 MAC 주소를 알고 있어 모든 ARP 필드를 채워 응답할 수 있습니다.

 ARP 요청에서 받은 서버 A의 정보를 이용해 대상자 MAC, IP 주소를 채우고 자신의 MAC, IP 주소를 송신자 MAC, IP 주소로 채워 응답합니다.

 ARP 요청을 처음 보낼 때는 브로드캐스트인 반면(2계층 목적지 MAC 주소가 브로드캐스트이므로), ARP 응답을 보낼 때는 출발지와 도착지 MAC 주소가 명시되어 있는 유니캐스트(Unicast)입니다.

 서버 A는 서버 B로부터 ARP 응답을 받아 자신의 ARP 캐시 테이블을 갱신합니다.

 이 ARP 캐시 테이블은 정해진 시간 동안 서버 B와의 통신이 없을 때까지 유지됩니다.

 해당 시간 안에 통신이 다시 이루어지면 그 시간은 다시 초기화됩니다.

 

ARP 요청에 있는 목적지 IP 주소가 자신인 경우, 출발지로 ARP 응답을 전송한다

 

ARP 캐시 테이블이 갱신된 후에는 상대방의 MAC 주소를 알고 있으므로 도착지 MAC 주소 필드를 완성해 ping 패킷을 보낼 수 있습니다.

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