goosegoose.DRAM
article thumbnail

ARP 주소확인 프로토콜 (Address Resolution Protocol)

네트워크 계층에서 IP를 사용하여 MAC 주소를 알아내는 방법이다. 이렇게 하여 알아낸 MAC 주소는 데이터 링크 계층으로 보내진다. 그 과정에 대해 알아보자.

긴 설명 전, 그림을 통해 간단한 설명을 먼저 해보겠다.

N은 네트워크 계층, L은 데이터 링크 계층을 나타난다.

먼저 발송지 System A에서 broadcast 방법을 통해 연결된 노드들에게 IP주소 보내며 이걸 갖는 애를 찾고 있다고 연락한다. 이때 본인임을 알아챈 N2가 발송지로 본인의 MAC 주소를 유니 캐스트 방법으로 보내며 나 여깄다고 대답한다.(다른 놈들은 본인 아니면 무시한다.) A는 이 맥주소를 나중에 사용하기 위해 ARP 테이블에 기록한다. 이렇게 A가 B의 맥주소를 알게 되며 통신이 시작된다.

 

목적지의 IP address는 알지만, MAC address를 모를 때 Target MAC address 부분을 00:00:00:00:00:00으로 채우고
패킷의 목적지를 broadcast(ff:ff:ff:ff:ff:ff) 로 하여 네트워크 상의 모든 노드들한테 뿌려서
Target MAC address를 얻어오는 것을 ARP protocol이 하는 일입니다

-출처 : https://blockdmask.tistory.com/189 -

 

ARP 패킷

A가 보낸 패킷의 구조 B 파란 부분에 MAC주소를 적어 반납한다.

 

추가용

아까 설명한 과정을 패킷 형식을 적용하여 보내면 위 사진 처럼 된다.

 

 

예시

이번에 Alice와 Bob의 통신을 통해 ARP를 적용해 보자.

 

네트워크 계층에서 전달된 IP주소 NA, NB 중 목적지 주소인 NB로 가기 위해 다음 라우터의 IP 주소를 알아야 한다. Forwarding Table을 통해 이를 확인할 수 있다.  Forwarding Table은 다음 경로인 라우터 R1에 대한 IP주소 N1을 반환한 뒤 이에 대한 MAC주소를 알기 위해  ARP를 사용한다. 그렇게  N1의 MAC주소(L1)는 현재 라우터의 인터페이스 내에 저장되어 있으므로 그대로 사용한다.

 

R1에 도착한 패킷은 분해되어 다시 목적지 IP 주소인 NB에 대해 Forwading Table을 참조해 다음 경로를 찾는다. 위 사진에서 다음 경로는 R2로, ARP를 통해 라우터 R2의 MAC 주소 L3를 반환받는다.

 

이곳에선 ARP를 통해 bob의 MAC주소를(LB) 받아 드디어 BoB에게 전달된다.

bob이 전달받은 모습. 패킷을 분해하여 데이터를 받는다.

 

caching

이런 의문이 있다. MAC 주소를 찾으려고 브로드캐스팅으로 보냈는데, 데이터그램(데이터자체)을 브로드캐스트 프레임으로 전송하면 안 되나?
⇒ ARP를 사용하지 않는다면 수신받을 수 있는 애가 10명이 있을 때 10명 모두가 데이터를 전부(100개가 될 수도 있죠) 까보고 아닌 걸 판별받고 폐기해야 한다 이건 낭비다 그러니, MAC 주소를 알아서 내가 보낼 곳을 정확히 찾고, 이걸 캐싱(임시저장)해 놓아서 보낼 데이터를 쭉쭉 보내는 게 더 효율적!

 

캐싱항목은 보통 20분 후 만료된다.

 

 

ARP 추가 정보

만약 존재하지 않는 대상에게 ARP을 요청하면 어떻게 되나요?

 -> 찾는 시간이 늘어나다가(1s, 4s, 6s.... 뒤 전송) 실패.

 

자신의 IP주소에 대해 ARP을 요청하면?

-> 내 MAC주소가 와요(내가 응답) 이걸로 IP주소가 이미 할당되었는지 감지하는 데 사용한다고 합니다.

 

 ARP poisoning

A라는 애의 MAC 주소를 알고 싶어 ARP 요청했는데 누가 중간에 가로채서 D라고 적어 회신 준 것.

profile

goosegoose.DRAM

@goosesong

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!