진짜 개발자
본문 바로가기

CS(Computer Science)/Network

Network - ARP 프로토콜

728x90

ARP 프로토콜

- 논리적인 주소(IP)를 물리적인 주소(Mac)으로 변환해주는 프로토콜 이다.

- 통신하고자 하는 단말의 IP만을 알고있을 때 사용되는 프로토콜이다

- 결국 두 PC가 통신하기 위해서는 IP가 아닌 MAC주소가 필요하다

(  PC1에서 PC2에게 데이터를 전송하고자 하는 경우, PC1은 PC2의 IP address는 알고 있지만 MAC address를 알지 못한다. 이런 경우, Destination MAC address를 알지 못하면 Layer 2 Header를 완성하지 못하기 때문에 데이터를 전송할 수가 없다.)


자세히

원래 연결된 두 PC가 통신을 하기 위해서는 IP가 아닌 MAC address를 이용하여 통신을 하게 된다

보통 같은 네트워크 내에 있는 (물리적으로 연결된) PC들의 MAC address는 

허브나 , 스위치 같은 중계장치가 MAC adress 테이블을 가지고 있어 라우터를 통해 나가지 않고

내부에서 MAC address를 가지고 통신을 하게된다 


하지만 , MAC address 테이블에 존재하지 않는 즉 물리적으로 연결되지 않은 다른 네트워크 대역에 대한 통신요구가 

왔을 경우 라우터를 통해 다른 네트워크 대역으로 가는데

(같은 네트워크 대역이 아닌 경우 물리적으로 연결되어 있지 않으니 MAC Adress를 알 방법이 없으므로)


이때는 IP를 이용하여 통신을 하는 것 처럼 보이지만 결국에 두 PC 가 통신을 하기 위해서는 MAC address 가 필요하다

이때 사용되는 것이 ARP 프로토콜이다 ( 논리적주소인 IP를 통해 물리적 주소를 알아내는 프로토콜)



통신 과정


1. 같은 네트워크 영역




*과정

a) AB와 통신하기 위해 자신의 네트워크 대역에 BroadCast메시지(ARP Request) 1.0.0.2/24를 가진 PC가 있는지 물어본다

(Destination MacAddr : ff ff ff ff ff ff)


b) 이 때 중간의 SwitchMac 테이블에 1.0.0.2에 대한 MAC주소가 기록 되어있다면

    SwitchA에게 1.0.0.2MAC주소를 알려준다


c) 반대로 없다면 B까지 패킷이 전달되고 (이 때 AMAC주소가 Switch Mac 테이블에 기록된다

   B가 자신의 MAC주소를 알려준다 (이 때 B의 MAC 주소가 Switch 의 Mac 테이블에 기록된다)


d) A가 알아낸 맥주소로 B와 통신을 한다 

(Destination MacAddr : 00:0C:29:80:A9:55)


2. 다른 네트워크 영역




*과정

a) AB와 통신하기 위해 자신의 네트워크 대역에 BroadCast 메시지로 2.0.0.1/24를 가진 PC가 있는지 물어본다

(Destination MacAddr : ff ff ff ff ff ff)


b) B(2.0.0.1/24)A와 같은 대역이 아니므로 응답이 GateWay로부터 오게된다 (B로 가는길을 알고 있다면)

 (Source MacAddr : 00 60 47 7A D4 01)


c) A는 이제 B와 통신하기 위해 라우터에게 메시지를 보낸다

(Destination MacAddr : 00 60 47 7A D4 01

 Destination IPaddr : 2.0.0.1 / 24)


d) 이어 라우터에 의해 해당 네트워크 대역까지 패킷이 이동하고

    라우터는 목적지의 IP는 알지만 Mac Address는 모르므로 다시 

    BroadCast 메시지로 2.0.0.1/24 를 가진 PC가 있는지 물어본다


e) B가 자신의 IP와 일치하므로 라우터에게 응답을 한다

   (Source Mac : 00 0C 29 80 A9 55

    Source IP : 2.0.0.1 /24

    Destination Mac : 00 60 47 7A D4 02

    Destination IP : 2.0.0.254 / 24)



*ARP Cache

MAC address를 어렵사리 얻어왔는데 이것을 버리기에는 너무 아깝다

그래서 ARP Cache 테이블에 방금 통신한 IP 에대한 Mac Adress 를 기록해두고 일정시간 동안 보관하여

이를 사용한다 


명령어

ARP Cache 확인 : arp -a

ARP Cache 삭제 : arp -d 

  (Linux는 arp -e)


 => dynamic :  dynamic 으로 표시된것은 ARP 프로토콜에 의해 자동으로 학습한것이다 시간이 지나면 초기화된다

  ***Static : 하지만 자주 통신하는 IP라면 오버헤드를 줄이기 위해 관리자가 직접 등록할 수도 있다 이는 Static 으로 표시된다.